计算机的工作原理
指令
- l9 p2 |$ c& z% j$ z8 Z$ L 指令是用来规定计算机执行的操作和操作对象所在存储位置的一个二进制位串。 ' W5 Q3 {- ?* W6 G& j& h
指令的格式 ; \8 |* s! q, {) Z
一条指令由操作码和地址码两部分组成。 例如二地址指令格式如下: 操作码 地址码1 地址码2 操作码:用来指出计算机应执行何种操作的一个二进制代码。 具体说明指令的性质或功能,每条指令只有一个操作码 。 例如,加法、减法、乘法、除法、取数、存数等各种基本操作均有各自相应的操作码。 地址码: 指出该指令所操作(处理)的对象(称为操作数)所在存储单元的地址。 包括着操作数的来源,结果的去向或下一条指令的地址等信息,不同指令中地址码的个数可以不一样。
+ }; M) m; \5 i7 s9 k1 r: n) i+ }指令系统 * Z. D' }2 S; |/ c
定义 一台计算机所能识别并执行的全部指令的集合,称为该台计算机的指令系统。指令系统中有数以百计的不同指令。 / f" J1 \5 ]/ O; Z% s
指令的分类: # |6 Y& D+ u) T. N7 Q) T# ?
1,数据传送指令:用于把存储器或寄存器中的某个操作数复制到指定的存储单元或寄存器中去。 3 z+ j! d6 W. Y
; \3 @+ b- ^! z/ _& u+ N 例如: MOV CL,05H
1 O. [! N' O9 C: }' q0 T 解释:将05H保存到寄存器CL中
8 r/ U7 t3 g- c9 p, n9 ^% S+ |/ t5 n) K
2,算术运算指令:用于完成两个操作数的加、减、乘、除等各种算术运算。 . U8 F9 \1 f4 g# `; j
?* _" e9 _ N# E8 k% `8 C4 G
例如: CX=0029H,SI=04EDH,执行指令ADD SI,CX之后
- t7 e# n2 l1 y$ z5 x 将寄存器SI中存储的数04EDH和寄存器CX中存储的数0029H相加,! L5 I$ h+ F0 f0 x+ C' U
并把结果存在寄存器SI中
' l+ I+ r" r& }- } 验算过程如下:& s0 l( q5 j" L) u
0029H# @6 c6 w+ }% w0 [6 e1 T
04EDH1 m8 a4 _5 L2 ~3 q! Z
0516H$ D. w0 P/ K# t. `+ y0 A
结果SI=0516H
g# r3 p5 b% l) u R
# S6 J! O3 i. l 3,逻辑运算指令:用于完成两个操作数的逻辑加、逻辑乘、按位加等各种逻辑运算。 ! K$ Q( }2 r) S, S0 _1 d
) ]) G3 w( d z% f; [
例如:按位求反指令
( _/ C3 ~3 t# W BL=FBH,执行指令NOT BL后,; J( k" o4 y7 _0 @& Z" i5 A* R
BL=(11111011)2
. A ~9 e- T% w T8 ?) U! H7 U 取反后BL=(00000100)2=04H
6 d" c+ S3 l7 o {0 D: Z7 Y( r. {/ g
8 e8 Z5 d) b% j* x: W1 ^9 e0 B- h 4,移位运算指令:用于完成指定操作数的各种类型的移位操作。
" ~' c: |- r; G
" @* m o5 |# e0 W. B9 q, t7 S 5,位与位串操作:计算机中越来越重视非数值数据的操作,包括位与位串的装入、存储、传送比较、重复执行等,也可包括位串的插入、型存取。
% P1 B" Q% ?* Y1 R1 V: Y$ P6 K
- J. _) e) `/ W0 v( r 6,控制与转移指令:通常程序中的指令多数是依次序一条条的顺序执行,但根据指令执行的结果,也可以跳到其他指令或其他程序段去执行。具有这种功能的就是各种类型的转移指令。
% u, Z" |* I% P- O- V% ?; H+ E( {
7,输入/输出指令:在微机中,往往把输入/输出设备中与主机可交换数据的寄存器称为I/O端口。同时,把各个I/O端口统一编址。使用输入/输出指令,就可以去存取各种外部设备的I/O端口,实现数据的输入/输出。 - p; `8 F% I4 H$ y& `% s- o
5 s. s: p0 q/ z9 w) L# g% k( b7 b
8,其它指令:包括各种处理器控制指令,它们往往由操作系统专用。 ) F+ g% C3 }2 K! r5 O
兼容性问题 f: a) \+ U. \8 {6 W8 y9 i
每种CPU都有自己独特的指令系统,用某一类计算机的机器语言编制的程序难以在其他各类计算机上运行,这个问题称之为指令不兼容。 向下兼容: 如586机器语言向下兼容486机器语言程序。 0 _' z# r& P' w
指令精简问题 精简指令系统计算机RISC。 - I) w4 ]7 P) j% U
; a8 M# @8 j% q
9 [8 K, o3 K- h7 D3 _程序 3 |8 i" x8 N: m" V' q0 `/ _
为解决某一问题而设计的一系列指令称为程序。 程序和相关数据存放在存储器中,计算的工作就是执行存放在存储器中的程序。 计算机运行程序的过程就是一条一条地执行指令的过程。 ) l5 v/ P+ k- d& }
程序的执行又自动地控制着整个计算机的全部操作。 这就是50年前美国数学家冯·诺依曼提出的程序存储和程序控制的思想。这也是目前计算机的基本工作方式。
5 L* e2 |! Z( M" m0 l; ~指令的执行 9 t8 ~9 [( f5 P' m
一条指令的执行过程大体如下:
/ G# \8 U R% Q Y (1)指令预取部件向指令快存提取一条指令,若快存中没有,则向总线接口部件发出请求,要求访问存储器,取得一条指令;
, j1 i7 q& D& @* s" {) {* g (2)总线接口部件在总线空闲时,通过总线从存储器中取出一条指令,放入快存和指令预取部件;
# Q" p& v" D. k8 z3 w3 k) Q' d (3)指令译码部件从指令预取部件中取得该指令,并把它翻译成起控制作用的微码;
0 B9 ?; j) ?# E0 @$ | (4)地址转换与管理部件负责计算出该指令所使用的操作数的有效物理地址,需要时,请求总线接口部件,通过总线从存储器中取得该操作数;
1 d0 \( u; n! a& X( c: ]% c1 C (5)执行单元按照指令操作码的要求,对操作数完成规定的运算处理,并根据运算结果修改或设置处理器的一些状态标志; / n+ a$ y! J* w
(6)修改地址转换与管理部件中的指令地址,提供指令预取部件预取指令时使用。
3 h! O k1 q0 I/ h3 gPentium 处理器中的流水线过程
+ t3 S1 {# \8 D2 `# w5 E
+ r, C4 S1 a8 q. Z! l% u# {0 `
& O# X( Y: V6 k
0 e1 N4 t- H+ a2 x* v
% `+ U9 ?' R) N+ P) i由于Pentium中有两个整数ALU,所以它能同时执行两条流水线, 这种结构称为“超标量结构”(Superscalar)。 3 x! I7 T' o0 Q( I
计算机工作过程示例
点击图标进入精品网摘收藏 欢迎大家加入网络收藏夹