You are on page 1of 21

第 1 章 微型计算机系统概述

本章主要介绍微型计算机的基础知识,包括微型计算机的发展、特点;微型计算机的组
成及工作原理;嵌入式系统的概念以及计算机中数的表示与编码。要求掌握微计算机的系统
组成及其结构;了解整机的工作流程;了解嵌入式系统及处理器的分类;掌握信息和数据在
微机中的表示与运算,重点掌握数制、码制中补码的表示及带符号数的运算。

1.1 概 述

1946 年世界上第一台电子计算机 ENIAC(Electronic Numerical Integrator And Calculator)


在美国设计并研制成功。几十年来计算机经历了电子管、晶体管、集成电路时代,目前发展
到了以大规模和超大规模集成电路为主要特征的第四代计算机。1971 年美国 Intel 公司 4004
微处理器的诞生开创了微型计算机的新时代,以微处理器为核心的微型计算机的发展经过了
4 位机、8 位机、16 位机至高性能的 32 位机和正在广泛应用的 64 位机。微型计算机由于其
体积小、质量轻、功耗低、结构简单、可靠性高、使用方便、性能价格比高等特点,已广泛
应用到社会、经济的方方面面。而嵌入式系统的发展,使微机系统在通信、机电一体化、物
联网等方面的应用更加广泛。
4 位微处理器 Intel 4004 诞生后,Intel 公司经过改进生产出了 Intel 4040,在 1972 年又
生产出了 8 位微处理器 Intel 8008。人们通常将 Intel 4040 和 Intel 8008 称为第一代微处理器。
从 1973 年到 1977 年有很多厂家生产微处理器,其中设计最成功、应用最广泛的有 Intel 公
司的 8080/8085、Zilog 公司的 Z80、Motorola 公司的 6800/6802、Rockwell 公司的 6502。这
些是第二代微处理器的典型代表。1978 年和 1979 年,出现了性能可与过去中档小型计算机
相媲美的 16 位微处理器,其代表有 Intel 公司的 8086/8088、Zilog 公司的 Z8000、Motorola
公司的 68000 等。它们是第一代超大规模集成电路微处理器。
1980 年以后,相继出现了 Intel 80286、Motorola 68010 等高性能微处理器;1983 年又
生产出了 Intel 80386、Motorola 68020 等 32 位微处理 器;从 1989 年至今,Intel 先后推出
了 Intel 80486、Pentium 系列微处理器(从 Intel 80386 至 Pentium 4 前期采用的是 IA-32 架
构) 、采用 Core 架构的酷睿系列处理器(属增强型 IA-32)以及 Itanium、Itanium II 等处理
器(采用 IA-64 结构) 。这些高性能微处理器的出现,使微型计算机在性能上可以取代过去
的中、小型计算机,同时也将微型计算机的应用推广到了社区、家庭等。

1.2 微处理器

微处理器、微型计算机和微型计算机系统代表微型计算机的 3 个层次,是不同的概念。
下面介绍微处理器及其相关概念。
1 微处理器
利用超大规模集成电路技术把运算器和控制器集成在一个半导体芯片上形成微处理
器(Microprocessor, 简称 MP 或 µP),该微处理器也称中央处理单元 CPU(Central Processing
Unit)
。CPU 是微型计算机的核心部件。虽然不同类型的微处理器性能各不相同,但它们都
具有下列基本功能:

1
(1)进行算术和逻辑运算
(2)暂存少量数据
(3)对指令译码并执行指令所规定的操作
(4)与存储器和外设进行数据交换的能力
(5)提供整个系统所需要的定时和控制信号
(6)响应其它部件发出的中断请求
微处理器的内部结构、硬件设置决定了其性能。但不同类型的微处理器,一些基本的
部件是相同的,一般都由算术逻辑单元 ALU、累加器 AC 和通用寄存器组、程序计数器
PC、数据地址锁存器/缓冲器、时序和控制逻辑部件及内部总线等组成。图 1-2-1 所示是
8 位微处理器模型机的基本结构。

图 1-2-1 8 位微处理器模型机结构

算术逻辑单元 ALU 主要进行各种算术运算和逻辑运算。不同计算机系统的 ALU 功能


差别很大,低档的 CPU 不能用硬件来完成乘法、除法的运算。
累加器和通用寄存器组用来保存参加运算的数据和运算的中间结果。累加器是特殊的
寄存器,是 ALU 的一个工作区,既向 ALU 提供操作数,又接收 ALU 的运算结果。
除通用寄存器外,CPU 还有一些专用寄存器,如程序计数器 PC、堆栈指针 SP 和标志
寄存器 FR 等,这些寄存器的作用是固定的。
程序计数器 PC 用来存放下一条要执行的指令地址,它控制着程序执行的顺序。由于
指令一般是顺序存放的,所以程序计数器还有自动加 1 的功能。如果程序顺序执行时,每
取出一字节指令后,PC 的内容自动加 1。如果程序发生转移时(如主程序调用子程序,执
行转移指令等) ,必须把新的目的地址装入 PC,使 PC 指向转移的目标地址。
堆栈指针 SP 用来存放栈顶地址。堆栈是一种特殊的存储区域,按照“先进后出”的
原则存取数据。
标志寄存器存放指令执行结果的特征和处理器的状态,如进位、溢出等。需要注意的
是,每种微处理器的标志寄存器是不同的。
指令译码器对指令进行译码,产生相应的控制信号送至时序和控制逻辑电路,组合成
外部电路工作所需要的时序和控制信号。这些时序和控制信号送到微型机的相应部件,控
制这些部件协调工作。
基于上述微处理器模型机的基本结构,其指令执行的基本过程:
(1)假设程序已存储在内存单元中。开始执行程序时,程序计数器中保存第一条指令
的地址,指明当前将要执行的指令存放在存储器的哪个单元。

