嵌入式系统开发之CISC和RISC

来源:互联网 发布:淘宝掌柜信用评分下降 编辑:程序博客网 时间:2024/05/17 07:43

 

一、什么是体系结构?

所谓体系结构,也可以称为系统结构,是指程序员在为特定处理器编制程序时所看到从而可以在程序中使用的资源及其相互间的关系。

    体系结构最为重要的就是处理器所提供的指令系统和寄存器组。指令系统分为CISCComplex Instruction Set Computer,复杂指令集计算机)和RISCReduced Instruction Set Computer,精简指令集计算机)。其中,嵌入式系统中的CPU往往是RISC结构的,至于原因,在后面总结完CISCRISC之后会给出。ARM核就是RISC结构,由于其在嵌入式系统占的比重比较大,所以ARM几乎成为RISC的代名词了。寄存器组与采用的指令系统是密切相关的,从这一点上考虑,体系结构中最为重要的应该就是指令系统了。

    在体系结构中,还有存储器结构。现在有两种:冯·诺依曼结构和哈佛结构。传统的计算机采用冯·诺依曼结构,也称为普林斯顿结构,是一种将程序指令存储器和数据存储器合并在一起的存储器结构。主要特点是:程序和数据共用一个存储空间;程序指令存储地址和数据存储地址指向同一个存储器的不同物理位置;采用单一的地址及数据总线;程序指令和数据的宽度相同。这样,处理器在执行指令时,必须从存储器中取出指令解码,再取操作数执行运算,即使单条指令也要耗费几个甚至几十个周期,那么,在高速运算的时候,在传输通道上会出现瓶颈效应。目前使用冯·诺依曼结构的MPUMCU有很多,如Intel 8086ARM公司的ARM7MIPS公司的MIPS处理器等。Harvard结构是一种将程序指令存储和数据存储分开的存储器结构,Harvard结构是一种并行体系结构,主要特点是:程序和数据存储在不同的存储空间中,即程序存储器和数据存储器是两个相互独立的存储器,每个存储器独立编址、独立访问。与两个存储器相对应的是系统中的4套总线:程序的数据总线和地址总线,数据的数据总线和地址总线。这种分离的程序总线和数据总线可允许在一个机器周期内同时获取指令字和操作数,从而提高了执行速度,使数据的吞吐量提高了1倍。又由于程序和数据存储器在两个分开的物理空间中,因而取指和执行能完全重叠。目前使用Harvard结构的如所有的DSP处理器、Motolora公司的MC68系列、Zilog公司的Z8系列、ATMEL公司的AVR系列、ARM公司的ARM9等。 

体系结构与实现的关系是什么?

    一个处理器的体系结构就是它的逻辑抽象,至于这个抽象的处理器具体如何实现,则称为(硬件)组成,或者就成为实现。同一个体系结构可以有不同的实现。计算机专业的基础课程《计算机体系结构与组成原理》就是从理论研究逻辑抽象及其实现方法。这两个方面是不同层次上的概念,原则上是相互独立的。但是实际上是相互影响的。这里有一个比较重要的概念就是微程序。它对指令系统的设计有比较密切的关系和影响。

1、指令系统结构

1.1、复杂指令集计算机(CISC)

   长期以来,计算机性能的提高往往是通过增加硬件的复杂性来获得.随着集成电路技术.特别是VLSI(超大规模集成电路)技术的迅速发展,为了软件编程方便和提高程序的运行速度,那么这种硬件复杂度的增加采用的办法是不断增加可实现复杂功能的指令和多种灵活的编址方式。甚至某些指令可支持高级语言语句归类后的复杂操作.至使硬件越来越复杂,造价也相应提高.同时,同一系列的新型机型对其指令系统只能扩充而不能减去旧型机的任意一条,以达到程序的兼容。

为实现复杂操作,微处理器除向程序员提供类似各种寄存器和机器指令功能外.还通过存于只读存贮器(ROM)中的微程序来实现其极强的功能,微处理在分析每一条指令之后执行一系列初级指令运算来完成所需的功能,这种设计的型式被称为复杂指令集计算机(Complex Instruction Set Computer-CISC)结构.一般CISC计算机所含的指令数目至少300条以上,有的甚至超过500条.比如,IBM公司的大、中型计算机,Intel公司的80868028680386微处理器等。

