execution unit的概念与实现----AGU

********************reading from 《超标量处理器设计》--姚永斌***************************

顾名思义,AGU(Address Generate Unit)用来计算地址;

  • 访问存储器类型的指令(一般指load/store指令)通常会在指令中携带它们想使用的存储器地址,AGU负责对这些指令进行处理,计算出指令中所携带的地址。
  • 其实,在普通流水线的处理器中,都是在ALU中计算这个地址,但是在超标量处理器中,由于需要并行地执行指令,而且访问存储器类型指令的执行效率直接影响了处理器的性能,所以单独使用了一个FU来计算它的地址。
  • 对于 MIPS 处理器来说,load/store 指令的地址等于Rs+offset,其中 Rs 是指令携带的源寄存器,offset 是指令携带的立即数,AGU 只需要将两者进行加法运算就可以得到指令所携带的地址了。

如果处理器支持虚拟存储器,那么经过 AGU 运算得到的地址就是虚拟地址,还需要经过 TLB 等部件转化为物理地址,只有物理地址才可以直接访问存储器

  • 在一般的处理器中,L2 Cache以及更下层的存储器都是使用物理地址进行寻址的
  • 因此在支持虚拟存储器的处理器中,AGU只是完成了地址转换的一小部分,它只是“冰山的一角”,真正的“重头戏”是从虚拟地址转化为物理地址,以及从物理地址得到数据的过程(即访问 D-Cache)。这个过程直接决定了处理器的性能,
  • 尤其是对于load/store指令也采用乱序执行的处理器,需要一套复杂的硬件来检测各种违例情况,例如 store/load 违例或者load/load 违例,并且还需要对它们进行修复,这些任务都增加了设计的复杂度,使访问存储器类型的指令成为了超标量处理器中最难以处理的指令
  • 这部分内容涉及到 load/store指令的相关性处理,在计算机的术语中称为Memory Disambiguation

相关推荐

  1. execution unit概念实现----AGU

    2023-12-11 15:38:02       55 阅读
  2. 拉链表概念设计实现

    2023-12-11 15:38:02       52 阅读
  3. Zookeeper 详解:分布式协调服务核心概念实践

    2023-12-11 15:38:02       34 阅读
  4. Linux 工作队列(Workqueue):概念实现

    2023-12-11 15:38:02       30 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2023-12-11 15:38:02       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2023-12-11 15:38:02       101 阅读
  3. 在Django里面运行非项目文件

    2023-12-11 15:38:02       82 阅读
  4. Python语言-面向对象

    2023-12-11 15:38:02       91 阅读

热门阅读

  1. C++- 格式化输出

    2023-12-11 15:38:02       64 阅读
  2. Redisson的基本使用

    2023-12-11 15:38:02       55 阅读
  3. 学习-ES

    2023-12-11 15:38:02       56 阅读
  4. 通讯录实现

    2023-12-11 15:38:02       63 阅读
  5. 央企国企相关

    2023-12-11 15:38:02       54 阅读