`
小杨学JAVA
  • 浏览: 884659 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

寄存器和内存的关系

 
阅读更多

转:http://blog.sina.com.cn/s/blog_53542b7101009qdr.html

中央处理器(CPU)由两个主要部分———控制器及运算器组成。其中程序计数器、指令寄存器、指令译码器、时序产生器和操作控制器等组成了控制器。它是对计算机发布命令的“决策机构”,协调和指挥整个计算机系统的操作,因此,它处于CPU中极其重要的位置。

 

在CPU中,除算术逻辑单元(ALU)及累加器外,尚有下列逻辑部件:

 

(1)缓冲寄存器(DR)

缓冲寄存器用来暂时存放由内存储器读出的一条指令或一个数据字;反之,当向内存存入一条指令或一个数据字时,也暂时将它们存放在这里。缓冲寄存器的作用是:①作为CPU和内存、外部设备之间信息传送的中转站;②补偿CPU和内存、外部设备之间在操作速度上的差别;

③在单累加器结构的运算器中,缓冲寄存器还可兼作为操作数寄存器。

 

(2)指令寄存器(IR)指令寄存器用来保存当前正在执行的一条指令。指令划分为操作码和地址码字段,它们由二进制数字组成。为执行任何给定的指令,必须对操作码进行译码,以便指出所要求的操作。指令寄存器中操作码字段的输出就是指令译码器的输入。操作码一经译码后,即可向操作控制器发生具体操作的特定信号。

 

(3)程序计数器(PC)

为了保证程序能够连续地执行下去,CPU必须具有某些手段来确定下一条指令的地址。而程序计数器(PC)正是起到这种作用,所以通常又称其为指令计数器。

 

(4)地址寄存器(AR)

地址寄存器用来保存当前CPU所要访问的内存单元的地址。由于在内存和CPU之间存在着操作速度上的差别,所以必须使用地址寄存器来保持地址信息,直到内存读/写操作完成为止。

 

(5)累加寄存器(AC)

累加寄存器AC通常简称为累加器。它的功能是:当运算器的算术/逻辑单元(ALU)执行全部算术和逻辑运算时,为ALU提供一个工作区。例如,在执行一个加法前,先将一个操作数暂时存放在AC中,再从存放中取出另一个操作数,然后同AC的内容相加,所得结果送回AC中,而AC中原有的内容随即被破坏。顾名思义,累加寄存器用来暂时存放ALU运算的结果信息。显然,运算器中至少要有一个累加器寄存器。

由于运算器的结构不同,可采用多个累加寄存器。

 

(6)状态寄存器(SR)

状态寄存器保存由算术指令和逻辑指令运行或测试结果建立的各种状态码内容。

 

(7)操作控制器

操作控制器的功能,就是根据指令操作码和时序信号,产生各种操作控制信号,以便正确地建立数据通路,从而完成取指令和执行指令的控制。

根据设计方法不同,操作控制器可分为组合逻辑型、存储逻辑型、组合逻辑与存储逻辑结合型三种。第一种称为常规控制器,它是采用组合逻辑技术来实现的;第二种称为微程序控制器,它是采用存储逻辑来实现的;第三种称为PLA控制器,它是吸收前两种的设计思想来实现的。

 

(8)时序产生器

CPU中除了操作控制器外,还必须有时序产生器,因为计算机高速地进行工作,每一动作的时间是非常严格的,不能有任何差错。时序产生器的作用,就是对各种操作实施时间上的控制。

 

2.控制器的组成

运算器包括ALU、累加器、数据缓冲寄存器和状态寄存器,而控制器的核心是操作控制器,围绕它的有程序计数器(PC)、指令寄存器(IR)、指令译码器(ID)和时序产生器。

 

一、CPU的内核

从结构上讲CPU内核分为两部分:运算器和控制器。

 

(一) 运算器

 

1、 算术逻辑运算单元ALU(Arithmetic and Logic Unit)

 

ALU主要完成对二进制数据的定点算术运算(加减乘除)、逻辑运算(与或非异或)以及移位操作。在某些CPU中还有专门用于处理移位操作的移位器。

 

通常ALU由两个输入端和一个输出端。整数单元有时也称为IEU(Integer Execution Unit)。我们通常所说的“CPU是XX位的”就是指ALU所能处理的数据的位数。

 

2、 浮点运算单元FPU(Floating Point Unit)

 

FPU主要负责浮点运算和高精度整数运算。有些FPU还具有向量运算的功能,另外一些则有专门的向量处理单元。

 

3、 通用寄存器组

 

通用寄存器组是一组最快的存储器,用来保存参加运算的操作数和中间结果。

 

对于x86指令集只支持8个通用寄存器的缺点,Intel最新CPU采用了一种叫做“寄存器重命名”的技术,这种技术使x86CPU的寄存器可以突破8个的限制,达到32个甚至更多。

 

4、 专用寄存器

 

专用寄存器通常是一些状态寄存器,不能通过程序改变,由CPU自己控制,表明某种状态。

(二) 控制器

 

运算器只能完成运算,而控制器用于控制着整个CPU的工作。

 

1、 指令控制器

 

指令控制器是控制器中相当重要的部分,它要完成取指令、分析指令等操作,然后交给执行单元(ALU或FPU)来执行,同时还要形成下一条指令的地址。

 

2、 时序控制器

 

时序控制器的作用是为每条指令按时间顺序提供控制信号。时序控制器包括时钟发生器和倍频定义单元,其中时钟发生器由石英晶体振荡器发出非常稳定的脉冲信号,就是CPU的主频;而倍频定义单元则定义了CPU主频是存储器频率(总线频率)的几倍。

 

3、 总线控制器

 

总线控制器主要用于控制CPU的内外部总线,包括地址总线、数据总线、控制总线等等。

 

4、中断控制器

 

中断控制器用于控制各种各样的中断请求,并根据优先级的高低对中断请求进行排队,逐个交给CPU处理。

二、CPU的外核

 

1、解码器(Decode Unit)

 

这是x86CPU特有的设备,它的作用是把长度不定的x86指令转换为长度固定的指令,并交由内核处理。解码分为硬件解码和微解码,对于简单的x86指令只要硬件解码即可,速度较快,而遇到复杂的x86指令则需要进行微解码,并把它分成若干条简单指令,速度较慢且很复杂。好在这些复杂指令很少会用到。

 

2、一级缓存和二级缓存(Cache)

 

一级缓存和二级缓存是为了缓解较快的CPU与较慢的存储器之间的矛盾而产生的,以及缓存通常集成在CPU内核,而二级缓存则是以OnDie或OnBoard的方式以较快于存储器的速度运行。对于一些大数据交换量的工作,CPU的Cache显得尤为重要。

 

三、指令系统

 

要讲CPU,还要了解一下指令系统。指令系统指的是一个CPU所能够处理的全部指令的集合,是一个CPU的根本属性,因为指令系统决定了一个CPU能够运行什么样的程序。我们常说的CPU都是X86系列及兼容CPU ,所谓X86指令集是美国Intel公司为其第一块16位CPU(i8086)专门开发的,虽然随着CPU技术的不断发展,Intel陆续研制出更新型的i80386、i80486直到今天的Pentium4系列,但为了保证电脑能继续运行以往开发的各类应用程序以保护和继承丰富的软件资源(如Windows系列),Intel公司所生产的所有CPU仍然继续使用X86指令集。 另外除Intel 公司之外,AMD和Cyrix等厂家也相继生产出能使用X86指令集的CPU,由于这些CPU能运行所有的为Intel CPU所开发的各种软件,所以电脑业内人士就将这些CPU列为Intel的CPU兼容产品。

 

四、CPU主要技术浅析

 

1、流水线技术

 

流水线(pipeline)是 InteI首次在486芯片中开始使用的。流水线的工作方式就象工业生产上的装配流水线。在CPU中由5~6个不同功能的电路单元组成一条指令处理流水线,然后将一条X86指令分成5~6步后再由这些电路单元分别执行,这样就能实现在一个CPU时钟周期完成一条指令,从而提高了CPU的运算速度。

 

2、超流水线和超标量技术

 

超流水线是指某些CPU内部的流水线超过通常的5~6步以上,例如Intel Pentium 4的流水线就长达20步。将流水线设计的步(级)数越多,其完成一条指令的速度越快,因此才能适应工作主频更高的CPU。超标量(supe rscalar)是指在 CPU中有一条以上的流水线,并且每时钟周期内可以完成一条以上的指令,这种设计就叫超标量技术。

 

3、乱序执行技术

 

乱序执行(out-of-orderexecution)是指CPU采用了允许将多条指令不按程序规定的顺序分开发送给各相应电路单元处理的技术。比方说程序某一段有7条指令,此时CPU将根据各单元电路的空闹状态和各指令能否提前执行的具体情况分析后,将能提前执行的指令立即发送给相应电路执行。当然在各单元不按规定顺序执行完指令后还必须由相应电路再将运算结果重新按原来程序指定的指令顺序排列后才能返回程序。这种将各条指令不按顺序拆散后执行的运行方式就叫乱序执行(也有叫错序执行)技术。采用乱序执行技术的目的是为了使CPU内部电路满负荷运转并相应提高了CP U的运行程序的速度。

 

4、分技预溯和推测执行技术

 

分枝预测(branch prediction)和推测执行(speculatlon execution) 是CPU动态执行技术中的主要内容,动态执行是目前CPU主要采用的先进技术之一。采用分枝预测和动态执行的主要目的是为了提高CPU的运算速度。推测执行是依托于分枝预测基础上的,在分枝预测程序是否分枝后所进行的处理也就是推测执行.

5、指令特殊扩展技术

 

自最简单的计算机开始,指令序列便能取得运算对象,并对它们执行计算。对大多数计算机而言,这些指令同时只能执行一次计算。如需完成一些并行操作,就要连续执行多次计算。此类计算机采用的是“单指令单数据”(SISD)处理器。在介绍CPU性能中还经常提到“扩展指令”或“特殊扩展”一说,这都是指该CPU是否具有对X86指令集进行指令扩展而言。扩展指令中最早出现的是InteI公司的“MMX”,然后是Pentium III中的“SSE”,以及现在Pentium 4中的SSE2指令集。

 

五、CPU的构架和封装方式

(一) CPU的构架

 

CPU架构是按CPU的安装插座类型和规格确定的。目前常用的CPU按其安装插座规范可分为Socket x和Slot x两大架构。

 

以Intel处理器为例,Socket 架构的CPU中分为Socket 370、Socket 423和Socket 478三种,分别对应Intel PIII/Celeron处理器、P4 Socket 423处理器和P4 Socket 478处理器。Slot x架构的CPU中可分为Slot 1、Slot 2两种,分别使用对应规格的Slot槽进行安装。其中Slot 1是早期Intel PII、PIII和Celeron处理器采取的构架方式,Slot 2是尺寸较大的插槽,专门用于安装PⅡ和P Ⅲ序列中的Xeon。Xeon是一种专用于工作组服务器上的CPU。

 

(二) CPU的封装方式

所谓封装是指安装半导体集成电路芯片用的外壳,通过芯片上的接点用导线连接到封装外壳的引脚上,这些引脚又通过印刷电路板上的插槽与其他器件相连接。它起着安装、固定、密封、保护芯片及增强电热性能等方面的作用。

 

CPU的封装方式取决于CPU安装形式,通常采用Socket插座安装的CPU使用PGA(栅格阵列)的形式进行封装,而采用Slot X槽安装的CPU则全部采用SEC(单边接插盒)的形式进行封装。

 

1. PGA(Pin Grid Arrax)引脚网格阵列封装

目前CPU的封装方式基本上是采用PGA封装,在芯片下方围着多层方阵形的插针,每个方阵形插针是沿芯片的四周,间隔一定距离进行排列的。它的引脚看上去呈针状,是用插件的方式和电路板相结合。安装时,将芯片插入专门的PGA插座。PGA封装具有插拔操作更方便,可靠性高的优点,缺点是耗电量较大。PGA也衍生出多种封装方式,最早的PGA封装适用于Intel Pentium、Intel Pentium PRO和Cxrix/IBM 6x86处理器; CPGA(Ceramic Pin Grid Arrax,陶瓷针形栅格阵列)封装,适用于Intel Pentium MMX、AMD K6、AMD K6-2、AMD K6 Ⅲ、VIA Cxrix Ⅲ处理器;PPGA(Plastic Pin Grid Arrax,塑料针状矩阵)封装,适用于Intel Celeron处理器(Socket 370);FC-PGA(Flip Chip Pin Grid Arrax,反转芯片针脚栅格阵列)封装,适用于Coppermine系列Pentium Ⅲ、Celeron Ⅱ和Pentium4处理器。

 

2. SEC(单边接插卡盒)封装

Slot X架构的CPU不再用陶瓷封装,而是采用了一块带金属外壳的印刷电路板,该印刷电路板集成了处理器部件。SEC卡的塑料封装外壳称为SEC(Single Edgecontact Cartridge)单边接插卡盒。这种SEC卡设计是插到Slot X(尺寸大约相当于一个ISA插槽那么大)插槽中。所有的Slot X主板都有一个由两个塑料支架组成的固定机构,一个SEC卡可以从两个塑料支架之间插入Slot X槽中。

 

其中,Intel Celeron处理器(Slot 1)是采用(SEPP)单边处理器封装;Intel的PentiumⅡ是采用SECC(Single Edge Contact Connector,单边接触连接)的封装;Intel的PentiumⅢ是采用SECC2封装

分享到:
评论

相关推荐

    JVM的基础和调优【JMM 内存结构 GC OOM 性能调优 ThreadLocal】

    JMM定义了线程和主内存之间的抽象关系:线程之间的共享变量存储在主内存(Main Memory)中, 每个线程都有一个私有的本地内存(local memory),本地内存中存储了该线程读/写共享变量的副本 本地内存时JMM的一个抽象...

    《深入理解JAVA内存模型》PDF

    从抽象的角度来看,JMM定义了线程和主内存之间的抽象关系:线程之间的共享变量存储在主内存(main memory)中,每个线程都有一个私有的本地内存(local memory),本地内存中存储了该线程以读/写共享变量的副本。...

    龙芯3A处理器用户手册

    图目录 V 表目录 I 第一部分 3 1 概述 1 1.1 龙芯系列处理器介绍 1 1.2 龙芯3A简介 3 2 系统配置与控制 5 ...15.2 系统内存空间与外设DMA空间映射关系 63 15.3 系统内存空间的其它映射方法 63 16 X系统的内存分配 63

    内存管理内存管理内存管理

    (映射是一个表示一一对应关系的数学术语 —— 当内存的虚拟地址有一个对应的物理地址来存储内存内容时,该内存将被映射。) 基于 UNIX 的系统有两个可映射到附加内存中的基本系统调用: brk:brk() 是一个非常...

    一个简单的cpu设计

    本项目的目的是设计一个十分简单的基于冯·诺依曼架构的16 位CPU。我们将这 颗CPU 命名为ERVS16-CPU( EasyRight Very Simple 16-bit CPU )。 ERVS16 有它自己的指令集。...寄存器,内存和指令集之间的关系

    一个简单16位CPU的设计

    本项目的目的是设计一个十分简单的基于冯·诺依曼架构的16 位CPU。我们将这 颗CPU 命名为 ERVS16-CPU( EasyRight Very Simple 16-bit CPU )。 ERVS16 有它自己的指令集。...寄存器,内存和指令集之间的关系.

    Linux下的汇编语言

    生成代码: 然后根据这种一一对应的关系(还应包括输出操作符),用这些寄存器,内存变量,或立即数来取代汇编代码中的占位符(则有点像宏操作),注意,则一步骤并不检查由这种取代操作所生成的汇编代码是否合法,例如,如果有...

    操作系统(内存管理)

    (映射是一个表示一一对应关系的数学术语 —— 当内存的虚拟地址有一个对应的物理地址来存储内存内容时,该内存将被映射。) 基于 UNIX 的系统有两个可映射到附加内存中的基本系统调用: brk: brk() 是一个非常...

    施耐德PLC与HMI地址映射差异.bmp

    该文档为施耐德资深工程师提供,它很清晰的表示了施耐德TM218、TM241、TM251的PLC的寄存器地址与施耐德HMIGXU/GXO触摸屏地址的对应关系。

    C++变量总结 说明各种变量

    保存变量当前值的存储单元有两类,一类是内存,另一类是CPU中的寄存器,变量的存储属性就是讨论变量的存储位置的,C语言中定义了四种存储属性,即自动变量、外部变量、静态变量和寄存器变量,它关系到变量在内存中的...

    Java并发:volatile内存可见性和指令重排

     Java内存模型规定,对于多个线程共享的变量,存储在主内存当中,每个线程都有自己独立的工作内存(比如CPU的寄存器),线程只能访问自己的工作内存,不可以访问其它线程的工作内存。  工作内存中保存了主内存...

    论文研究-基于SSE指令的大内存快速拷贝.pdf

    SSE)数据传输指令操作特点的基础上,充分考虑了数据预取、数据对齐、CPU缓存和新的128位寄存器等因素,在Visual C 平台上用嵌入汇编开发了内存拷贝函数。通过实验分析了各内存拷贝函数拷贝速度与拷贝内存量之间的...

    进程线程及堆栈关系的总结

    堆在操作系统对进程初始化的时候分配,运行过程中也可以向系统要额外的堆,但是记得用完了要还给操作系统,要不然就是内存泄漏。 栈:是个线程独有的,保存其运行状态和局部自动变量的。栈在线程开始的时候初始化,...

    补丁模块(带源码)InlinePatch,Hook,内存DLL注入等等

    子程序 读内存字节集, 字节集, 公开, 从内存中读取字节集数据(返回字节集,失败返回0字节长度的空字节集) .参数 进程ID, 整数型, , 进程ID .参数 地址, 整数型, , 内存地址 .参数 长度, 整数型, , 欲读取内存数据的...

    ATP发布8GB DDR2 RDIMM高质量内存模块

    推出了最新的8GB DDR2 RDIMM内存产品,这是一款带有寄存器的服务器内存,针对那些对速度、容量和可靠性要求很高的高端用户系统,如服务器、工作站、嵌入式系统、网络应用等。 “在过去的16年中,ATP通过不懈的努力...

    RISC-V 向量扩展指令集 - V Vector Extension

    首先,文档定义了向量元素和向量寄存器状态之间的映射关系,并阐述了向量指令的格式。在此基础上,提出了配置设置指令,如vsetvl、ivsetiv和vlsetvl,用于设定向量长度(VL)和向量对齐长度(AVL)。 接着,文档详细...

    如何理解Linux中进程,线程等概念

    线程是进程的一条执行路径,它包含独立的堆栈和CPU寄存器状态,每个线程共享其所 附属的进程的所有的资源,包括打开的文件、页表(因此也就共享整个用户态地址空间)、信号标识及动态分配的内存等等。线程和进程的...

    汇编语言程序设计讲义

    汇编语言程序设计第一章1-3节讲义。介绍什么是汇编语言,汇编语言与C语言的关系,为什么要学汇编语言;机器指令组成的关键要素;Intel CPU的寄存器;内存编址及数据的存放方。

    深入分析Linux内核源码

    2.1.5 调试寄存器和测试寄存器 2.2 内存地址 2.3 段机制和描述符 2.3.1 段机制 2.3.2 描述符的概念 2.3.3系统段描述符 2.3.4 描述符表 2.3.5 选择符与描述符表寄存器 2.3.6 描述符投影寄存器 2.3.7 Linux...

    汇编语言的教程.txt

    在汇编语言中,我们需要了解寄存器的种类和作用,如EAX、EBX、ECX、EDX等,这些寄存器在CPU运算中扮演着重要的角色。 二、理解机器语言和内存 机器语言是直接用二进制代码来表述的,是计算机能直接识别和执行的...

Global site tag (gtag.js) - Google Analytics