2
(2)控制器将程序计数器中的地址送至地址寄存器 MAR,并发出读命令。存储器根据
此地址取出一条指令,经过数据总线送入指令寄存器 IR。
(3)指令译码器对 IR 中的指令进行译码,并由控制逻辑阵列向存储器、运算器等部件
发出操作命令,执行指令操作码规定的操作。操作可以是读/写内存、算术/逻辑运算或输
入/输出操作等。
(4)修改程序计数器的内容,为取下一条指令做准备。
至此,一条指令执行结束。CPU 在执行指令过程中,提供表示状态的状态信号(如运
算结果的正负,结果是否溢出等),提供相应的系统控制信号和时序信号,由此来协调计
算机系统的工作。
2. 指令流水线
从前面的介绍可以总结出 CPU 的主要功能是取指令、对指令进行译码和执行指令,可
以简单地将其分为取指令和执行指令两个阶段。传统结构的 CPU 执行程序时,取指令、执
行指令是顺序串行执行的,即一条指令执行完成后,再执行下条指令,如图 1-2-2 所示。

图 1-2-2 指令执行过程(串行执行)
为了提高 CPU 的工作效率,现代微处理器普遍采用指令流水线技术。也就是各个部件
并行工作,若干条指令的不同执行阶段可以并行执行,这样每一时刻都有多条指令重叠执行,
减少了指令的平均执行时间。如 Intel 公司的 8086/8088 CPU 采用二级流水线处理方式,取
指令与执行指令同时进行,如图 1-2-3 所示;ARM7 处理器核(Advanced RISC Machine)则采
用了 3 级流水线,取指令、译码指令、执行指令 3 个阶段同时进行,即在正常操作的过程中,
在执行一条指令的同时对下一条指令进行译码,并将第三条指令从存储器中取出。如图 1-2-4
所示。

图(a) 图 (b)
图 1-2-3 指令执行过程(二级流水线)

图 1-2-4 指令执行过程(三级流水线)
指令的执行过程还可以采用如下的六级流水线方式,来进一步提高处理速度:
(1)取指令

3
(2)译码指令
(3)计算操作数地址
(4)取操作数
(5)执行指令
(6)写操作数
由于不同微处理器的需求不同,所以其流水线的设计也不同。但并不是流水线级数越多
越好。
3. CISC 与 RISC 技术
按照指令集的复杂程度,将计算机划分为复杂指令集计算机(CISC,Complex Instruction
Set Computer)与精简指令集计算机(RISC,Reduced Instruction Set Computer)两种体系结
构。
(1)复杂指令集计算机
Intel 的 x86 系列处理器是典型的 CISC 处理器。CISC 处理器的主要特点是指令集庞大,
指令的长度不相同,指令译码步骤较复杂等。形成 CISC 处理器有多方面的考虑。一是为了
使高级语言编程方便和提高程序的运行速度,用接近高级语言的语句的机器指令来帮助软件
设计,改善系统性能。二是由于硬件成本的不断下降,软件成本的不断提高,使功能的实现
由软件向硬件迁移。还有就是程序兼容性的需求也使指令系统越来越复杂。
复杂的指令集必然带来系统结构的复杂性,大大增加了设计的周期与成本。科学家研究
表明,在计算机中,各种指令的使用频度相差悬殊。一个典型程序的运行过程中所使用指令
的 80%,只占处理器指令集的 20%。针对 CISC 的这些弊端,提出了精简指令集计算机。
(2)精简指令集计算机
RISC 的基本思想是尽量简化指令功能,指令集中只包含那些使用频度高、功能简单、
能够在一个节拍内执行完成的指令,并将较复杂的功能用一段子程序来实现。同时大量使用
寄存器,优化 CPU 的控制逻辑,提高程序执行的速度。ARM 系列嵌入式处理器就是应用
了 RISC 的设计思想。
为了克服 x86 处理器的缺点,Intel 在 20 世纪 90 年代中后期设计的 x86 处理器中就开
始引入 RISC 的设计理念。
虽然 RISC 有许多优点,但并不能完全取代 CISC 结构。RISC 的优势同样使其存在许多
问题。如软件的开发会变得更加复杂,相同的任务必须编写更多的程序来完成;性能依赖于
编译器的有效性等。实际上 RISC 和 CISC 各有优势,其体系结构也越来越接近。

1.3 微型计算机系统

1.3.1 微型计算机

1. 冯·诺依曼结构
从硬件体系结构看,目前绝大部分的微型计算机采用的是计算机的经典结构——冯·诺
依曼结构,如图 1-3-1 所示。

4
运算器

原始数据和指令 计算结果
输入设备 存储器 输出设备

控制器

图 1-3-1 冯·诺依曼结构
冯·诺依曼计算机具有 3 个主要特征:
(1)由运算器、存储器、控制器、输入和输出设备 5 大部分组成。
(2)数据和程序都以二进制代码形式表示,且不加区别的存放在同一个存储器中。
(3)按存储程序原理工作,编写好的程序(包括指令和数据)首先由输入设备输入并
保存在存储器中,计算机工作时由控制器自动地依次从存储器中取出指令序列(即程序)并
加以执行。
随着对计算机性能需求的提高以及微电子、通信与网络技术的发展,出现了改进的
冯·诺依曼计算机结构,即哈弗结构。如图 1-3-2 所示。
哈佛结构是一种将指令(即程序)存储和数据存储分开的存储器结构,这样可以使数据
和指令的存取同时进行。

算术逻辑单元

指令存储器 控制单元 数据存储器

输入/输出接口单元

图 1-3-2 哈佛结构
与冯·诺依曼结构计算机相比,哈佛结构计算机具有两个明显的特点:
(1)使用两个独立的存储器模块分别用于存储指令和数据,以便实现并行处理。
(2)有两套独立的地址和数据总线,分别作为 CPU 与每个存储器之间的专用传输路径。

2. 微型计算机组成
上节给出了微处理器的概念,但微处理器本身不能构成独立的工作系统,必须配上存
储器、输入/输出接口及相应的外设构成完整的计算机后才能工作。
微型计算机由 CPU、存储器、输入/输出接口及系统总线组成。如图 1-3-3 所示是基于
经典的冯诺依曼计算机结构的微型计算机组成图,也是目前大多数微型计算机采用的硬件
结构。
冯·诺依曼计算机结构将指令和数据存放在同一存储空间中,统一编址,指令和数据通
过同一总线访问。

