Openrisc-arch手册(一)寄存器集

1. 特征

  • 三十二个或十六个 32/64 位通用寄存器——OpenRISC 1000 实现优化用于嵌入式和类似环境中的 FPGA 和 ASIC,可能只实现三十二个寄存器中的前十六个。
  • 所有其他寄存器都是为每个单元单独定义的专用寄存器,可通过 l.mtspr/l.mfspr 指令访问*

2. 分类

OpenRISC 1000 处理器包括几种类型的寄存器:用户级通用和专用寄存器管理级专用寄存器单元相关寄存器

  • 用户级通用和专用寄存器在用户模式和管理员操作模式下均可问。
  • 管理员级专用寄存器只能在管理员操作模式下访问(SR[SM]=1)。
  • 单元相关寄存器通常只能在管理员模式下访问,但这条规则也有例外。

2.1 专用寄存器 (Special-Purpose Registers)

所有单元的专用寄存器分为三十二组。根据该特定组中寄存器的最大理论数量,每个组可以具有不同的寄存器地址解码。一个组可以包含来自多个不同单元或进程的寄存器。 SR[SM] 位也用于寄存器地址解码,因为一些寄存器只能在管理员模式下访问。 l.mtspr 和 l.mfspr 指令用于读取和写入寄存器。
未实施的 SPR 应读作零。写入未实现的 SPR 不会有任何效果,l.mtspr 指令实际上是一个空操作。

表1专用寄存器组

GROUP # UNIT DESCRIPTION
0 系统控制和状态寄存器
1 数据 MMU(在单个统一 MMU 的情况下,第 1 组和第 2 组解码到一组寄存器中)
2 指令 MMU(在单个统一 MMU 的情况下,第 1 组和第 2 组解码为一组寄存器)
3 数据缓存(在单个统一缓存的情况下,第 3 组和第 4 组解码为一组寄存器)
4 指令缓存(在单个统一缓存的情况下,第 3 组和第 4 组解码为一组寄存器)
5 MAC单元
6 Debug单元
7 Performance counters unit(程序计数器)
8 Power Management
9 Programmable Interrupt Controller
10 Tick Timer
11 Floating Point unit
12-23 Reserved for future use
24-31 Custom units

OpenRISC 1000 处理器实现至少需要实现第 0 组中的专用寄存器。所有其他组都是可选的,只有当实现具有相应的单元时,才会实现这些组中的寄存器。
可以通过读取组 0 中的 UPR 寄存器来确定实际实现了哪些单元。
一个 16 位 SPR 地址由 5 位组索引(位 15-11)和 11 位寄存器索引(位 10-0)组成。
表2列出了每个特殊用途寄存器的名称、寄存器地址、位域描述、访问权限等信息。

表2 所有特殊用途寄存器列表

2.2 通用寄存器

三十二个通用寄存器标记为 R0-R31,在 32 位实现中为 32 位宽,在 64 位实现中为 64 位宽。它们保存标量整数数据、浮点数据、向量或内存指针。表3包含通用寄存器列表。 GPR 可以作为源寄存器和目标寄存器被 ORBIS、ORVDX 和 ORFPX 指令访问。

表3 通用寄存器列表

R0 应始终保持零值。初始化它是软件的责任。

一个实现可能有几组 GPR,并将它们用作影子寄存器,每当出现新的异常时在它们之间切换。当前集合由 SR[CID] 值标识。

在重置过程中,不需要实施将 GPR 初始化为零。重置异常处理程序负责在必要时将 GPR 初始化为零。

2.3 Support for Custom Number of GPRs

2.4 状态寄存器Supervision Register (SR)

状态寄存器(Status Register,SR)是一种特殊的寄存器,用于存储处理器的状态信息。在OpenRISC处理器架构中,SR寄存器是一个32位的寄存器,其中的位域(bit field)表示了处理器的各种状态信息,如特权级别、中断使能、条件码等,如下表所示。

  • IE(Interrupt Enable):中断使能位,用于控制处理器是否响应中断请求。当IE位为1时,处理器响应中断请求,当IE位为0时,处理器不响应中断请求。
  • SM(Supervisor Mode):特权级别位,用于控制处理器的特权级别。当SM位为0时,处理器处于用户模式(User Mode),只能执行非特权指令,没有访问特殊寄存器的权限;当SM位为1时,处理器处于特权模式(Supervisor Mode),可以执行所有指令,并且具有访问特殊寄存器的权限。
  • TEE(Tick Timer Exception Enable):时钟中断使能位,用于控制处理器是否响应时钟中断请求。当TEE位为1时,处理器响应时钟中断请求,当TEE位为0时,处理器不响应时钟中断请求。
  • DCE(Data Cache Enable):数据缓存使能位,用于控制处理器的数据缓存是否启用。当DCE位为1时,处理器的数据缓存启用,当DCE位为0时,处理器的数据缓存禁用。
  • ICE(Instruction Cache Enable):指令缓存使能位,用于控制处理器的指令缓存是否启用。当ICE位为1时,处理器的指令缓存启用,当ICE位为0时,处理器的指令缓存禁用。
  • DME(Data MMU Enable):数据MMU(Memory Management Unit)使能位,用于控制处理器的数据MMU是否启用。当DME位为1时,处理器的数据MMU启用,当DME位为0时,处理器的数据MMU禁用。
  • IME(Instruction MMU Enable):指令MMU使能位,用于控制处理器的指令MMU是否启用。当IME位为1时,处理器的指令MMU启用,当IME位为0时,处理器的指令MMU禁用。
  • LE(Little-Endian):大小端模式位,用于控制处理器的大小端模式。当LE位为1时,处理器采用小端模式(Little-Endian),当LE位为0时,处理器采用大端模式(Big-Endian)。
来自广东
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