日益庞大的指令系统不仅使计算机研制周期变长,而且还有难以调试、难以维护等一些自身无法克服的缺点。

1.2、精简指令集计算机(RISC)

   采用复杂指令系统的计算机有着较强的处理高级语言的能力.这对提高计算机的性能是有益的.当计算机的设计沿着这条道路发展时.有些人没有随波逐流.他们回过头去看一看过去走过的道路,开始怀疑这种传统的做法:IBM公司设在纽约YorktownJhomasI.Wason研究中心于1975年组织力量研究指令系统的合理性问题.因为当时已感到,日趋庞杂的指令系统不但不易实现.而且还可能降低系统性能.1979年以帕特逊教授为首的一批科学家也开始在美国加州大学伯克莱分校开展这一研究.结果表明,CISC存在许多缺点.首先.在这种计算机中.各种指令的使用率相差悬殊:一个典型程序的运算过程所使用的80%指令.只占一个处理器指令系统的20%.事实上最频繁使用的指令是取、存和加这些最简单的指令.也就是说,机器执行的指令中85%左右的都是简单指令,复杂指令甚少,这样-来,长期致力于复杂指令系统的设计,实际上是在设计一种难得在实践中用得上的指令系统的处理器.同时.复杂的指令系统必然带来结构的复杂性.这不但增加了设计的时间与成本还容易造成设计失误.此外.尽管VLSI技术现在已达到很高的水平,但也很难把CISC的全部硬件做在一个芯片上,这也妨碍单片计算机的发展.在CISC中,许多复杂指令需要极复杂的操作,这类指令多数是某种高级语言的直接翻版,因而通用性差.由于采用二级的微码执行方式,它也降低那些被频繁调用的简单指令系统的运行速度.因而.针对CISC的这些弊病.帕特逊等人提出了精简指令的设想即指令系统应当只包含那些使用频率很高的少量指令.并提供一些必要的指令以支持操作系统和高级语言.按照这个原则发展而成的计算机被称为精简指令集计算机(Reduced Instruction Set Computer-RISC)结构.简称RISC

IntelPentium问世以来(92年末),融合了RISC技术,也逐步渗透到了中小工作站和服务器市场。 这种种因素使计算机指令产生了简单指令复杂指令之分。

70年代以前的计算机均用传统的CISC指令结构,即完全采用复杂指令来支持高级语言、应用程序和操作系统。这种PC不但成本高且效率较低,速度受限。  

  目前,RISCCISC各有优势,而且界限并不那么明显了。现代的CPU往往采用CISC的外围,内部加入了RISC的特性。就连 Intel最新的Pentium IICISC芯片也具有了明显的RISC特征。

另外,超长指令集CPU由于融合了RISCCISC的优势,成为未来的CPU发展方向之一。

RISC特点小结:

1.有限、简单的指令集

2.CPU配备大量的通用寄存器

3.强调对指令流水线的优化

4.使用等长指令(即:不需要解析指令)

5.寻址方式少,绝不出现存储器间接寻址

6.指令集中指令数一般少于100条,指令格式少于4

7.指令功能简单,控制器多采用硬布线方式等。

基于三要素的RISC机器的特征是:

(1)使用等长指令,目前的典型长度是4个字节。(所有指令中的op-code永远位于同样的位位置、等长指令)

(2)寻址方式少且简单,一般为2—3种,最多不超过4种,绝不出现存储器间接寻址方式。

(3)只有取数指令、存数指令访问存储器。指令中最多出现RS型指令,绝不出现SS型指令。

(4)指令集中的指令数目一般少于100种,指令格式一般少于4种。

(5)指令功能简单,控制器多采用硬布线方式,以期更快的执行速度。

(6)平均而言,所有指令的执行时间为一个处理时钟周期。

(7)指令格式中用于指派整数寄存器的个数不少于32个,用于指派浮点数寄存器的个数不少于16个。

(8)强调通用寄存器资源的优化使用。

(9)支持指令流水并强调指令流水的优化使用。

(10)RlSC技术的复杂性于它的编译程序,因此软件系统开发时间比CISC机器长。