5
图 1-3-3 微型计算机组成
总线和存储器
总线是计算机系统各功能模块间传递信息的公共通道,一般由总线控制器、总线发送器、
总线接收器以及一组导线组成。微型计算机在结构上采用总线结构。在微型计算机中,根据
总线所处的位置和应用场合,将总线分为片内总线、片总线(局部总线) 、内总线(系统总
线)和外总线(通信总线) 。
系统总线包括数据总线 DB、地址总线 AB 和控制总线 CB。地址总线用来传送地址信
息,是由 CPU 送出的单向总线。地址总线的位数决定了 CPU 可以直接寻址的内存空间。数
据总线用来传送数据,数据既可从 CPU 送往其他部件,也可以从其他部件送往 CPU。数据
总线是双向的,其位数和微处理器的位数相对应,是微型机的一个重要指标。控制总线传输
控制信号,包括 CPU 送往其它部件的控制信号,如读信号、写信号等,也包括其他部件送
往 CPU 的,如中断请求信号、总线请求信号等。
微型机的各功能部件通过系统总线相连,各功能部件之间的相互关系转变为各部件面向
系统总线的单一关系。一个部件只要符合总线标准,就可以连接到采用该总线标准的微机系
统中,为系统功能的扩展、更新和产品的标准化、通用性提供了良好的基础。
存储器是用来存储数据、程序的部件。存储器分类方法很多,按照存储器与 CPU 的关
系,分为内存储器(主存)和外存储器(辅存) 。
内存储器是由 CPU 直接随机存取的存储器。其特点是:存取速度比外存储器快,具有
体积小,集成度高,外部电路简单等优点,但其容量较小。不过,现在的微型计算机的内存
储器容量也可以达到 1GB 以上。
外存储器不能由 CPU 直接访问,其特点是:存储容量大,成本低,数据能长期保存,
非易失性,但速度慢。目前主要外存有硬盘、光盘等。
随着计算机系统的不断发展,其应用领域的不断扩大,要求存储器的容量大、存取速度
快、成本价格低。但这种要求是相互矛盾、相互制约的,要同时满足这三方面是很困难的。
为协调速度、容量、成本之间的关系,目前各类计算机系统广泛采用由高速缓冲存储器、内
存储器和外存储器组成的三级存储结构。
输入/输出设备和接口
输入/输出设备是指微型计算机上配备的外部设备或外围设备,简称外设,通过外设来
实现微型计算机的输入/输出。用户的程序和数据通过输入设备输入微型计算机。微型计算
机的处理结果通过输出设备送出去。常用的输入设备有键盘、鼠标、触摸屏、扫描仪等;常
用的输出设备有显示器、打印机、绘图仪等。由于外部设备的结构、工作原理、速度、信号
形式等各不相同,所以,它们不能直接挂接到系统总线上。为适应不同外部设备的需要,必
须在 CPU 和外设之间增加输入/输出适配器,即 I/O 接口,所以 I/O 接口是微型计算机的
重要组成部件。

6
3.微型计算机的分类
从微型计算机的结构形式来分,可将其分为单片机、单板机和多板机。
单片微型计算机(即单片机)是把微型计算机的主要部件 CPU、一定容量的存储器、I
/O 接口及时钟发生器集成在一块芯片上的单芯片式微型计算机。广泛应用于工业控制、智
能仪器、仪表等领域,因此单片机通常也被称为微控制器。单片机的发展直接利用了微处理
器发展的成果,经历了从 8 位、16 位到 32 位,再到目前的 64 位单片机。这之中的 ARM 架
构越来越占据主导地位,广泛应用在通用、专用微控制器中。
单板微型计算机(即单板机)是将微处理器、一定容量的存储器、输入/输出接口、简
单的外部设备(键盘、LED 显示器) 、辅助设备通过总线装配在一块印刷电路板上的微型计
算机。主要用于实验室以及简单的控制场合。
多板微型计算机(即系统机)是将单板机模块、存储器模块和 I/O 接口等模块组装在
一块主机板上,通过主机板上的系统总线和各种外设适配器连接键盘、显示器、打印机、光
驱、软/硬盘驱动器,再配上电源,并将主机板、软、硬盘驱动器等安装在同一机箱内,适
配器、适配卡插在总线扩展槽上,通过总线相互连接,就构成多板微型计算机,配上系统软
件即构成微型计算机系统。个人计算机就是多板微型计算机系统。
按照微型计算机数据总线的宽度,也就是按照在一次操作中所能传送的二进制位数的最
大值来进行划分,可分为 4 位、8 位、32 位、64 位机。按照微型计算机的应用,又可将微
型机分为通用机和专用机。专用微型计算机的逻辑结构是根据具体应用、算法特点进行设计
的,以满足快速响应的要求,具有有效、经济、快速的特点。通用机配置有完善的系统软件
和外部设备,一般用于信息处理和科学计算,其适应性强。

1.3.2 微型计算机系统

以微型计算机为主体,配上系统软件和外部设备以后,就构成了完整的微型计算机系统,
图 1-3-4 为微型计算机系统的组成。

7
图 1-3-4 微型计算机系统的组成
微型计算机系统又可分为面向各种应用的通用微型计算机系统和面向专门应用的嵌入
系统。我们在办公、科学计算、日常生活等中使用的个人计算机系统就是典型的通用微型计
算机系统。而嵌入式系统则定义为以应用为中心,以计算机技术为基础,软硬件可裁减,适
用于应用系统对功能、可靠性、成本、体积、功耗有严格要求的专用计算机系统。因此嵌入
式系统具有针对性、实时性强以及高可靠性、系统精减等特点。
微型计算机系统的基本性能通常用下列指标衡量。
1. 字长
字长是微型计算机能够直接处理的二进制数据的位数。字长越长,能表示数值的有效位
数越多,在同样的运算速度下,精度也就越高。目前微型计算机的字长已达 64 位。
2. 主存容量
主存储器所能存储的最大信息总量为主存容量,它是衡量微型计算机处理能力大小的一
个重要指标。主存容量越大,能储存的信息就越多,处理能力就越强。表示主存容量有两种
方法:
(1) 用字节数表示
(2) 用单元数×字长表示
3. 主频
计算机内部有一个按某一频率产生的时钟脉冲信号,称为主时钟信号。主时钟信号的频
率称为计算机的主频,是用于协调计算机操作的时钟信号。主频决定了计算机的处理速度,
频率越高,处理速度越快。目前微型机的主频已接近 3GHz。
4. 运算速度
运算速度是指计算机每秒钟运算的次数。计算机执行不同的操作,所需的时间不同,所

