地址寄存器
扫描二维码
随时随地手机看文章
用来保存当前CPU所访问的内存单元的地址。由于在内存和CPU之间存在着操作速度上的差别,所以必须使用地址寄存器来保持地址信息,直到内存的读/写操作完成为止 。
地址寄存器(Address Register,AR)用来保存当前CPU所访问的内存单元的地址。由于在内存和CPU之间存在着操作速度上的差别,所以必须使用地址寄存器来保持地址信息,直到内存的读/写操作完成为止。 [1] 数据寄存器DR用来暂存微处理器与存储器或输人/输出接口电路之间待传送的数据。地址寄存器AR和数据寄存器DR在微处理器的内部总线和外部总线之间,还起着隔离和缓冲的作用。
地址寄存器采用单纯的寄存器结构。在对主存或I/O端口进行访问时,地址寄存器存放当前访问的地址,数据缓冲器实现数据的缓冲。CPU通过修改地址寄存器中的值,就可访问不同的存储器单元及不同的I/O端口。地址寄存器可用LPM库中的元件lpm_latch锁存器来完成。图是地址寄存器的结构图。地址寄存器的数据宽度应当与程序计数器的数据宽度一致。data[7…0]是地址寄存器的数据输入端,q[7…0]是地址寄存器的数据输出端,gate是地址锁存器的控制端。gate的作用是当锁存控制脉冲到来时,高电平时数据进入锁存器,低电平时锁存数据,保持输出数据稳定不变。
当CPU和内存进行信息交换,即CPU向内存存/取数据时,或者CPU从内存中读出指令时,都要使用地址寄存器和数据缓冲寄存器。同样,如果我们把外围设备的设备地址作为像内存的地址单元那样来看待,那么,当CPU和外围设备交换信息时,我们同样使用 地址寄存器和数据缓冲寄存器。地址寄存器的结构和数据缓冲寄存器、指令寄存器一样,通常使用单纯的寄存器结构。信息的存入一般采用电位-脉冲方式,即电位输入端对应数据信息位,脉冲输入端对应控制信号,在控制信号作用下,瞬时地将信息打入寄存器。
8086有8个16比特的寄存器,包括栈寄存器SP与BP,但不包括指令寄存器IP、控制寄存器FLAGS以及四个段寄存器。AX, BX, CX, DX,这四个寄存器可以按照字节访问;但BP, SI, DI, SP,这四个地址寄存器只能按照16位宽访问。
8086以8080和8085(它与8080有汇编语言上的源代码兼容性)的设计为基础,拥有类似的暂存器集合,但是扩充为16位。总线接口单元(Bus Interface Unit)通过6字节预存(prefetch)的贮列(queue)将指令送给运行单元(Execution Unit),所以取指令和运行是同步的-一种流水线的原始形式(8086指令长度变化从1到6字节)。
8086有四个完全一样的16位暂存器,但也能够当作八个8位暂存器来访问;以及四个16位变址寄存器(包含堆栈索引)。数据暂存器通常由指令隐含地使用,针对暂存值需要复杂的暂存器配置。它提供64K 8位的输出输入(或32K 16位)端口,以及固定的矢量中断。大部分的指令只能够访问一个存储器地址,所以其中一个运算符必须是一个暂存器。运算结果会存储在运算符中的一个。
64-bit地址寄存器可存储2个地址,存储器的基本单位是Byte,换言之最大支持16EiB存储器,1EiB则相等于1024GiB。但是,现在的64-bit CPU并没有64位地址总线。