1.3CISCRISC的区别

我们经常谈论有关"PC""Macintosh"的话题,但是又有多少人知道以Intel公司X86为核心的PC系列正是基于CISC体系结构,而 Apple公司的Macintosh则是基于RISC体系结构,CISCRISC到底有何区别?

从硬件角度来看CISC处理的是不等长指令集,它必须对不等长指令进行分割,因此在执行单一指令的时候需要进行较多的处理工作。而RISC执行的是等长精简指令集,CPU在执行指令的时候速度较快且性能稳定。因此在并行处理方面RISC明显优于CISCRISC可同时执行多条指令,它可将一条指令分割成若干个进程或线程,交由多个处理器同时执行。由于RISC执行的是精简指令集,所以它的制造工艺简单且成本低廉。

从软件角度来看,CISC运行的则是我们所熟识的DOSWindows操作系统。而且它拥有大量的应用程序。因为全世界有65%以上的软件厂商都基于CISC体系结构的PC 及其兼容机服务的,象赫赫有名的Microsoft就是其中的一家。而RISC在此方面却显得有些势单力薄。虽然在RISC上也可运行DOS Windows,但是需要一个翻译过程,所以运行速度要慢许多。

目前CISCRISC正在逐步走向融合,Pentium ProNx586K5就是一个最明显的例子,它们的内核都是基于RISC体系结构的。他们接受CISC指令后将其分解分类成RISC指令以便在遇一时 间内能够执行多条指令。由此可见,下一代的CPU将融合CISCRISC两种技术,从软件与硬件方面看二者会取长补短。

RISCCISC的主要特征对比

比较内容

CISC

RISC

指令系统

复杂,庞大

简单,精简

指令数目

一般大于200

一般小于100

指令格式

一般大于4

一般小于4

寻址方式

一般大于4

一般小于4

指令字长

不固定

等长

可访存指令

不加限制

只有LOAD/STORE指令

各种指令使用频率

相差很大

相差不大

各种指令执行时间

相差很大

绝大多数在一个周期内完成

优化编译实现

很难

较容易

程序源代码长度

较短

较长

控制器实现方式

绝大多数为微程序控制

绝大多数为硬布线控制

软件系统开发时间

较短

较长

1.4、减少CPIRISC思想的精华

  读者往往会提出这样一个问题:精简指令系统计算机RISC的指令系统精简了,复杂指令系统计算机CISC的一条指令,在RISC中要用一串指令才能实现,那么,为什么RISC执行程序的速度比CISC还要快呢?

这里,有一个很简单,也是很重要的公式。任何一个程序在计算机上的执行时间可以用下面的公式来计算:

   PI·CPI·T 其中:

P是执行这个程序所使用的总的时间;

I是这个程序所需执行的总的指令条数;

CPI是每条指令执行的平均周期数;

T是一个周期的时间长度。

  下表列出了CISCRISC的三个参数ICPIT的比较情况。从这三个参数的比较中可以得出如下结论:

CISCRISCICPIT的比较

指令条数 I

指令平均周期数 CPI

周期时间 T

CISC

1

215

33ns5ns

RISC

1.31.4

1.11.4

10ns2ns

1、对于程序所执行的总的指令条数I

由于RISC的指令都比较简单,CISC中的一条复杂指令所完成的功能在RISC中可能要用几条指令才能实现。对于同一个源程序,分别编译后生成的动态目标代码,显然RISC的要比CISC的多。但是,由于CISC中复杂指令使用的频度很低,程序中使用的绝大多数指令都是与RISC一样的简单指令,因此,实际上的统计结果表明,RISCI长度只比CISC的长30%至40%。

2、对于指令平均执行周期数CPI

由于CISC一般是用微程序实现的,一条指令往往要用好几个周期才能完成,一些复杂指令所要的周期数就更多。根据统计,大多数CISC处理机,指令平均执行周期数CPI46。而RISC的大所数指令都是单周期执行的,它们的CPI应该是1,但是,由于RISC中还有LOADSTORE指令,也还有少数复杂指令,所以,CPI要略大于1。据报道,SUN公司的SPARC处理机的CPI1.31.4SGI公司的MIPS处理机的CPI1.11.2

3、对于一个周期的时间长度T