8
以对运算速度存在不同的计算方法。早期以加法操作所需的时间为准,后来又以进行加法、
乘法、除法的平均时间为准,现在普遍采用的方法是根据指令使用的频度和每一种指令的执
行时间来计算得出平均速度,以此来衡量计算机的运算速度。
5. 性能价格比
性能价格比即指性能与价格之比,是计算机产品性能优劣的综合性指标,包括计算机硬
件和软件的各种性能。对多数用户而言,性能与价格比越大越好。

1.4 嵌入式系统及 ARM 处理器体系

1.4.1 嵌入式系统的概念
在微型计算机的发展过程中逐步形成了面向各种应用的通用微机和面向专门应用的嵌
入式系统。通用微机是以各种标准化硬件为基础,并配以各种操作系统和软件来满足人们的
各种应用需求。嵌入式系统则是面向特定应用的,软硬件可减载,适应应用系统对功能、可
靠性、成本、体积和功耗的严格要求的专用计算机系统。可称其为是嵌入到应用对象体系中
的专用计算机系统。
嵌入式系统软件要求固件化,并且大多数应用中要求系统软件具有实时处理能力。这
是与通用微机在系统软件和应用软件方面的不同点。同时嵌入式系统的开发必须有一套开发
工具和环境。它本身不具备自开发能力,并且设计开发完成后用户通常也不能对其中的程序
功能进行修改。
嵌入式系统一般由嵌入式微处理器、外围硬件设备、嵌入式操作系统及用户应用程序
组成。嵌入式微处理器是嵌入式系统硬件层的核心部件。因嵌入式微处理器大多工作在为特
定用户群所专门设计的系统中,所以它与通用微处理器(CPU)最大的不同是将在通用微机
中的一些由板卡完成的任务集成在了芯片内部,即嵌入式微处理器将 CPU、一定容量的存
储器、I/O 接口及时钟发生器等集成在了一块芯片上,属于上述我们所介绍的微型计算机
分类中的单片微型计算机。
嵌入式微处理器有各种不同的体系,即使相同的体系也可能具有不同的数据总线和时
钟频率,集成了不同的外设和接口。目前主流的嵌入式微处理器有基于 ARM 公司 ARM 核
的 ARM 处理器、 MIPS 公司的 MIPS 处理器、
摩托罗拉公司和 IBM 公司联合开发的 PowerPC
处理器和 Intel Atom 处理器。选择何种的嵌入式微处理器是由具体的应用决定的。
因本书主要以嵌入式 ARM 处理器为模型来介绍微处理器的工作原理及应用,所以下面
简要介绍 ARM 处理器的体系及分类。

1.4.2 ARM 处理器的体系


ARM 系列处理器是英国 ARM 公司的产品,该公司专门从事 RISC 处理器设计开发与
授权业务。作为知识产权供应商,ARM 公司本身不直接从事芯片生产。各 IC 厂商购买 ARM
公司设计的 ARM 处理器核,并根据不同应用领域的需求,开发出各具特色的 ARM 处理器
芯片。世界大部分的半导体厂商都是 ARM 的授权用户,目前已开发出多种体系结构版本、
多种型号的 ARM 处理器芯片。
ARM 处理器已经构成了一个完整的体系。ARM 处理器系列中的各种处理器的实现技
术各不相同,性能差别很大,其适用的应用也不同,但是只要它们支持相同的 ARM 体系版
本,基于它们的应用软件将是兼容的。ARM 体系结构的版本、ARM 处理器的各系列家族、
同一系列中的各 ARM 处理器核是构成 ARM 处理器体系的 3 个基本元素。
下面简要介绍 ARM 处理器体系结构的版本、体系结构的变型及命名方式等。

9
1. ARM 处理器体系结构的版本
在 ARM 体系结构的发展和完善过程中,其版本也在升级更新。体系结构(Architecture)
是一款具体的 ARM 处理器的基础。对开发者来讲,首先感觉到的就是不同的体系结构使用
的指令集不同。现有的 ARM 体系结构共有 7 个基本版本,早期的版本 1~版本 3 没有开展
商业授权,已经废弃。下面简要介绍版本 4(V4)及版本 7(V7)体系结构的特点。
(1)v4 版架构
V4 版架构主要是增加了 Thumb 指令集, 可使处理器在 16 位/32 位指令集之间进行切换。
(2)v5 版架构
相比 V4,V5 版架构增加或者修改了下列指令:
 提高了 T 变种中 ARM/Thumb 混合使用的效率。
 对于 T 变种的指令和非 T 变种的指令使用了相同的代码生成技术。
同时,V5 版本支持浮点运算协处理器(Vector Floating Point, VFP)
,并设计相应的指令。
(3) v6 版架构
为能对多媒体数据进行流处理,V6 版架构增加了一套单指令多数据流指令(Single
Instruction Multiple Data, STMD)

V6 的 Thumb 指令集升级为性能更好的 Thumb2 技术,同时采用了提高安全性的
TrustZone 技术。浮点运算协处理器 VFP 的版本提升为 VFPv2。
(4) v7 版架构
V7 版架构有 3 种不同类型的配置(Profile) ,两种是增强型的,一种是简约型的。
第一种配置是注重提高运算性能的 ARMv7 A。它扩展了原来的 STMD 型指令,增加了
用于视频编程与 3D 绘图等数字信号处理的新指令,并将新的 STMD 指令集及其相关技术命
名为 NEON。浮点运算协处理器 VFP 的版本提升到了 VFPv3。
第二种配置是重视实时处理的 ARMv7 R。ARMv7 R 也支持 NEON 和 VFPv3。
第三种配置是面向廉价微控制器的 ARMv7 M, 目的在于降低制造成本。 但不支持 NEON
和 VFPv3 等新功能,不支持 STMD 指令集。

2. ARM 处理器体系结构的变型
除了基本的体系结构外,ARM 处理器还有诸多增强型的体系结构,分别在 ARM 核名
称的后缀中添加若干字符以表示不同的增强版本。
(1)T 增强版本——增加 Thumb 指令集
Thumb 指令集具有 Thumb 指令集和 Thumb2 指令集两个版本,用于不同版本的 ARM
体系结构。Thumb 指令集是将 ARM 指令集的一个子集重新编码而形成的一个指令集。
(2)M 增强版本——增加长乘法指令
M 增强版本增加了进行长乘法操作指令。可以实现两个 32 位操作数的乘法,结果是 64
位整数。
(3)E 增强版本——加入增强型 DSP 指令
E 增强包含了一些附加指令,用于增强处理器对一些典型 DSP 算法的处理性能。
(4)J 增强版本——Java 加速器 Jazelle
Jazelle 技术提供了 Java 加速功能,可以得到比普通 Java 虚拟机高得多的性能。
J 增强首先在 ARM 体系版本 4 TEJ 中使用。
(5)S 增强版本——ARM 媒体功能扩展
S 增强版本为嵌入式应用系统提供了高性能的音频/视频处理技术,优化了包括音频/视
频处理在内的应用系统功能。

