第三节 RISC和CISC的区别
从指令集的角度将CPU分为两类:RISC和CISC
1、CISCcomplex instruction set computer复杂指令集CPU
2、CISC体系的设计理念是用最少的指令来完成任务(譬如计算乘法只需要一条MUL指令即可),因此CISC的CPU本身设计复杂、工艺复杂,但好处是编译器好设计。CISC出现较早,至今Intel还一直采用CISC设计。
3、指令虽然多,但是要完成某个功能时,只需要很少的指令就可以完成。
RISCreduced instruction set computer精简指令集CPU
1、RISC的设计理念是让软件完成具体的任务,CPU本身仅提供基本功能指令集。因此,RISC CPU的指令集中只有很少的指令,这种设计相对于CISC,CPU 的设计和工艺简单了,但是编译器的设计就难了(例如,c语言编写d = a*b+c,要编译成汇编代码时,在CISC中,有乘加指令,只需一条指令就可以计算,但RISC中,可能没有乘加指令,需要先算乘法,再算加法,需两条指令才能完成)
2、指令少,但是要完成某个功能时,只需要很多的指令才能完成。
CPU设计方式发展
1、早期简单CPU,指令和功能都很有限。
2、CISC年代,CPU功能扩展依赖于指令集的扩展,实质是CPU内部组合逻辑电路的扩展。
3、RISC年代,CPU仅提供基础功能指令(譬如内存与寄存器通信指令,基本运算与判断指令等),功能扩展由使用CPU的人利用基础架构来灵活实现。
发展趋势
4、没有纯粹的RISC或CISC,发展方向是RISC与CISC结合,形成一种介于两者之间的CPU类型。
RISC与CISC指令数对比
1、一般典型的CISC CPU指令在300条左右
2、ARM CPU 常用指令30条左右
第四节 统一编址&独立编址&哈佛结构&冯诺依曼结构
什么是IO?什么是内存?
1、内存是程序的运行场所,内存和CPU之间通过总线连接,CPU通过一定的地址来访问具体内存单元。(内存最小的单元是字节)
2、IO(input and output)是输入输出接口,是CPU和其他外部设备(如串口、LCD、触摸屏、LED等)之间通信的道路。一般的,IO就是指CPU的各种内部或外部外设。
3、内存的访问方式内存通过CPU的地址总线来寻址定位,然后通过CPU数据总线来读写。
4、CPU的地址总线的位数是CPU设计时确定的,因此,一款CPU所能寻址的范围是一定的,而内存是需要占用CPU的寻址空间的。(32位CPU的寻址范围是4G,如果给8G内存,有4G内存是用不到的)
5、内存与CPU的这种总线式连接方式是一种直接连接,优点是效率高访问快,缺点是资源有限,扩展性差。
IO的访问方式
1、IO指的是与CPU连接的各种外设。CPU访问各种外设(也就是访问外设的寄存器)有2种方式:一种是类似于访问内存的方式,即把外设的寄存器当作一个内存地址来读写,从而以访问内存相同的方式来操作外设,叫IO与内存统一编址(安排地址)方式;另一种是使用专用的CPU指令来访问某种特定外设,叫IO与内存独立编址。
(eg. 串口没有地址,没法通过地址读写串口,需要读写串口指令来访问)Intel就是用独立编址方式,ARM使用统一编址的方式。
对比
1、由于内存访问频率高,因此采用总线式连接,可以直接地址访问,效率最高。
2、IO与内存统一编址方式,优势是IO当作内存来访问,编程简单;缺点是IO也需要占用一定的CPU地址空间,而CPU的地址空间是有限资源。
3、IO与内存独立编址方式,优势是不用占用CPU的地址空间,缺点是CPU的设计变复杂了,编程模式复杂(因为需要用专用的CPU指令来访问)。
程序和数据
1、程序运行时两大核心元素:程序(只读,写的函数,也就是功能代码)+数据(可读写,程序中定义的变量)
2、程序是我们写好的源代码经过编译、汇编之后得到的机器码,这些机器码可以拿给CPU去解码执行,CPU不会也不应该去修改程序,所以程序是只读的。
3、数据是程序运行过程中定义和产生的变量的值,是可以读写的,程序运行实际就是为了加工改变数据的值。
冯诺依曼结构与哈佛结构
1、冯·诺依曼结构也称普林斯顿结构,是一种将程序指令存储器和数据存储器合并在一起的存储器结构。程序指令存储地址和数据存储地址指向同一个存储器的不同物理位置,因此程序指令和数据的宽度相同,如英特尔公司的8086中央处理器的程序指令和数据都是16位宽。
2、哈佛结构是一种将程序指令存储和数据存储分开的存储器结构。哈佛结构是一种并行体系结构,它的主要特点是将程序和数据存储在不同的存储空间中,即程序存储器和数据存储器是两个独立的存储器,每个存储器独立编址、独立访问。
程序和数据都放在内存中,且不彼此分离的结构称为冯诺依曼结构。譬如Intel的CPU均采用冯诺依曼结构。
3、程序和数据分开独立放在不同的内存块中,彼此完全分离的结构称为哈佛结构。譬如大部分的单片机(MCS51、ARM9等)均采用哈佛结构。
优劣对比
1、冯诺依曼结构中程序和数据不区分的放在一起,因此安全和稳定性是个问题,好处是处理起来简单。(程序段和数据段都可以被写,做不到程序段保持不变,因此有安全隐患)
2、哈佛结构中程序(一般放在ROM、flash中)和数据(一般放在RAM中)独立分开存放,因此好处是安全和稳定性高,缺点是软件处理复杂一些,程序的链接脚本会比较复杂(要分别链接到flash和RAM中)。(所以需要统一规划链接地址等)。ROM可以看作是flash,RAM是内存,flash是不能直接被写的,所以程序不会被改变。嵌入式体系中,程序和数据都在内存中,操作系统会区分程序段和数据段,会限制可读写和不可读写。