由于RISC一般采用硬布线逻辑实现,指令要实现的功能都比较简单,所以,RISCT通常要比CISCT小。从报道中也可以看到,目前使用中RISC处理机的工作主频一般要比CISC处理机高。

从表2.12中可以很快计算出,RISC的速度要比CISC3倍左右。其中的关键在于RISC的指令平均执行周期数CPI减小了,这正是RISC设计思想的精华。

减小CPI是多个方面共同努力的结果。在硬件方面,采用硬布线控制逻辑,减少指令和寻址方式的种类,使用固定的指令格式,采用LOAD/STORE结构,指令执行过程中设置多级流水线等,软件方面十分强调优化编译技术的作用。

当然,RISC设计思想也可以用于CISC中。例如,Intel公司的80x86处理机的指令平均执行周期数在不断缩小,8088的指令平均执行周期数大于2080286的指令平均执行周期数大约是5.5,到了80386,指令平均执行周期数进一步减小到4左右,而80486处理机的指令平均执行周期数已经接近2

目前,微处理器的工作主频已经达到几百MHz,已经接近于所用半导体器件的极限工作主频。因此,将来提高处理机速度的主要技术途径仍然是减少指令平均执行周期数。采用超标量、超流水线、VLIW(超长指令字)体系结构,可以是指令的平均执行周期数小于1,即平均每个周期执行超过1条指令。目前已经商品化的微处理机,其内部大都有4个至8个功能部件并行工作,每个周期可以平均执行2条以上指令。

1.5RISCCISC指令集简介

1.5.1、复杂指令集电脑CISC(Complex Instruction Set Computer)

CISC是一种为了便于编程和提高记忆体访问效率的晶片设计体系。早期的电脑使用组合语言编程,由于记忆体速度慢且价格昂贵,使得CISC体系得到了用武之地。在20世纪90年代中期之前,大多数的微处理器都采用CISC体系──包括Intel80x86Motorola68K系列等。

1CISC体系的指令特征

使用微代码。指令集可以直接在微代码记忆体(比主记忆体的速度快很多)里执行,新设计的处理器,只需增加较少的电晶体就可以执行同样的指令集,也可以很快地编写新的指令集程式。

庞大的指令集:可以减少编程所需要的代码行数,减轻程式师的负担。高阶语言对应的指令集:包括双运算元格式、寄存器到寄存器、寄存器到记忆体以及记忆体到寄存器的指令。

2CISC体系的优缺点

优点:能够有效缩短新指令的微代码设计时间,允许设计师实现CISC体系机器的向上相容。新的系统可以使用一个包含早期系统的指令超集合,也就可以使用较早电脑上使用的相同软体。另外微程式指令的格式与高阶语言相匹配,因而编译器并不一定要重新编写。

缺点:指令集以及晶片的设计比上一代产品更复杂,不同的指令,需要不同的时钟周期来完成,执行较慢的指令,将影响整台机器的执行效率。

1.5.2、精简指令集电脑RISC(Reduce Instruction Set Computer)

RISC是为了提高处理器运行的速度而设计的晶片体系。它的关键技术在于流水线操作(Pipelining):在一个时钟周期里完成多条指令。而超流水线以及超标量技术已普遍在晶片设计中使用。RISC体系多用于非x86阵营高性能微处理器CPU,HOLTEK MCU系列等。

1RISC体系的指令特征

精简指令集:包含了简单、基本的指令,透过这些简单、基本的指令,就可以组合成复杂指令。

同样长度的指令:每条指令的长度都是相同的,可以在一个单独操作里完成。

单机器周期指令:大多数的指令都可以在一个机器周期里完成,并且允许处理器在同一时间内执行一系列的指令。

2RISC体系的优缺点

优点:在使用相同的晶片技术和相同运行时钟下,RISC系统的运行速度将是CISC24倍。由于RISC处理器的指令集是精简的,它的记忆体管理单元、浮点单元等都能设计在同一块晶片上。RISC处理器比相对应的CISC处理器设计更简单,所需要的时间将变得更短,并可以比CISC处理器应用更多先进的技术, 开发更快的下一代处理器。