10
3. ARM 处理器体系结构的命名方式
ARM 产品通常以 ARM{x}{y}{z}{T}{D}{M}{I}{E}{J}{F}{-S}的形式出现。ARM 的命
名方式中这些后缀的具体含义如表 1-4-1 所示。
表 1-4-1 ARM 的命名方式中后缀变量及其含义
后 缀 变 量 含 义
x 系列,如 ARM8、ARM9
y 存储管理/保护单元
z Cache
T Thumb16 位译码器
D JTAG 调试器
M 快速乘法器
I 嵌入式跟踪单元
E 增强指令(基于 TDMI)
J Jazelle 加速
F 向量浮点单元
S 可综合版本

4. ARM 处理器的各系列家族
当前主流的 ARM 处理器内核包括 ARM7、ARM9、ARM9E、 ARM10E、ARM11、Cortex
和 SecurCore 等多个系列。除了具有相应版本 ARM 体系结构的共同特点以外,每一个系列
的 ARM 处理器都有各自的特点和应用领域。ARM7、ARM9、ARM9E、ARM10 是通用处
理器系列,每个系列提供一套独特的性能来满足设计者对功耗、性能、体积的需求。
SecurCore 系列是为安全的需要而设计的。ARM11 内核专注于数据处理能力的提升。Cortex
是最新的 ARM 内核,针对高、中、低端的各种不同需求提供特定内核。ARM 各系列处理
器所包含的类型如表 1-4-2 所示。
表 1-4-2 ARM 各系列处理器所包含的类型
ARM 系列 包含类型
ARM7 系列 ARM7EJ-S
ARM7TDMI
ARM7TDMI-S
ARM720T
ARM9/ARM9E 系列 ARM920T
ARM922T
ARM926EJ-S
ARM940T
ARM946E-S
ARM966E-S
ARM968E-S
向量浮点运算系列 VFP9-S
VFP10
ARM10 系列 ARM1020E
ARM1022E
ARM1026EJ-S
ARM11 系列 ARM1136J-S

11
ARM1136JF-S
ARM1156T2-S
ARM1176JZ-S
ARM11MPCore
SecurCore 系列 SC100
SC110
SC200
SC210
其他合作伙伴产品 StrongARM
XScale
Cortex-M
MBX
5. 经典 ARM 处理器、Cortex-A、Cortex-R、Cortex-M 系列
ARM 处理器分为经典 ARM 处理器系列和最新的 Cortex 处理器系列。
经典 ARM 处理器系列包括 ARM7、ARM9、ARM10E、ARM11 等处理器系列。ARM
公司把经典处理器 ARM11 以后的产品改用 Cortex 命名,并分成 A、R 和 M 三类,旨在为
各种不同的市场提供服务。Cortex 系列属于 ARMv7 架构,由于应用领域不同,基于 v7 架
构的 Cortex 处理器系列所采用的技术也不相同,基于 v7A 的称为 Cortex-A 系列,基于 v7R
的称为 Cortex-R 系列,基于 v7M 的称为 Cortex-M 系列。
Cortex-A 系列:Application Processors(应用处理器) ,是面向移动计算、智能手机、服
务器等应用的高端处理器。这类处理器运行在超过 1GHz 的很高的时钟频率,支持 Linux、
Android、MS Windows 和移动操作系统等完整操作系统需要的内存管理单元(MMU) 。
Cortex-R 系列:Real-time Processors (实时处理器) ,是面向实时应用的高性能处理器
系列。实时处理器运行在 200MHz 到大于 1GHz 的比较高的时钟频率,响应延迟非常低。
虽然实时处理器不能运行完整版本的 Linux 和 Windows 操作系统, 但是可以支持大量的实
时操作系统(RTOS) 。
Cortex-M 系列:Microcontroller Processors(微控制器处理器),是微控制器处理器。通
常设计成面积很小和能效比很高。通常这些处理器的流水线很短,最高时钟频率很低。

1.5 计算机中数的表示与编码

计算机中的数是以器件的物理状态来表示的。一个具有两种不同状态,并且能够相互转
换的器件即可用来表示一位二进制数。因为二进制数表示简单、可靠,所以计算机中采用二
进制数字系统。计算机处理的各种信息,无论其表现形式是文本、符号、图形,还是声音、
图像,都必须以二进制数的形式来表示。本节将介绍计算机中常用的数制及其转换,带符号
数的表示,数的定点表示与浮点表示及计算机中常用的编码。要求掌握常用的数制及其转换
方法;掌握带符号数的表示及补码运算;了解数的定点表示与浮点表示方法;掌握计算机中
常用的编码。

1.5.1 计算机中常用的数制及其转换

计算机中采用二进制数,但为了书写和阅读的方便,引入了八进制数和十六进制数。书
写时,二进制数以数字后面加 B(Binary)表示,加 O(Octal)表示八进制数,加 H(Hexadecimal)

12
表示是十六进制数。十进制数则可用后缀 D(Decimal)表示或者不加。也可在括号外面加
数字下标来表示相应的进制。如:(1011)2 表示 1011 是二进制数;
(2DF2)16 表示 2DF2
是十六进制数。
1. 进位计数制的表示法
十进制数特点:
(1)用十个符号表示数。即用 0、1、2……9 十个阿拉伯数字来表示。这些符号叫做数
码。数码的个数叫做基数,十进制的基数是 10。
(2)在一个数中,每个数码表示的值不仅取决于数码本身,还取决于它所处的位置,
即是个位、十位、还是百位……,每一位有各自的权。
(3)采用“逢十进一”的进位规则。
一个十进制数 N 可以表示为:
n 1
N    ai  10i
i  m
其中 n 是整数位数,m 是小数位数,ai 可以是 0~9 中的任意一个。
如果用 R 来表示基数,则:
十六进制数,R=16,ai 可以取 0~9、A、B、C、D、E、F 共十六个数码中的任何一个,
逢十六进一。
n 1
N   a 16
i m
i
i

