CPU相关基本概念

来源:互联网 发布:不要网络的游戏大全 编辑:程序博客网 时间:2024/06/05 18:58

目录:

1.指令和指令集

2.保护机制


1. 指令和指令集

1.1 指令集分类:

当前CPU的指令分为两类,一类是RISC(Reduced Instructions Set Computer 即 精简指令集),另一类是CISC(Complex Instruction Set Computer 复杂指令系统计算机)

RISC处理器的典型代表:
DEC Alpha、ARC、ARM、MIPS、PowerPC、SPARC和SuperH

CISC处理器的典型代表:
X86 DEC VAX-11

RISC和CISC的区别:
  • RISC采用大量的寄存器,使大部分指令操作都在寄存器之间进行,提高了处理速度,而CISC相对较少,例如32位的X86处理器中有8个通用寄存器:EAX、EBX、ECX、EDX、ESI、EDI、EBP、ESP(EBP和ESP维护栈)。
  • RISC指令数量相对较少,以跳转指令为例,8086有32条跳转指令,ARM处理器只有2条跳转指令,跳转指令对流水线不利,一旦遇到跳转指令就需要分支预测,预测失败,还需要清理错误分支结果。因此RISC设计者把主要精力放在那些经常使用的指令上,尽量使它们具有简单高效的特色。对不常用的功能,常通过组合指令来完成。因此,在RISC 机器上实现特殊功能时,效率可能较低。但可以利用流水技术和超标量技术加以改进和弥补。而CISC 计算机的指令系统比较丰富,有专用指令来完成特定的功能。因此,处理特殊任务效率较高。
  • RISC在函数调用上有很大的优势,由于有大量的寄存器,因此可以利用这些寄存器来进行参数传递,典型的Tensilica核就是采用了滑窗机制进行参数传递,效率较高,而CISC处理器中一般只能用栈进行传递,即使所谓的快速调用(fast call)也只能将2个参数用寄存器传递。
  • RISC汇编语言程序一般需要较大的内存空间,实现特殊功能时程序复杂,不易设计,而CISC 汇编语言程序编程相对简单,科学计算及复杂操作的程序设计相对容易,效率较高。
  • RISCCPU 包含有较少的单元电路,因而面积小、功耗低;而CISC CPU 包含有丰富的电路单元,因而功能强、面积大、功耗大。
  • RISC微处理器结构简单,指令规整,性能容易把握,易学易用;CISC微处理器结构复杂,功能强大,实现特殊功能容易。
  • RISC指令系统的确定与特定的应用领域有关,故RISC 机器更适合于专用机;而CISC 机器则更适合于通用机。

2. 保护模式

2.1 任务间保护:
2.2 任务内保护:
2.3 MMU:
MMU是Memory Management Unit的缩写,中文名是内存管理单元,它是中央处理器(CPU)中用来管理虚拟存储器、物理存储器的控制线路,同时也负责虚拟地址映射为物理地址,以及提供硬件机制的内存访问授权。
计算机上都存在一个程序能够产生的地址集合,我们称之为地址范围。这个范围的大小由CPU的位数决定,例如一个32位的CPU,它的地址范围是0~0xFFFFFFFF (4G),而对于一个64位的CPU,它的地址范围为0~0xFFFFFFFFFFFFFFFF (64T).这个范围就是我们的程序能够产生的地址范围,我们把这个地址范围称为虚拟地址空间,该空间中的某一个地址我们称之为虚拟地址。与虚拟地址空间和虚拟地址相对应的则是物理地址空间和物理地址,大多数时候我们的系统所具备的物理地址空间只是虚拟地址空间的一个子集,这里举一个最简单的例子直观地说明这两者,对于一台内存为256MB的32bit x86主机来说,它的虚拟地址空间范围是0~0xFFFFFFFF(4G),而物理地址空间范围是0x000000000~0x0FFFFFFF(256MB)。在没有使用虚拟存储器的机器上,虚拟地址被直接送到内存总线上,使具有相同地址的物理存储器被读写。而在使用了虚拟存储器的情况下,虚拟地址不是被直接送到内存地址总线上,而是送到内存管理单元——MMU(主角终于出现了)。他由一个或一组芯片组成,一般存在与协处理器中,其功能是把虚拟地址映射为物理地址。在ARM中,MMU并非是一个固定包含的模块,而是编号15的协处理器,因此需要查看芯片资料,看是否支持MMU。如果没有MMU,高级语言的动态内

分配就无法实现,因为进程的堆栈在初始化的时候都已经分配好了,不可更改。ucLinux就是应用在没有MMU的系统中,它李勇一个系统维护内存池实现动态内存分配,即通过内存算法对大数组进行管理。虽然多年以来,微处理器一直带有片上存储器管理单元(MMU)。但是在许多商用实时操作系统中,即使系统中含有这些硬件也没采用MMU。

问题:

1.为何很多实时操作系统不支持MMU?

因为使用MMU会消耗性能,作为实时操作系统,主要支撑一些物理层上的计算,一定要在一定的时间内完成相应任务,因此性能要求很高。





原创粉丝点击