寄存器的作用
今天看了几个关于cpu寄存器一些帖子,感觉上他们所说的好象没有说明cpu寄存器的作用。我从我现在所了解的知识,与大家讲一讲,共同学习一下吧。先讲CPU的一些分类。第一,从cpu的种类来分寄存器来分的话。有Motorola 68x00、Intel IA-32、SUN Sparc、Vax和IBM-370等,不同种类的cpu,都有与其对应的寄存方法与方式。对我们来说,一般都x86的,即我常说的英特尔公司与AMD公司生产的cpu,这可能占世界上个人PC的90%多吧。
第二,从这一条起,我们所讲的寄存器都是以x86为基础的,那么这种CPU内,寄存器可分为以下几种。其一,是EAX、EBX、ECX、EDX等通用寄存器。其二呢,是CS、SS、ES等段寄存器。其三呢,是EIP,也称为指令指针。其四呢,EFLAGS寄存器,俗称为标志寄存器。其五,浮点单元,这里面之所以只浮点单元,是因为在它里面还有一些小的寄存分类,主要是数学上的浮点上的计算。其六呢,MMX指令使用的8个64位寄存器。其七呢,单指令、多数据操作(SIMD,single-instruction,multiple-data)使用的8个128位XMM寄存器。
以上是CPU的一些分类的常用知识,其中,对我们大多数人来讲,需要了解与知道的是x86这类的,也就是我们所说的IA-32系列CPU。也许有人会说AMD的CPU,这不用担心,它是兼容INTEL的,这不用我们担心的事情,那么我们主要了解的是IA-32这一类的结构,这些方面需要我们花一些时间去了解。如果我们只是需要一般的编程的话,我们了解上面这些就可以了。因为在C/C++、Java、Perl等这些编程的话,寄存器的使用一般不需要。但是如果进行汇编语言编程的话,那我们还需要对更加深入的了解。好了,下面我开始讲解一些与汇编语言编程有关寄存器的作用与结构粗陋地讲解一些,不过先要说明一些,我对这些不是很精通,我也只是一般的了解,如果大家深入的学习的话,我介绍二本书给大家。不过很难买到,只要大家用心去买,还是可以买到的,第一本是《Intel汇编语言程序设计》,我买的是第四版。第二本是Intel微系统结构与汇编语言,具体的名字我记不清,是一本厚的书。它是第一本的基础,但是它显得有点旧,但是它286开始介绍的。很值得去看看。如果说仅仅用一个帖子把寄存器的作用与使用说明,我则只能说我不行,但是从它的一般的使用与了解的话,我想也只是几句话而已。
从结构上看CPU的寄存器,它实际上是CPU的一部分。这包括后来,也是现在所流行的64位双核CPU,都是如此。从内存的使用角度上来讲的话,CPU的寄存器,它是内存的一部分,但是从快速的角度上来,寄存器它似乎不存在着地址的问题,因为是它是CPU的操作的最近的一部分,也是CPU执行时第一个要访问的第一个地方,但是它作用是存储用的。只是存储的内容不一定是指令,还有可能是地址,或者说是一些标志。这都是有可能的。
说上二句所谓的题外话,CPU的寄存器,从最基本上来讲,它只是一个个容器而已。那么依据它的分类,可分为通用寄存器,从通用上来讲,它所存储的东西,只要它的容积所容许的话,什么都是可以存储的,而段寄存器呢,它所存储的只能是地址,它的作用是从寻址上可以体现出来,而标志寄存器呢,那么所存储的是与CPU的每一个执行的指令有关。是关系到CPU每一个指令的执行相关内容与特殊的关联,即CPU所执行的指令是否违规,它的指令是否有进位,它的指令是否有溢出,都是在标志寄存器中能表现与表达出来。所有这些细则,只有通过学习后才能知道的。
好了,我只能说这些了,如果有说错的地方,还高人指出,加以指正与批评,谢谢。 "内存的使用角度上来讲的话,CPU的寄存器,它是内存的一部分"
对于这个,我不是很认同,不过从ee(电子工程师)的观点来看,一般不太直接使用memory这个词语.如果真要用到什么什么存储,那一般可能是一个芯片,或者是集成到芯片内部的一定数量的存储。单个寄存器,那也只是一个寄存器,一个容器。 ARM就是典型的LOAD/STORE的哈佛体系结构
回复 #3 eveson 的帖子
arm9,arm10,arm11采用改进版的哈佛结构,arm7则不是。改进版的哈佛结构并非经典的哈佛结构,还是有区别的,在系统硬件架构设计和嵌入式软件的架构设计上还是不同的。 原帖由 jamesr 于 2008-9-28 18:54 发表 http://linux.chinaunix.net/bbs/images/common/back.gif
借这个帖子问一个硬件上的问题:
寄存器通常是简单的flip-flop+简单的其他逻辑还是SRAM,
对一L1、L2 Cache又如何?
寄存器自然是由触发器构成;
SRAM是SRAM,SRAM是成阵列的一组庞大的触发器结构;
cache也是用SRAM堆的 DRAM不是flip-flop构成,和SRAM有本质的不同。S在这里是static,D在这里是dynamic。
DRAM是用电容来记录信息的 1)不同CPU,有不同的寄存器安排,差异甚大。以8位机时代为例,I8080、R6502、M6800等都完全不同。
2)一般来说,寄存器不是内存的一部分。只有在极特殊的几个CPU里,用内存一部分做寄存器。我只知道曾有一个单片机是这样的。
3)静态随机存储器SRAM的每一个存储单元由六个管子组成一个线选触发器结构。只要不掉电,存储信息不会丢失。动态随机存储器DRAM的每一个存储单元只由一个管子组成。它不是触发器,是靠电容来存储信息。必须不停地重写信息(所谓刷新)才能保持信息。
页:
[1]