八进制数,R=8,ai 为 0~7 中的任意一个,逢八进一。


n 1
N    ai  8i
i  m

二进制数,R=2, ai 为 0 或 1,逢二进一。
n 1
N    ai  2i
i  m

可以看出,上述进位计数制有下列共同点:
(1)每一计数制有一确定的基数 R,系数 ai 有 R 种可能的取值
(2)“逢 R 进一”
(3)小数点右移一位相当于乘 R;反之相当于除以 R

2. 进位计数制之间的转换
(1)R 进制数转换为十进制数,其基本方法是: “按权展,并求和” 。
例 1-1 将 1011.1010B、DFC.8H 转换为十进制数。
解: 1011.1010B=1×23+1×21+1×20+1×2-1+1×2-3=11.625
DFC.8H =13×162+15×161+12×160+8×16-1 = 3580.5

(2)十进制数转换为 R 进制数:对整数和小数部分分别进行转换。
整数部分的转换:“除 R 取余”,即十进制整数不断除以转换进制基数,直至商为 0。
每除一次取一个余数,从低位排向高位。
例 1-2 将十进制数 39 转换成二进制数。
解:

13
2 39
2 19 1 ( b0)
2 9 1 ( b1)
2 4 1 ( b2)
2 2 0 ( b3)
2 1 0 ( b4)
0 1 ( b5 )
所以,39 =100111B
小数部分的转换:“乘 R 取整”,即用转换进制的基数乘以小数部分,直至小数为 0 或达
到转换精度要求的位数。每乘一次取一次整数,从最高位排到最低位。
例 1-3 将 0.625 转换成二进制数。
解:
0.625
× 2
1.250 1 (b-1)
× 2
0.5 0 0 (b-2)
× 2
1.0 1 (b-3)

所以,0.625 = 0.101B

(3)二进制与八进制、十六进制之间的相互转换
因 8=23,16=24,所以二进制数与八进制、十六进制数之间的转换相对简单:
八进制转换为二进制:一位八进制数用三位二进制数表示。
十六进制转换为二进制:一位十六进制数用四位二进制数表示。
二进制转换为八进制:从小数点开始,分别向左、右两边把三位二进
制数码划为一组,最左和最右一组不足三位用 0 补充,然后每组用一个八进制数码代替。
二进制转换为十六进制:与八进制类似,但是四位分为一组。

1.5.2 带符号数的表示

上面提到的二进制数均未涉及符号问题,因而是一种无符号数。那么正负数在计算机中
如何表示呢?
无符号数:机器中的全部有效位均用来表示数的大小,例如:
N=01001 表示无符号数 9
带 符 号 数 : 机 器 中 , 最 高 位 作 符 号 位 ( 数 的 符 号 用 “0” 、 “1” 表 示 ) ,
其余位为数值位。
一个二进制数连同符号位在内作为一个数,叫机器数,也就是机器数是机器中数的表
示形式。常用的机器数表示方法有原码、反码、补码。
真值:机器数所代表的实际数值,一般写成十进制数的形式。
例 1-4 写出下列二进制机器数的真值。
[X1]机= 01010100 [X2]机= 11010100
解: 真值:X1=+1010100B=+84

14
X2= -1010100B=-84

1. 原码
正数的符号位用 0 表示, 负数的符号位用 1 表示, 数值部分用真值的绝对值来表示的二进制
机器数称为原码。用[X]原表示, 设 X 为整数。
例 1-5 写出 x1 = +1010100B 和 x2 =-1010100B 原码表示的机器数。
解:原码表示的机器数:[x1]原= 01010100
[x2]原= 11010100

原码特点:
(1)表示简单、直观。
(2)0 的表示不唯一,即真值 0 有两种不同的表示形式,+0 或 -0。
[+0]原=0.00…0 [-0]原=1.00…0
(3)加、减法运算复杂。例如进行原码加法,必须首先判断数的正负,再决定使用加
法,还是减法,才能进行具体的计算。
为了把减法运算转换为加法运算,引入了反码和补码。
2. 反码
正数的反码与其原码相同,最高位为 0 表示正数,其余位为数值位;负数反码符号位为
1,数值位为其原码数值位按位取反。反码用[X]反表示。
例 1-6 写出+4、-4、+0、-0、+127、-127 反码表示的机器数。
解: [+4]反=00000100 [-4]反= 11111011
[+0]反=00000000 [-0]反=11111111
[+127]反=01111111 [-127]反=10000000
3. 补码
数的补码与模有关。 “模”是指一个计数系统的计数量程。任何有模的计量器, 均可化减
法为加法运算。例如时钟的模为 12,若准确时间为 6 点, 而当前时钟却指向 10 点,这时可以
使用两种方法来调整时钟时间:一是倒拨时针 4 小时, 即 10-4=6;还可正拨时针 8 小时, 即
10+8=12+6=6。可见, 在以 12 为模的系统中, 加 8 和减 4 的效果是一样的, 即-4=+8
(mod 12)。
n
定义:[X]补=2 + X
当 X≥0 时,2n 丢掉,得[X]补=[X]原
所以正数的补码与其原码相同。
当 X<0 时,[X]补=2n +X= 2n -|X|

例 1-7 以 8 位二进制数为例,推导负数补码与反码的关系。
解:对于 8 位二进制数:28 = 256
当 X<0 时,[X]补= 28 -|X|= 256 -|X|= 255 -|X|+1
= [X]反码 + 1
所以负数的补码是其真值与模数相加。具体求补时,负数补码为其反码加 1,即
[X]补=[X]反+1。

例 1-8 写出+4、-4、+127、-127、-128 的 8 位补码机器数。


解:[+4]原=[+4]反=[+4]补=00000100
[-4]原 = 10000100
[-4]反 = 11111011

15
[-4]补 = [-4]反+1=11111011 +1=11111100
[+127]补=01111111
[-127]补=10000001
[-128]补=10000000

补码特点:
(1)0 的补码只有唯一的一个,即(0)补=00000000
(2)加、减法运算方便。即负数用补码表示时,可以把减法运算转化为加法。
(3)8 位二进制补码表示的整数范围为+127--- -128;16 位二进制补码表示的整数范
围为-32768 ~ +32767;若机器字长为 n,则补码表示的整数范围为-2n-1~+(2n-1
-1) 。
(4)由补码求真值:当为负数时,即最高位为 1,其绝对值所对应的二进制数应为各数
值位“按位求反加 1”的和。
例 1-9 已知[X]补= D9H,求 X 的真值。
解: X=-0100111B =-39