缺点:多指令的操作使得程式开发者必须小心地选用合适的编译器,而且编写的代码量会变得非常大。另外就是RISC体系的处理器需要更快记忆体,这通常都集成于处理器内部,就是L1 Cache(一级缓存)。

综合上面所述,若要再进一步比较CISCRISC之差异,我们可以由以下几点来分析:

1、指令的形成

CISC因指令复杂,故采微指令码控制单元的设计,RISC的指令90%是由硬体直接完成,只有10%的指令是由软体以组合的方式完成,因此指令执行时间上RISC较短,RISC所须ROM空间相对的比较大,至于RAM使用大小应该与程序的应用比较有关系。

2、定址模式

CISC的需要较多的定址模式,RISC只有少数的定址模式,因此CPU在计算记忆体有效位址时,CISC占用的汇流排周期较多。

3、指令的执行

CISC指令的格式长短不一,执行时的周期次数也不统一,RISC结构刚好相反,故适合采用管线处理架构的设计,进而可以达到平均一周期完成一指令的方向努力。显然的,在设计上RISCCISC简单,同时因为CISC的执行步骤过多,闲置的单元电路等待时间增长,不利于平行处理的设计,所以就效能而言RISCCISC还是站了上风,RISC因指令精简化后造成应用程式码变大,需要较大的程式记忆体空间,且存在指令种类较多等等的缺点。

1.5.3RISCCISC之比较

RISC的设计重点在于降低由硬件执行指令的复杂度,因为软件比硬件容易提供更大的灵活性和更高的智能,因此RISC设计对编译器有更高的要求;CISC的设计则更侧重于硬件执行指令的功能,使CISC的指令变得很复杂。总之RISC注重编译器的设计,CISC强调硬件的复杂性。

RISC设计思想准则:

1 指令集----RISC处理器减少指令集的种类,通常一个周期一条指令,也就是说指令的周期是固定的,编译器或程序员通过几条指令完成一个复杂的操作;CISC的指令长度通常不固定。

2 流水线----流水线的本质就是CPU并行运行,只是并行运行不像FPGA中的那么直接,它只是把一条指令分成几个更小的执行单元;CISC指令的执行需要调用一个微程序,明显没有RISC的指令吞吐量大

1.6RISCCISC架构的差异

RISCCISC架构在现代计算机中的区别越来越小了,尤其对于市场的高端用户来说,这种差异更加难以区别。

传统意义上的精简指令集计算机(RISC)和复杂指令集计算机(CISC)在基本原理上就存在着差异。但是,现代的微控制器技术正在不断缩小着RISC架构和CISC架构之间的差异。

差异由来已久

RISC机型拥有一个有限的指令集合,并且能够极快地执行每一条指令。但是由于缺乏复杂指令,因此需要在软件方面进行大量的工作。RISC方案的另一个优势在于有限的指令数量能够产生一个很小的核心。但由于使用精简指令所编写出来的代码会更长,所以执行任务所需的内存也就更大。因此,对于复杂的程序来说,由于要考虑到各种可能的情况,最终的程序代码可能非常大。

另一方面,CISC机型有着丰富的指令集合,使计算机能够利用一两条指令就能执行非常复杂的操作,原因在于它通过运行一条内部微代码而把汇编指令分解成若干条内部微代码指令。这样做,设备的负担就不是很高,而且代码的分布密度也恰到好处。虽然CISC机型下的内核代码要比相应的RISC机型大许多,但由于代码密度分布合理,而且考虑到内存的因素,最终所产生的代码长度就没有RISC产生的那么大。

体系结构的差异更重要

微控制器之间的各种差异要比RISCCISC种类上的差异重要得多。冯·诺依曼体系结构(Von Neuman)与哈佛体系结构(Harvard)之争就是此类差异之一。另外一种就是基于寄存器体系结构和基于累加器体系结构的差异。在冯·诺依曼体系结构中,数据和程序存储器是共享数据总线的。数据总线共享有很多优点,比如减小总线的开销。另外一个优点在于能够把RAM映射到程序空间,这样设备也能访问EEPROM中的内存。

而对于哈佛体系结构的计算机,程序和数据总线是分开的。这种方式的优势在于能够在一个时钟周期内同时读取程序和数据,这样就相应地减少了执行每一条指令所需的时钟周期。早期的哈佛架构的计算机是不能把查找表储存在程序存储器中的,而这个问题在现在的大多数设备中已经解决了。

