关于 CPU中的指令译码器和预取缓冲器 的作用

来源:百度知道 编辑:UC知道 时间:2024/06/24 04:57:44
为什么要在CPU中设置 指令译码器和预取缓冲器 (进入CPU的不是就已经是二进制数了吗?为何还要指令译码器?)?CPU为什么需要 预取指令 这一功能???

关于指令译码单元:

不管是硬盘上、内存中还是CPU中,指令确实都是以二进制(0、1)方式存储,
但是二进制存储的指令并不见得就是CPU能直接处理的指令,比如
汇编语句 mov AX,BX 的二进制机器码 1000 1011 1100 0011
CPU 核心的运算单元并不知道 1000 1011 1100 0011 是什么意思,
要通过译码器才能把这一段机器码转换为控制核心电路工作的信号——微码,
换句话说,就是把二进制的程序代码(软件)变为硬件的电路控制信号。

另外,现代 x86 微处理器通常还要额外的译码电路,把 x86 CISC 指令
动态翻译成 RISC 指令,然后送到 CPU 的 RISC 核心再翻译为控制信号。

关于预取缓冲器:

如果不使用这个缓冲器,CPU 每次需要新指令的时候都从内存(或L2缓存)
读取的话,那么就得空耗几百(或L2的几十)个周期等待这些慢速设备。
L1 数据缓存以及 CPU 内核里面的指令寄存器队列 可以以更高的速度运行,
让 CPU 一旦需要就能在几个或一个周期内从中取得新指令,从而大大加快
指令连续执行的速度。

关于指令译码单元:

不管是硬盘上、内存中还是CPU中,指令确实都是以二进制(0、1)方式存储,
但是二进制存储的指令并不见得就是CPU能直接处理的指令,比如
汇编语句 mov AX,BX 的二进制机器码 1000 1011 1100 0011
CPU 核心的运算单元并不知道 1000 1011 1100 0011 是什么意思,
要通过译码器才能把这一段机器码转换为控制核心电路工作的信号——微码,
换句话说,就是把二进制的程序代码(软件)变为硬件的电路控制信号。

另外,现代 x86 微处理器通常还要额外的译码电路,把 x86 CISC 指令
动态翻译成 RISC 指令,然后送到 CPU 的 RISC 核心再翻译为控制信号。

关于预取缓冲器:

如果不使用这个缓冲器