补码运算:
对于补码运算,可以证明具有关系:[A+B]补= [A]补+ [B]补,
即两数和的补码等于两数补码的和。也就是,在进行补码加法时,可以不必考虑加数的
正负,直接进行加法即可。从而简化了计算机内部的操作。
例 1-10 计算(-70+55)
解:[-70]原=11000110 [-70]补=10111010
[55]原= 00110111 [55]补= 00110111
[-70]补+[55]补 =10111010+ 00110111= 11110001
因符号位为“1” ,所以对补码相加结果 11110001 的数值部分 “求反加 1”得:-15
所以:-70+55=-15
例 1-11 计算[ -70+(-55)]
解:[-70]原=11000110 [-70]补=10111010
[-55]原= 10110111 [-55]补= 11001001
[-70]补+[-55]补 =10111010+11001001= 1(10000011)
因符号位为“1” ,所以对补码相加结果 10000011 的数值部分 “求反加 1”得:-125
所以:-70+(-55)=-125
可以总结出补码的运算步骤:
(1)将被加数、加数用补码表示
(2)进行加法得到两数和的补码(符号位作为数的一部分参加运算)
(3)判断是否发生溢出。若没有溢出,则可以进一步求和的真值。如果和为正数可直
接求出;和为负数时,则需要再次“求反加 1” ,得到真值。
补码是有一定范围的。如果带符号数运算的结果超出了计算机可以表示的范围,则产生
不正确的答案,称之为溢出。而两个同符号的数相加有可能出现溢出,两个不同符号的数相
加,不可能出现溢出。如果两个负数补码相加后得到正数的补码,或两个正数的补码相加后
到负数的补码,都是出现了溢出。
例1-12 计算[+65]补+ [+96]补
解:[+65]补+ [+96]补= 01000001+01100000=0 10100001
而 10100001= [-95]补

16
可以看出,两个正数的补码相加后得到负数的补码,显然出错了。因为 161〉127,所
以称为正向溢出。
例 1-13 计算(-70)补+(-60)补
解:(-70)补+(-60)补=10111010+11000100=1 01111110
两个负数之和却产生了正的结果,同样是因为产生了溢出。因是超出了负的最大范围,
所以是负向溢出。
可以通过扩大数的表示范围防止溢出。但数的扩展不能改变数的大小,只能改变数的位
数。正数扩展:高位全部加 0;负数扩展:高位全部加 1。
例 1-14 扩展数(-70)的位数
解: (-70) (10111010)补 (1111111110111010)补
上述的原码、反码和补码都是对整数而言的。当为纯小数时,对 8 位二进制数,只需除
7
以 2 即可。此时补码表示的范围是+127/128—— -1,小数形式是 0.1111111——1.0000000。
小数点位于 b7 和 b6 之间,整数部分个位是符号位。转换方法与整数时相同。
例 1-15 求(+12/128)和(-12/128)的补码
解:(+12/128)补=0.0001100
(-12/128)补=1.1110100
表 1-5-1 给出 8 位二进制数-128, 0 , 127 的原码、反码和补码对照关系
表 1-5-1 真值为 -128, 0 , 127 的原码、反码和补码对照关系

真 值 原 码 反 码 补 码

+127 01111111 01111111 01111111


+0 00000000 00000000 00000000
-0 10000000 11111111 00000000
-127 11111111 10000000 10000001
-128 / / 10000000

4. 移码
定义: [x]移=2n-1+x ,
[x]移为机器数 ,x 为真值
所以移码是将真值在数轴上往正方向平移了 2n-1。对 8 位数,平移了 27=128。移码也被
称作余码、增码或者偏移二进制码。在 A/D、D/A 外围电路中,常用到移码。
移码中,符号的表示方法与原码、反码和补码相反,即符号位为 1 时表示正数,为 0
时表示负数;其它位与补码相同。所以求一个数的移码时只需将其二进制补码的符号位取反
即可。
例 1-16 由+5、+127、0 和-128 的补码,写出其相应的移码。
解: (+5)补=00000101, (+5)移=10000101
(+127)补=01111111 (+127)移=11111111
(0)补=00000000 (0)移=10000000
(-128)补=10000000 (-128)移=00000000

1.5.3 数的定点表示与浮点表示

计算机中的数据不仅带有符号,而且通常含有小数。涉及到小数点的位置时,有定点和

17
浮点两种表示方法。如果小数点在数中的位置是固定不变的,则称为定点表示,所表示的数
则称为定点数。定点表示时,运算中的所有数均统一为定点整数或定点小数,在运算中不再
考虑小数点的问题。定点表示具有运算简便,但表示范围小的特点;浮点表示是小数点的位
置是浮动的,所表示的数称为浮点数。
1. 定点表示
一个二进制数可以表示成一个纯整数或纯小数与一个 2 的整数次幂的乘积的形式。
N=2P×S
其中:S 表示了 N 的全部有效数字,称之为 N 的尾数;P 指明了小数点的位置,称之
为 N 的阶码;2 称为阶码的底。P 和 S 都是用二进制表示的数。
定点小数:当阶码 P=0,并且尾数 S 是纯小数时(即小数点固定在数值位之前符号位之
后) ,该定点数表示纯小数。形式为:
Sf S
数符 S 为纯小数
↑小数点在数值位前面
通常数符“0”表示正数, “1”表示负数,尾数常以原码表示。
定点整数:当阶码 P=0,并且尾数 S 为纯整数时(即小数点固定在数值位之后) ,定点
数表示整数。形式为:
Sf S
数符 S 为纯整数
↑小数点在数值位之后

例 1-17 写出定点数+0.1011010 和-0.1011001 在机器中的表示形式


