王道计算机组成原理自学笔记(只有一、二章)

一 、计算机的发展和组成

        1.1 计算机的发展

        1.2计算机硬件的组成和工作原理

               1.存储器 

                 分为存储体和寄存器(MAR、MDR)

                       MAR存储地址寄存器  MDR存储数据寄存器

9905c0263b0741fca528571d6fee35d2.png

 

                与菜鸟驿站相类似,存储体就是货架 存储的数据就是包裹 MAR相当于店员  MDR相当于            柜台

                存储体:数据在存储体按地址存储

52e093304df4415da4565219c0855056.png

                存储体中会按地址(从0开始)分为一个个存储单元

                每个存储单元会存放一串二进制代码

                这串二进制代码就叫做存储字(word)

                存储字的二进制的位数被称为存储字长

                用于存放二进制数的电子原件叫做存储元,每个存储元可存1bit

bde7fc442309426db2fc5d7143899307.png

 

01c93b27a29244eea11e97aedb92e921.png

 

          2.运算器

                实现算术运算(加减乘除)和逻辑运算(与、或 、非)

55ec6af19e794ceda9d55fb193885685.png

 

                ACC(寄存器):累加器,用于存放操作数或运算结果

                MQ:乘商寄存器,在乘或除运算时,用于存放操作数或运算结果

                X:通用的操作数寄存器,用于存放操作数

                ALU:算术逻辑单元,通过内部复杂的电路实现算数运算、逻辑运算

        3.控制器

        

563a96f5a0cd4889b62cc70d5aca6858.png

                 CU:控制单元,用于分析指令,给其他部件控制信号

                IR:指令寄存器,存放当前执行的指令

                PC:程序计数器,存放下一条指令地址,有自动加一的功能

 

4c504d3cba134757a77d8f1da61e6f2f.png

         例子:0fb4f82a65fa421eb37dadd109a27d45.png

         要运行上面的代码,计算机的工作过程:

        1.编译 装入主存

84ffa4022d3f41a194f60f97ee97b883.png

345ebe1077964fcfbd4172d68b4cdbbd.png

        指令和数据都存放在存储体中

         程序开始前PC会指向主存地址0的位置

        1)pc->MAR 导致MAR=000e4905b70764ad79bb32ecb7655a949.png

         控制器向主存说明了接下来要访问0号地址的数据并且是读操作

cb25fe042c4d4d1490d5b9fdf99cc2f5.png

         2)紧接着MAR向存储体的0号地址读取数据

        3)把这些数据放到MDR中,导致MDR=0号地址的二进制数

        4)然后MDR的数据会放到IR中,导致IR=0号地址的二进制数ece938ee26cb4a8cb0ad7a3560148df4.png

         5)IR->CU,指令的操作码送到CU中分析,分析出这串地址的指令

         6)IR->MAR,指令的地址吗送到MAR,导致(MAR)=5

        7)MAR->存储体 找到5号地址的数据

        8)存储体->MDR,MDR=5号地址的二进制数 

        9)MDR->ACC,ACC=5号地址的二进制数

        b6d1012a8a16489aa8211e07487e926d.png

 

 

 

        1.3计算机系统的层次结构

          高级机器(高级语言 如C/C++)--(编译程序) --> 汇编语言(助记符)--(翻译成机器语言)-->操作              系统机器--(系统调用)-->传统机器(二进制代码)--(拆分成一条条)-->微指令

  

f8b2845bf00749998f277fbe63464d38.png

        三种级别的语言

         编译程序:将高级语言全部语句直接翻译为机器语言程序(C/C++)

        解释程序:将源程序的一条语句翻译成对应于机器语言的语句,并立即执行,紧接着再翻                                译下一句(JS、python)

cf19d036a64b4810a23248c2d52fea32.png

 de686e587ce9487c984e404b88f5d9a3.png

        1.4计算机的性能指标

                1.4.1存储器的性能指标

                         MAR的位数反映存储单元的个数

                        MDR位数=存储字长=每个存储单元的大小

fb49a59337354f39afc2dec5ea7815e8.png

         n个二进制位能表示2^n种不同的二进制数

5b034ff01b95438caf9526a9e21a552d.png

 b7654fa5d9334557b2886e25775ceb9a.png

 

d2ac7e65fc3c4b18ab300db7ebb15f21.png

        1.4.2 CPU的性能指标

af39ce7625294de7874f52f518f72630.png

                CPU主频:CPU内数字脉冲信号震荡的频率(x.xxGHz)计算机会根据脉冲信号的频率                                    来完成动作

 