哈佛体系结构计算机中存在的另外一个问题就是,如果要和外部的程序和数据存储器进行交互,对于两部分存储器来说,由于地址总线和数据总线的相互独立性,就需要额外增加大量的芯片管脚。因此,只有当至少有一种存储器的类型是内部的情况下,微处理器才会采用哈佛体系结构。

在基于累加器体系结构中,累加器既是数学运算单元(ALU)的数据源之一,又是ALU存放操作结果的地方。通常基于累加器体系结构的微处理器,能够在累加器与程序存储器中任何位置的存储单元或是RAM之间进行各种数学或逻辑操作。这种架构的优势就在于对于内存地址的访问更为方便快捷。

基于寄存器体系结构的微处理器中,会有一系列的寄存器直接与ALU相连。这种情况的好处在于不需要把所有的数据都压进一个累加器中,从而减少了许多在累加器架构中存在的“move”指令。因此,与把所有数据都要推进累加器中的情况相比,基于寄存器架构的微处理器大大提高了ALU的吞吐能力。

陈旧的体系差异明显

对于8位微处理器来说,能够很容易地区分RISCCISC之间的不同。最主要的原因就是这些体系结构,除了少数例外,要比相应的32位微处理器陈旧得多。CISC体系结构的一个经典例子就是摩托罗拉开发的HC11系列。HC11核心处理器诞生于1984年。这种系列的微处理器拥有300多条指令,代码密度分布非常合理。HC11使用的是带有两个累加器的冯·诺依曼体系结构。由于所有的复杂指令都是在核心中完成的,所以执行每条指令的时间就很长。指令周期从8个时钟周期到164个时钟周期。核心过大导致处理器的最高主频不超过12MHz,这样的性能要远远低于某些RISC机型。

传统的8RISC微处理器的一个例子就是由Microchip开发的PIC16C54Microchip1990年的时候把它推向市场。它采用的是一个基于单累加器的哈佛体系结构设备,使用有限指令集合。这样微处理器在执行每一条单个指令所需时间就很小。但是33条指令加上一页内存,生成的代码长度几乎是同种情况下HC11所得代码的两倍多。

新技术使得差异在减小

现在RISC机型与CISC机型的差距在不断减小。RISC机型中越来越多地增加了能够在几个时钟周期内就能执行的指令,同时在体系结构上的优化也使得高级语言更为有效。

CISC控制器在实现了管道技术之后,使得一条指令基本上在一个时钟周期之内就能够执行完,很大地改善了机器性能。但是,这种流水线操作有个很大的弊病在于每次的跳转或者执行分支指令,又或者是中断发生,都有可能导致管道内数据泛滥,反而导致更长的指令周期。虽然有一些方法能够降低这种不良效果,但是基本上都需要在软件中进行大量处理而最终会降低许多应用程序代码效率。

随着技术的进步,RISCCISC机型之间的鸿沟已经越来越小,特别是对于市场的高端用户来说,这种差异已经逐渐变得难以区分了。我们或多或少地只能相信销售商所宣称的微处理器类型了。

以前都不知道什么是冯诺依曼结构和哈弗结构,这几天在网络上找了一下,才知道。

2、存储结构

2.1、冯·诺依曼结构

·诺依曼结构又称作普林斯顿体系结构(Princetionarchitecture)。

  1945年,冯·诺依曼首先提出了存储程序的概念和二进制原理,后来,人们把利用这种概念和原理设计的电子计算机系统统称为.诺曼型结构计算机。冯.诺曼结构的处理器使用同一个存储器,经由同一个总线传输。

  冯.诺曼结构处理器具有以下几个特点:

  必须有一个存储器;

  必须有一个控制器;

  必须有一个运算器,用于完成算术运算和逻辑运算;

  必须有输入和输出设备,用于进行人机通信。

  冯·诺依曼的主要贡献就是提出并实现了存储程序的概念。由于指令和数据都是二进制码,指令和操作数的地址又密切相关,因此,当初选择这种结构是自然的。但是,这种指令和数据共享同一总线的结构,使得信息流的传输成为限制计算机性能的瓶颈,影响了数据处理速度的提高。