解:+0.1011010 在机器内表示为 0 1011010
-0.1011001 在机器内表示为 1 1011001
小数点在机器中不占位置。机器中的定点数具体代表定点整数还是定点小数,由程序员
预先约定好。
2. 浮点表示
当阶码 P 不为 0,并且可在一定范围内取值时,这样的数称为浮点数。二进制数浮点
±
表示:B = ±S×2 P
在机器中的形式为:
Pf P Sf S
阶符 阶码 尾数符号 尾数
阶码为整数,常用补码表示;尾数为原码表示的纯小数。尾数和阶码均为带符号数。尾
数的符号表示数的正负;阶码的符号则表明小数点的实际位置。
浮点数的格式、字长因机器而异。为尽可能保留有效数字的位数,浮点数常采用规格化
表示法。规格化表示:使数值最高位为有效数值位。即对于用原码表示的尾数,使其最高位
为 1;尾数用补码表示时,应满足尾数最高数值位与符号位不同,即 0.1××… ×和 1.0 ×
× … ×。
同样的字长,浮点表示法表示的数的范围比定点表示法大,运算的精度高。运算时可以
不考虑溢出,但运算复杂。浮点机比定点机要求更多的设备,因此成本高。

1.5.4 计算机中常用的编码

1. 二—十进制编码——BCD(Binary-Coded Decimal)码

18
BCD 码是以二进制编码表示十进制数,BCD 码又称为“二—十进制编码”。最常用的
BCD 码是标准 BCD 码或称 8421 码,其方法是用 4 位二进制数表示 1 位十进制数,自左
至右每一位对应的位权是 8、4、2、1。0000~1001 十个 4 位二进制数分别表示十进制中的
0~9 十个数码。
例1-18 写出十进制数 876 的 BCD 码。
解: 876= (1000 0111 0110) BCD
采用 BCD 码可以使计算机直接用十进制来进行运算。
BCD 码与二进制数之间不能直接进行转换。须将 BCD 码转换为十进制数后,再转换成
二进制数。反之同样。
2. 符号信息的编码
计算机中字母和字符必须按照特定的规则用二进制编码表示。最通用的字符信息编码
是美国标准信息代码,简称 ASCII 码(American National Standard Code for Information
Interchang)。标准 ASCII 码采用 7 位编码,表示 128 种字符,包括英文字母的大小写、数字、
专用字符、控制字符等。需要时可在 D7 位加奇偶校验位。ASCII 码表见表 1-5-2,其控制字
符见表 1-5-3。
表 1-5-2 ASCII(美国信息交换标准码)字符表

表 1-5-3 ASCII 码的控制符


NUL 空 DLE 数据连接变更
SOH 标题开始 DC1 设备控制 1

19
STX 文本开始 DC2 设备控制 2
ETX 文本结束 DC3 设备控制 3
EOT 传输结束 DC4 设备控制 4
ENQ 询问 NAK 否定
ACK 确认 SYN 同步空闲
BEL 报警符(可听见的符号) ETB 信息组传送结束
BS 退一格 CAN 取消
HT 水平表格 EM 纸尽
LF 换行 SUB 取代
VT 垂直制表 ESC 换码
FF 换页 FS 文件分隔符
CR 回车 GS 组分隔符
SO 移位输出 RS 记录分隔符
SI 移位输入 US 单元分隔符
SP 空格 DEL 删除

3. 汉字的编码
计算机能够处理汉字信息的前提条件是对每个汉字进行二进制编码,这些编码统称为
汉字代码。汉字信息处理系统中的每一部分都有多种不同的编码方式,汉字信息到达某个
部分时,需要使用该部分所规定的汉字代码来表示汉字。因此,汉字信息在系统内传送的
过程就是汉字代码转换的过程。
从外部输入汉字时使用汉字输入码,汉字输入码也称为外码,代表某一个汉字的一组
键盘符号;汉字内部码也称为汉字内码或汉字机内码,是计算机存储、处理汉字而使用的
编码;汉字输出使用汉字输出码,又称汉字字形码或汉字发生器的编码。
国家根据汉字的常用程度定出了一级和二级汉字字符集,并规定了编码,这就是中华
人民共和国国家标准《信息交换用汉字编码》 (GB-2312-80)中的汉字的编码,即国标码。
国标码字符集共收录汉字和图形符号 7445 个,其中包括:
1. 一般符号 202 个。包括间隔符、标点、运算符、单位符号和制表符等。
2. 序号 60 个,分别是 1.~20.(20 个),(1)~(20) (20 个)
,①~⑩(10 个)
和(一)~(十)(10 个) 。
3. 数字 22 个:0-9 和 I –XII。
4. 英文字母 52 个,其中大、小写各 26 个。
5. 日文假名 169 个,其中平假名 83 个,片假名 86 个。
6. 希腊字母 48 个,其中大小写各 24 个。
7. 俄文字母 66 个,其中大小写各 33 个。
8. 汉语拼音符号 26 个。
9. 汉语注音字母 37 个。
10. 汉字 6763 个。这些汉字分为两级,第一级汉字 3755 个,第二级汉字 3008
个。
该字符集中的任何一个图形、符号及汉字都是用两个 7 位的字节表示的。
国标码中,汉字的排列顺序为:一级汉字按汉语拼音字母顺序排列,同音字母以笔画
顺序为序;二级汉字按部首顺序排列。
国标码是汉字编码应该遵循的标准。汉字内码的编码、汉字字库的设计、汉字输入码
的转换等,都是以此标准为基础的。例如,内码是将国标码两字节的最高位都置“1”形成的,

20
以便与西文 ASCII 码相区别。
例 1-18 已知汉字“啊”的国标码为 00110000,00100001,请写出它的内码。
解: “啊”的内码为:10110000,10100001

习 题

1-1. 微型计算机包括哪几个主要组成部分,各部分的基本功能是什么?
1-2. 简述 CPU 执行指令的工作过程。
1-3. 什么是指令流水线,多级指令流水线有何优点?
1-4. 如果微处理器的地址总线为 20 位,它的最大寻址空间为多少?
1-5. 微处理器、微型计算机和微型计算机系统之间有什么关系?
1-6. RISC 处理器与 CISC 处理器的特点分别是什么?
1-7.什么是嵌入式系统?嵌入式系统与通用微机系统在软硬件上有什么不同点?
1-8. 将下面十进制数分别转换为二进制、八进制和十六进制数:
128,65535,1024
1-9. 将下面二进制数分别转换为十进制及十六进制数:
1011.1010B,1111101.11 B
1-9. (5487)10=( )BCD= B
1-10.设字长为 8 位,请写出下列数的原码、反码、补码和移码:
15,-20,-27/32

21

You might also like