02f4d3b77915477cb0052e3d91c1fac4.png

               例:10Hz=每秒钟有十个脉冲信号

                CPI:执行一条指令所需的时钟周期数 (不同甚至相同的指令,CPI都可能不同)

a3e32209dbf243499137a61723d9e1b6.png

                 t= eq?%5Cfrac%7B1%7D%7B1000%7D ✖100✖3

7eca43f2513f461295216d5b15643c01.png

                 IPS:每秒执行多少条指令

d4115c6678f84aaea21a96827bba64f7.png

 

                FLOPS:每秒执行多少次浮点运算  

         1.4.3系统整体的性能指标

                数据通路带宽:数据总线一次所能并行传送信息的位数(各硬件部件通过数据总线传输                                            数据)

                吞吐量:系统在单位时间内处理请求的数量,主要取决于主存的存取周期

                 响应时间:指从用户向计算机发送一个请求,到系统对该请求做出响应并获得它所需要                                     的结果的等待时间

                                   通常包括CPU时间(运行一个程序所花费的时间)与等待时间(磁盘访问、                                     存储器访问、I/O操作、操作系统开销等)

                基准程序是用来测量计算机处理速度的一种实用程序(跑分软件)

392b873d807a4fbd985b764a6edbcdc3.png

二、数据的表示和运算

        2.1进位计数制

7cf6418bad44435aa2fb88b61adb4f06.png

 重点是进制数的转换

4f384215ccb041a5af5b8ce1de05571e.png

         推广:r进制计数法

                基数:每个数码位所用到的不同符号的个数,r进制的基数为r

000c429ab6fc4633a57a7a8ffee242f5.png

 

6ce41647e1d7422690471720874342c5.png

r进制转换成十进制的公式
​​​

         二进制<--->八进制、十六进制

                二进制<-->八进制

                3位一组,每组转换成对应的八进制符号

                

d945dae334c4437392f54e1e407cec42.png

               每位八进制对应3位二进制

74f0d290a2f841fb9625742b3201cc63.png

 

 

                 二进制<-->十六进制

                 4位一组,每组转换成对应的十六进制符号

                       

4fec71e952ed4ab1aa56deded2799d93.png

                 每位十六进制对应4位二进制

963ab8556ece43a4875c5ff0951a5630.png

        各种进制的常见书写方式

                二进制用B结尾

               十进制用D结尾

                十六进制用H结尾或0x开头

97f49ee8572249138a9697e4d88da0fc.png

 

         十进制->任意进制      

                要分为整数部分和小数部分分别处理

              先处理整数部分,将整数部分先用进制公式表达出来,再除以一个基数r  

eee5dbe82cc1445b88d99f0220ac2f34.png

                 这样子做之后得出来的余数,就是转换进制后的第n位数(跟短除法取余一样)

80e41f1dc0d94f92bbc38c5269010c99.png

 

                再处理小数部分,将小数部分先用进制公式表达出来,再乘以一个基数r

6bbec3c640eb4f2a830945e9bee0c0ad.png

                 这样子之后得出来的个位数,就是转换进制后的第n位小数

968239be08074496b0a97543757f9612.png

        真值和机器数 

                真值:符合人类习惯的数字

                机器数:数字实际存到机器里的形式,正负号需要被“数字化”

41467689b82a4f1897a082cd2d4097cb.png

        2.2 BCD码 

8b3ef23bc7c44285954b203fa76b69fd.png

               每四个二进制数可以表示一个十进制数(有六个冗余状态)

                 8421码:8 4 2 1 分别表示每一位数的权值

                

        2.3无符号整数的表示和运算

1c7aa84280c24a04a2b3a8c57747fc4f.png

               

                机器字长多少位就最多只能同时进行多少位运算

                 真值会被扩展为跟机器字长同样的长度

ef9d12f72ee1440b9fc0f0d371a962af.png

        2.3.1无符号整数的运算                 

                无符号整数的加法运算

                从最低位开始,按位相加,并往更高位进位

                无符号整数的减法运算

                1.被减数不变,减数全部位按位取反,末位加1,减法变加法

                        按位取反的意思是所有bit位的二进制数都取反,0变1,1变0

                2.从最低位开始,按位相加 

bca4bceac51d4ff8b1480b6eb9c311dd.png

        2.4 带符号整数在计算机中的应用

                带符号整数,就是在数学里的整数。

4e82817acaa04d82af7d4a6c4b553deb.png

 

                原码表示法

                        一个符号位(0正1负)+ n-1个数值位

