第1章 微型计算机基础知识 【本章重点】微型计算机的组成和各部分的作 用,以及计算机中数的表示方法。 第1章 微型计算机基础知识 【本章重点】微型计算机的组成和各部分的作 用,以及计算机中数的表示方法。 【本章难点】计算机中数的表示方法:原码、 反码、补码的关系。
§1.1 微型计算机的组成及工作原理 1.1.1 微型计算机中的基本概念 1.微处理器(Microprocessor) 2.微型计算机 §1.1 微型计算机的组成及工作原理 1.1.1 微型计算机中的基本概念 1.微处理器(Microprocessor) 2.微型计算机 (1)单片微处理机 (2)通用微型计算机 3.微型计算机系统
1.1.2 微型计算机的基本结构 微型计算机的基本组成 C P U 总线形成 电路 接口 内存 外设 系 统 总 线
1.1.3 微型计算机的基本工作过程 微型计算机的基本工作过程是执行程序的过程,也就是CPU自动从程序存放的第1个存储单元起,逐步取出指令、分析指令,并根据指令规定的操作类型和操作对象,执行指令规定的相关操作。如此重复,周而复始,直至执行完程序的所有指令,从而实现程序的基本功能,这就是微型计算机的基本工作原理。 工作过程: 取指令 分析指令 执行指令
§1.2微处理器及其发展 1.2.1 微处理器的发展历史 1971.11,Intel公司第一枚微处理器芯片4004,4位机,它总共集成了2200个晶体管。 1972年4月,Intel公司宣布另一种型号的微处理器8008研制成功。 8位机。 1975年1月,Motorola公司宣布推出它的8位微处理器6800。 1979年,Intel公司推出了Intel 8086/8088微处理器,它是最早的PC机的CPU。 1983年,Intel公司推出了Intel 80286微处理器,它是完全16位微处理器 。 1985年,Intel公司推出了Intel 80386微处理器。 1989年,Intel公司推出了Intel 80486微处理器。 1993年3月,Intel公司推出了名为Pentium(经典奔腾)的微处理 。 1995年11月Intel公司又推出了Pentium Pro(高能奔腾)。 1997年1月,Intel公司又推出了Pentium MMX(多能奔腾)。 1997年5月,Intel公司推出了PentiumⅡ(奔腾二代) 1999年2月,Intel公司推出了Pentium Ⅲ(奔腾三代) 2000年11月,Intel公司推出了Pentium4(奔腾四代)。
各代微处理器的特点 第一代 1971年~1973年 第二代 1974年~1977年 第三代 1978年~1980年 第四代 1980年以后 第一代 1971年~1973年 第二代 1974年~1977年 第三代 1978年~1980年 第四代 1980年以后 典型的微处理器芯片 Intel 4004 Intel 4040 Intel 8008 Intel 8080 M6800 Z-80 Intel 8086/8088 M68000 Z-8000 Intel 80X86 M68020 Z-80000 字长(位) 4/8 8 16 16/32 集成度(晶体管数/芯片) 1000~2000 5000~9000 20000~70000 >100000 时钟频率(MHZ) 0.5~0.8 1~4 5~10 >10 数据总线宽度(位) 地址总线宽度(位) 4~8 20~24 24~32 存储容量 ≤16KB实存 ≤64KB实存 ≤1MB实存 ≤4GB实存和64GB虚存 指令执行时间(s) 10~15 1~2 <1 <0.125 软件水平 机器语言 汇编语言 高级语言 操作系统 部分软件硬化
1.2.2 微处理器的内部结构 1.总线部件 1.2.3 Pentium系列微处理器 2.预取部件 3.译码器 4.控制器 5.运算逻辑部件 1.2.2 微处理器的内部结构 1.总线部件 2.预取部件 3.译码器 4.控制器 5.运算逻辑部件 6.存储器管理部件 1.2.3 Pentium系列微处理器 1.2.3.1 Pentium奔腾微处理器的主要特点: 1、标量体系结构 2、双流水线结构 (1)转移预测部件 (2)高性能的浮点运算 (3)存储器页面大小任选
1.2.3.2 Pentium MMX的主要特点 Pentium MMX是在奔腾芯片基础上增加了MMX技术。MMX技术的特点主要有二项。 ①采用S1MD型指令。SIMD(Single Introduction Multi Data,单指令多数据流)是计算 机系统结构的一种。 ②拥有积和运算功能。 ③拥有饱和运算功能。 采用MMX技术后,提高了不同种类的应用性能,尤其对图形、图像、动画、音频数据处理的改进最为明显。
1.2.3.3 Pentium Pro的主要特点 1.三路超标量体系结构和14级超级流水线 2.动态执行技术 (1)数据流分析 (2)增强的转移预测 (3)推理执行 3.优化的32位代码结构和66MHz的系统总线 Pentium Pro采用优化的32位代码结构和66MHz的系统总线。
1.2.3.4 Pentium II的主要特点 PentiumⅡ是在Pentium Pro的基础上增加了MMX技术,具有以下几个特点。 ①采用了DIB(Dual independent Bus,双重独立总线)技术。PentiumⅡ可同时使用这两条总线,其中一条总线用于连接二级高速缓存,一条总线用于连接主存,这样充分提高了数据传输能力。 ②使用了SEC(Single Edge Contact,半边接触盒)技术。将512KB二级高速缓存移出CPU内核,但用一个塑料盒将CPU与二级高速缓存封装在一起,中间用高速缓存总线相连。也正同为这一点,Pentium II采用了一种新型插槽Slot 1,它与Socket 7不兼容。 ③双16KB高速缓存。即16KB的数据高速缓存和16KB的代码高速缓存。
1.2.3.5 Pentium Ⅲ的主要特点 Pentium Ⅲ采用了与PentiumⅡ相同的Slot 1结构,同样支持100MH的系统外频。PentiumⅢ针对K6-2中的3D NOW!指令,在MMX指令集基础上增加了70条新的SSE指令集,从而大大增强了3D几何运算、动画、影像、音效等功能。Pentium Ⅲ利用数字信号处理软件解决方案,实现更高效的声音采样和过滤,提高语音引擎的反应速度与准确率,使语音能力成为现实。Pentium Ⅲ可在一个场景中渲染更多的三维对象,表现更多的光源(13个光源),实现渲染反问、光影效果;Pentium Ⅲ采用并行的SIMD浮点运算架构,并特别增加了8个128位寄存器来配合新指令的运算,使其在图像、视频上有额外的表现。进行实时同步MPEG2编码与解码无需MPEG硬件卡,可获得增强的数字电视体验,若配以宽带的Modem使可视电话成为可能。
1.2.3.6 Pentium 4主要特点 Pentium 4 CPU是目前Intel公司技术最先进、功能最强大的台式机处理器,采用先进技术设计,是目前中高档的微机微处理器。它采用了HT(Hyper—Threading,超线程)技术,使一个处理器同时运行两个独立的软件线程;采用了超级流水线技术(Hyper Pipelined technology)、800/533/400MHz前端总线(FSB,Front Side Bus)、执行跟踪高速缓存和快速执行引擎;另外它还提供了许多增强特性,包括高级传输高速缓存、高级动态执行、增强浮点和多媒体单元以及SSE2(Streaming SIMD Extensions 2,SIMD流技术扩展2)等。它在网络广播、多媒体、视频剪辑、图像处理、网络视频流、语音、3D、CSD和游戏等方面的功能大大加强了。
目前流行的Pentium 4CPU可分为四代,技术特性如表 处理器 第一代 第二代 第三代 第四代 核心 S-423Willamette S-478 Norhwood 533MHZ DSB&HT 800MHZ FSB&HT 发布日期 2000年11月 2002年4月 2002年11月 2003年4月 主频(GHZ) 1.4~2.0 1.8~2.4 2.4~3.06 2.4~3.0+ 制造工艺(m) 0.18 0.13 晶体管数目 42M 55M 核心电压 1.75 1.5 1.525 1.550 一级高速缓存 8KB 二级高速缓存 256KB 512KB 外频(MHZ) 100 133 前端总线(MHZ) 400 533 800 多媒体指令集 MMX/SSE/SSE2 超线程技术 无 只有3.06GHZ有 有
1.2.4微处理器的发展趋势 歌登.摩尔(Gordon Moore)是Intel公司奠基者之一,他在1964年提出一个摩尔定理,摩尔定理说每18个月半导体集成电路里面晶体管的个数会翻一倍,也就是集成度提升一倍,每隔18个月其性能会提升一倍。这个非常著名的摩尔定理,从1964年提出以来(尽管当时计算机集成电路芯片还没有出现),到1971年Intel公司首次做出第一块CPU 4004芯片,再到现在,发展了大概三十多年。可以发现,CPU一直是遵循摩尔定理在发展的,后来到1995年歌登·摩尔对摩尔定理稍微修改了一下,原来是每一年半(18个月)后来改成两年,也就是说每两年芯片的集成度会提升一倍,特性提升一倍,但价格不变。 对Intel而言,IA-64是其下—个10~15年的架构。新的IA-64将使Intel摆脱x86架构的限制,从而设计出超越所有现有RISC CPU和x86CPU的新型处理器。IA-64处理器,具有64位寻址能力和64位宽的寄存器,所以被称为64位CPU。
1.3 数制与编码 1.3.1 数制的表示 1.常用数制 (1)十进制数 我们熟悉的十进制数有两个主要特点: 例如: 1.3 数制与编码 1.3.1 数制的表示 1.常用数制 (1)十进制数 我们熟悉的十进制数有两个主要特点: 有十个不同的数字符号:0、1、2、…、9; 低位向高位进、借位的规律是“逢十进一”“借一当十”的计数原则进行计数。 例如: 1234.45=1×103+2×102+3×101+4×100+4×10-15×10-2 式中的10称为十进制数的基数, 103、102、101、100、10-1称为各数位的权。十进制数用D结尾表示。
在二进制中只有两个不同数码:0和1,进位规律是“逢二进一”“借一当二”的计数原则进行计数。二进制数用B结尾表示。 (2)二进制数 在二进制中只有两个不同数码:0和1,进位规律是“逢二进一”“借一当二”的计数原则进行计数。二进制数用B结尾表示。 例如,二进制数11011011.01可表示为: (11011011.01)2==1×27+1×26+0×25+1×24+1×23+0×22+1×21+1×20+0×2-1+1×2-2 (3)八进制数 在八进制中有0、1、2…、7八个不同数码,采用“逢八进一”“借一当八”的计数原则进行计数。八进制数用Q结尾表示。 例如,八进制数(503.04)Q可表示为: (503.04)Q=5×82+0×81+3×80+0×8-1+4×8-2
(4)十六进制数 在十六进制中有0、1、2…、9、A、B、C、D、E、F共十六个不同的数码,采用“逢十六进一”“借一当十六”的计数原则进行计数。十六进制数用H结尾表示。 例如,十六进制数(4E9.27)H可表示为 (4E9.27)H=4×162+14×161+9×160+2×16-1+7×16-2 2.不同进制数之间的相互转换 表1-4列出了二、八、十、十六进制数之间的对应关系,熟记这些对应关系对后续内容的学习会有较大的帮助。
表1-3 各种进位制的对应关系 十进制 二进制 八进制 十六进制 9 1001 11 1 10 1010 12 A 2 1011 13 B 9 1001 11 1 10 1010 12 A 2 1011 13 B 3 1100 14 C 4 100 1101 15 D 5 101 1110 16 E 6 110 1111 17 F 7 111 10000 20 8 1000 10001 21
(1)二、八、十六进制数转换成为十进制数 根据各进制的定义表示方式,按权展开相加,即可转换为十进制数。 【例1-1】将(10101)B,(72)Q,(49)H转换为十进制数。 (10101)B=1×24+0×23+1×22+0×21+1×20=37 (72)Q=7×81+2×80=58 (49)H=4×161+9×160=73 (2)十进制数转换为二进制数 十进制数转换二进制数,需要将整数部分和小数部分分开,采用不同方法进行转换,然后用小数点将这两部分连接起来。
①整数部分:除2取余法。 具体方法是:将要转换的十进制数除以2,取余数;再用商除以2,再取余数,直到商等于0为止,将每次得到的余数按倒序的方法排列起来作为结果。 【例1-2】将十进制数25转换成二进制数 所以(25)D=11001B
②小数部分:乘2取整法。 具体方法是:将十进制小数不断地乘以2,直到积的小数部分为零(或直到所要求的位数)为止,每次乘得的整数依次排列即为相应进制的数码。最初得到的为最高有效数位,最后得到的为最低有效数字。 【例1-3】将十进制数0.625转换成二进制数。 所以(0.625)D=0.101B
【例1-4】将十进制数25.625转换成二进制数,只要将上例整数和小数部分组合在一起即可,即(25.625)D=(11001.101)B 例如:将十进制193.12转换成八进制数。 所以(193.12)D (301.075)Q
(3) 二进制与八进制之间的相互转换 由于23=8,故可采用“合三为一”的原则,即从小数点开始向左、右两边各以3位为一组进行二-八转换:若不足3位的以0补足,便可以将二进制数转换为八进制数。反之,每位八进制数用三位二进制数表示,就可将八进制数转换为二进制数。 【例1-5】将(10100101.01011101)2转换为八进制数。 010 100 101.010 111 010 2 4 5 . 2 7 2 即 (10100101.01011101)B =(245.272)Q
【例1-6】将(756.34)Q转换为二进制数。 7 5 6 . 3 4 111 101 110 . 011 100 即 (756.34)Q=(111101110.0111)B (4) 二进制与十六进制之间的相互转换 由于24=16,故可采用“合四为一”的原则,即从小数点开始向左、右两边各以4位为一组进行二—十六转换,若不足4位的以0补足,便可以将二进制数转换为十六进制数。反之,每位十六进制数用四位二进制数表示,就可将十六进制数转换为二进制数。
1.3.2 常用的信息编码 【例1-7】将(1111111000111.100101011)B转换为十六进制数。 0001 1111 1100 0111 . 1001 0101 1000 1 F C 7 . 9 5 8 即 (111111000111.100101011)B =(1FC7.958)H 【例1-8】将(79BD.6C)H转换为二进制数。 7 9 B D . 6 C 0111 1001 1011 1101 . 0110 1100 即 (79BD.6C)H=(111100110111101.011011)B 1.3.2 常用的信息编码 二—十进制BCD码(Binary-Coded Decimal) 二—十进制BCD码是指每位十进制数用4位二进制数编码表示。由于4位二进制数可以表示16种状态,可丢弃最后6种状态,而选用0000~1001来表示0~9十个数符。这种编码又叫做8421码。见表1-5所示。
表1-4 十进制数与BCD码的对应关系 十进制数 BCD码 0000 10 00010000 1 0001 11 00010001 2 0000 10 00010000 1 0001 11 00010001 2 0010 12 00010010 3 0011 13 00010011 4 0100 14 00010100 5 0101 15 00010101 6 0110 16 00010110 7 0111 17 00010111 8 1000 18 00011000 9 1001 19 00011001
【例1-9】将69.25转换成BCD码。 6 9 . 2 5 0110 1001 . 0010 0101 结果为69.25=(01101001.00100101)BCD 【例1-10】将BCD码100101111000.01010110转换成十进制数。 1001 0111 1000 . 0101 0110 9 7 8 . 5 6 结果为(100101111000.01010110)BCD=978.56 2. 字符编码(ASCII码) 计算机使用最多、最普遍的是ASCII(American Standard Code For Information Interchange)字符编码,即美国信息交换标准代码,如表1.6所示。
表1-5 七位ASCII代码表 d3 d2 d1d0位 0 d6 d5d4位 000 001 010 011 100 101 110 111 0000 NUL DEL SP @ P ` p 0001 SOH DC1 ! 1 A Q a q 0010 STX DC2 ″ 2 B R b r 0011 ETX DC3 # 3 C S c s 0100 EOT DC4 ﹩ 4 D T d t 0101 ENQ NAK % 5 E U e u 0110 ACK SYN ﹠ 6 F V f v 0111 BEL ETB ' 7 G W g w 1000 BS CAN ﹙ 8 H X h x 1001 HT EM ﹚ 9 I Y i y 1010 LF SUB ﹡ : J Z j z 1011 VT ESC + ﹔ K [ k ﹛ 1100 FF FS , < L \ l | 1101 CR GS - = M ] m } 1110 SO RS · > N ↑ n ~ 1111 SI HS / ﹖ O ← o
ASCII码的每个字符用7位二进制数表示,其排列次序为d6d5d4d3d2d1d0, d6为高位,d0为低位。而一个字符在计算机内实际是用8位表示。正常情况下,最高一位d7为“0”。7位二进制数共有128种编码组合,可表示128个字符,其中数字10个、大小写英文字母52个、其他字符32个和控制字符34个。 数字0~9的ASCII码为30H~39H。 大写英文字母A~Z的ASCII码为41H~5AH。 小写英文字母a~z的ASCII码为61H~7AH。 对于ASCII码表中的0、A、a的ASCII码30H、41H、61H应尽量记住,其余的数字和字母的ASCII码可按数字和字母的顺序以十六进制的规律写出。
3. 奇偶校验码 奇偶校验码是在传送的代码上附加一个校验位,作为代码的比较校验。这样在接收方,先对信息代码按双方的校验规定求奇偶校验码,然后再与收到的附加校验位作比较,若相等则认为接收的代码是正确的,否则为错。奇偶校验就是鉴别代码中有奇数个“1,还是有偶数个“1。例如,有效信息为1011001,若采用偶校验码记为“0”的话,则有效代码为1011001 0;采用奇校验码记为“1”的话,有效代码则为1011001 1。有效代码的最后的那个数位,就是奇偶校验位。当接受方收到这组代码后,便根据奇、偶校验的约定和有效代码中“1”的个数形成校验码,然后再与接收的校验位作比较。比较相等的话,说明接受的信息正确;反之,则认为出现了错误。
1.4 计算机数值数据表示与运算 1.4.1 二进制数在计算机内的表示 1.机器数 1.4 计算机数值数据表示与运算 1.4.1 二进制数在计算机内的表示 1.机器数 在计算机中,因为只有“0”和“1”两种形式,所以数的正、负号,也必须以“0”和“1”表示。通常把一个数的最高位定义为符号位,用0表示正,1表示负,称为数符:其余位仍表示数值。把在机器内存放的正、负号数码化的数称为机器数,把机器外部由正、负号表示的数称为真值数。
【例1-11】真值为(-0101100)B的机器数为10101100,存放在机器中,如图1.3所示。 要注意的是,机器数表示的范围受到字长和数据的类型的限制。字长和数据类型定了,机器数能表示的数值范围也就定了。 例如,若表示一个整数,字长为8位,则最大的正数为01111111,最高位为符号位,即最大值为127。若数值超出127,就要“溢出”。最小负数为10000000,最高位为符号位,即最小值为-128。
2. 数的定点和浮点表示 计算机内表示的数,主要分成定点小数、定点整数与浮点数三种类型。 (1)定点小数的表示法 定点小数是指小数点准确固定在数据某一个位置上的小数。一般把小数点固定在最高数据位的左边,小数点前边再设一位符号位。按此规则,任何一个小数都可以写成: N=NSN-1N-2···N-M, NS为符号位 (2)整数的表示法 整数所表示的数据的最小单位为1,可以认为它是小数点定在数值最低位右面的一种表示法。整数分为带符号和不带符号两类。对带符号的整数,符号位放在最高位。可以写成: N=NSNnNn-1···N2 N1 N0, NS为符号位
一般定点数表示的范围和精度都较小,在数值计算时,大多数采用浮点数。 (3)浮点数的表示方法 浮点表示法对应于科学(指数)计数法,如数110.011可表示为: N=110.011=1.10011×2+10=11001.1×2-10=0.110011×2+11 在计算机机中一个浮点数由两部分构成:阶码和尾数,阶码是指数,尾数是纯小数。其存储格式如图1.4所示。 阶符 阶码 数符 尾数 图1.4 存储格式 【例1-12】设尾数为4位,阶码为2位,则二进制数N=211×l011的浮点数表示形式为:
应当注意:浮点数的正、负是由尾数的数符确定,而阶码的正、负只决定小数点的位置,即决定浮点数的绝对值大小。 带符号数的表示 在计算机中,带符号数可以用不同方法表示,常用的有原码、反码和补码。 (1)原码 【例1-13】当机器字长n=8时: [+1]原=0 0000001, [-1]原=1 0000001 [+127]原=0 1111111, [-127]原=1 111111l
由此可以看出,在原码表示法中: 最高位为符号位,正数为0,负数为1,其余n-1位表示数的绝对值。 在原码表示中,零有两种表示形式,即: [+0]=00000000, [-0]=10000000。 (2)反码 【例1-14】当机器字长n=8时: [+1]反=00000001, [-1]反=11111110 [+127]反=01111111, [-127]反=10000000 由此看出,在反码表示中: 正数的反码与原码相同,负数的反码只需将其对应的正数按位求反即可得到。
机器数最高位为符号位,0代表正号,1代表负号。 反码表示方式中,零有两种表示方法: [+0]反=00000000, [-0]反=11111111。 (3)补码 【例1-15】当机器字长n=8时, [+1]补=00000001, [-1]补=11111111 [+127]补=01111111, [-127]补=10000001 由此看出,在补码表示中: 正数的补码与原码、反码相同,负数的补码等于它的反码加l。 机器数的最高位是符号位,0代表正号,1代表负号。 在补码表示中,0有唯一的编码: [+0]补=[-0]补=00000000。 补码的运算方便,二进制的减法可用补码的加法实现,使用较广泛。
【例1-16】假定计算机字长为8位,试写出122的原码、反码和补码。 [122]原=[122]反=[122]补=01111010B 【例1-17】假定计算机字长为8位,试写出-45的原码、反码和补码。 [-45]原=10101101B [-45]反=11010010B [-45]补=11010011B 对于用补码表示的负数,首先认定它是负数,而后用求它的补码的方法可得到它的绝对值,即可求得该负数的值。例如,补码数(11110011)B是一个负数,求该数的补码为(00001101)B,该数相应的十进制数为13,故求出(11110011)B为(-13)D。 【例1-18】试写出原码11011001的真值。 (原码)补=(原码)反+1=10100111B=-39
1.4.2 补码的运算 在微处理机中,使用补码进行运算是十分方便的,它使同一个微处理机中既能运算带符号数又能运算不带符号的数。而且,在采用补码表示带符号数的情况下,两个数的减法可以用加法来实现。下面我们将会看到这一点。 在进行带符号数的加减运算时,应把参与运算的数据转换成补码形式进行运算。当使用8位二进制数表示带符号的数时,它所能表示的数值范围在(-128)10~(+127)10之间,如果相加结果超出了这个范围,就会导致错误发生。 [X+Y]补=[X]补+[Y]补 [X-Y]补=[X]补+[-Y]补
【例1-20】两个带符号的数(01000001)2(十进制数+65)与(01000011)2(十进制数+67) 例中是两个正数相加,但结果却是一个负数——符号位为1。显然,这个结果是错误的,出现这种错误的原因就在于这两个数相加的结果超过了8位二进制带符号数所能表示的数值范围。 【例1-21】两个负数(10001000)2和(11101110)2的相加情况。
由于规定用8位二进制数来表示带符号的数,故忽略作为进位位的第九位。按8位二进制数来解释这两个符号数的相加,其结果为一个正数。很明显,结果是错误的。 【例1-22】两个无符号数(11111101)2和(00000011)2相加: 从相加计算的结果来看,如果微处理机只有8位,也就是用8位二进制数来解释运算的结果,则将出现错误。因此,在微处理机中设有专门的一位,称为进位位,它将用于保存第九位以防丢失信息。
1.4.3 逻辑运算 (1)“与”运算。“与”运算的运算规则是: 00=0 01=0 10=0 11=1 【例1-23】 二进制数01011101B和11010101B相与。 (2)“或”运算。“或”运算的运算规则是: 0 0=0 01=1 10=1 11=1
【例1-24】二进制数10101101和01010000相或。 (3)“异或”运算。“异或”运算的运算规则是: 00=0 01=1 10=1 11=0 【例1-25】二进制数10101101和01101110相异或。