在典型情况下,完成一条指令需要3个步骤,即:取指令、指令译码和执行指令。从指令流的定时关系也可看出冯·诺依曼结构与哈佛结构处理方式的差别。举一个最简单的对存储器进行读写操作的指令,指令1至指令3均为存、取数指令,对冯.诺曼结构处理器,由于取指令和存取数据要从同一个存储空间存取,经由同一总线传输,因而它们无法重叠执行,只有一个完成后再进行下一个。

arm7系列的CPU有很多款,其中部分CPU没有内部cache,比如arm7TDMI,就是纯粹的冯·诺依曼结构,其他有内部cache且数据和指令的cache分离的cpu则使用了哈弗结构。

2.2、哈佛结构

哈佛结构是一种将程序指令存储和数据存储分开的存储器结构。中央处理器首先到程序指令存储器中读取程序指令内容,解码后得到数据地址,再到相应的数据存储器中读取数据,并进行下一步的操作(通常是执行)。程序指令存储和数据存储分开,可以使指令和数据有不同的数据宽度,如Microchip公司的PIC16芯片的程序指令是14位宽度,而数据是8位宽度。

哈佛结构的微处理器通常具有较高的执行效率。其程序指令和数据指令分开组织和存储的,执行时可以预先读取下一条指令。

目前使用哈佛结构的中央处理器和微控制器有很多,除了Microchip公司的PIC系列芯片,还有摩托罗拉公司的MC68系列、Zilog公司的Z8系列、ATMEL公司的AVR系列和ARM公司的ARM9ARM10ARM11

哈佛结构是指程序和数据空间独立的体系结构, 目的是为了减轻程序运行时的访存瓶颈.

例如最常见的卷积运算中, 一条指令同时取两个操作数, 在流水线处理时, 同时还有一个取指操作, 如果程序和数据通过一条总线访问, 取指和取数必会产生冲突, 而这对大运算量的循环的执行效率是很不利的.

哈佛结构能基本上解决取指和取数的冲突问题.

而对另一个操作数的访问, 就只能采用Enhanced 哈佛结构了, 例如像TI那样,数据区再split, 并多一组总线. 或向AD那样,采用指令cache, 指令区可存放一部分数据.

在典型情况下,完成一条指令需要3个步骤,即:取指令、指令译码和执行指令。从指令流的定时关系也可看出冯.诺曼结构与哈佛结构处理方式的差别。举一个最简单的对存储器进行读写操作的指令,指令1至指令3均为存、取数指令,对冯.诺曼结构处理器,由于取指令和存取数据要从同一个存储空间存取,经由同一总线传输,因而它们无法重叠执行,只有一个完成后再进行下一个。

如果采用哈佛结构处理以上同样的3条存取数指令,如下图所示,由于取指令和存取数据分别经由不同的存储空间和不同的总线,使得各条指令可以重叠执行,这样,也就克服了数据流传输的瓶颈,提高了运算速度。

2.3、冯诺依曼体系和哈佛总线体系的区别

二者的区别就是程序空间和数据空间是否是一体的。

冯诺依曼结构数据空间和地址空间不分开

哈佛结构数据空间和地址空间是分开的

早期的微处理器大多采用冯诺依曼结构,典型代表是Intel公司的X86微处理器。取指和取操作数都在同一总线上,通过分时服用的方式进行的。缺点是在高速运行时,不能达到同时取指令和取操作数,从而形成了传输过程的瓶颈。

哈佛总线技术应用是以DSPARM为代表的。采用哈佛总线体系结构的芯片内部程序空间和数据空间是分开的,这就允许同时取指和取操作数,从而大大提高了运算能力。

DSP芯片硬件结构有冯诺依曼结构和哈佛结构,两者区别是地址空间和数据空间分开与否。一般DSP都是采用改进型哈佛结构,就是分开的数据空间和地址空间都不只是一条,而是有多条,这根据不同的生产厂商的DSP芯片有所不同。在对外寻址方面从逻辑上来说也是一样,因为外部引脚的原因,一般来说都是通过相应的空间选取来实现的。本质上是同样的道理。

 

 

原创粉丝点击