2db9b8e1cb784d7c93fb1b01372f1d74.png

                         真值0两种形式:+0 和 -0

                        原码的缺点:符号位不能参与运算,需要设计复杂的硬件电路才能处理。

                原码->反码->补码

                        正数的原码、反码、补码都是一样的

                        

1fa0b2f72ef54bd7ab59fd964e88e19d.png


                        原码转为补码也可以从右往左找到第一个1,这个1左边的所有“数值位”按位取反

                补码的加法运算

                      从最低位开始,按位相加(符号位参与运算),并往更高位进位

                补码的减法运算             

                        A-B=A+(-B)

                

a499583ab63b45ff9bd63d82832d4e06.png

求相反数的补码

 

7c617215c99749ae95fc28c89e37b631.png

         原码、反码、补码的特性对比

                

6661d28b6d2546d196e058153e025f5c.png

 

a301a67a639e43c29cc4009f891e4726.png

         移码

                定义:补码的符号位取反。

                移码的真值0只有一种表示形式 1000 0000

                (移码通常用于浮点数的阶码当中)

       

065fddb06b074e58b0f4ccd52ef9caa1.png

be88ea468ae34856a5912cac2a987657.png

   

        定点小数

                定点的定义:小数点的位置固定

                定点小数的原码

9f16f37d7ea84791a74651ff732837ce.png

                 常写为:【x】原=符号位.真值位

                定点小数的原、反、补码跟定点整数的转换一模一样

                定点小数跟定点整数的加减运算也一模一样

                区别

46e13fe2c887405db504936b43195488.png

定点小数

                 位数扩展时,扩展的位置不一样,定点小数扩展在符号位和数值位之间。

2.5 电路基本原理和加法器设计

            算数逻辑单元(ALU)    

3b9ee4525a9049498b4bb6fc801ec65e.png

     机器字长的本质:ALU可以支持同时输入多少个bit的信息     

        最基本的逻辑运算(与 或 非)

             

f9949b84ce4042cd953c3cbff8bdcbc3.png

         可以用门电路表示

dc8dc5f799934960b258113533edd583.png

        优先级:与>或

 

          复合逻辑

        

5b18cd70017e480da2ee3829682832ff.png

        加法器设计

        并行进位加法器

2.6 补码加减运算器

        

c414ee3e9f254f11aeac8f3a007c6b00.png

 

6c066c699d0148be8f0053ab0fce2cf3.png

2.7 加减运算和溢出判断

83cbde3627fa4114aed91e8201cc4a2a.png

         原码的加减运算

                加法器对原码进行加法运算可能出错。

0f80c7a1480f4fd8a18f259f915a8790.png

 

16d6d3313fd9468e8ec17abfaefb49e9.png

         因为直接用原码进行加减法有些复杂,所以通常用补码来进行运算

        溢出判断

                

4e110e7f36b54c3e809c143cafb20ce7.png

                 只有“正数+正数”才会上溢

                 只有“负数+负数”才会下溢

         解决溢出的三个方法:      

1a6b4e2310e544d792b53c80f47d5cce.png

 

1c400163c2384c8caa3e98031d8f485b.png

4f0a981ba3cb4e77b28c47955849190e.png

         符号扩展

                短数据->长数据,多出来的位怎么填补?

                正整数:直接在原数据前面补0

                负整数:

                        原码:符号位和原数据中间补0,符号位补1

                        反码:直接在原数据前面补1

                        补码:直接在原数据前面补1

                正小数:直接在原数据后面补0

                负小数:

                        原码:直接在原数据后面补0

                        反码:直接在原数据后面补1

                        补码:直接在原数据后面补0

794a108e22de4b72ae1074c1d182965b.png

         2.8 标志位的生成

                

771b569c2d4a4a0b904cb3cf645f7b0b.png

对加法器的扩展

         2.9 定点数的移位运算

                

7041186e4b5c4854a6424a159c86f664.png

                 算术移位

                  通过改变数码位和小数点的相对位置,从而改变数码位的位权。从而实现乘除法

                原码的算术移位

                   符号位保持不变,仅对数值位进行移位     

08c73e32b2fd46cf8feecc39f34a0ef9.png

                 正数补码也一样

                负数补码的算术移位

                

872a37c2583f43798afc59204e84fa83.png

        

be32f9b785e841d6a21bf970fda7af1d.png

         逻辑移位

                逻辑右移:高位补0,低位舍弃

                逻辑左移:低位补0,高位舍弃

         循环移位

                方便将bit位的高位和低位调换

b031abf78f6545a2bc9e2e43006cd52c.png

 

6cc4ad1326ba47ed9ddd574366917340.png

 

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值