05 2020 档案
摘要:一、单指令周期 由前可知,一条CPU指令的执行有三个步骤:指令读取、指令译码、指令执行。由于这个过程受CPU时钟的控制,如果我们将这个过程安排在一个CPU时钟周期内执行,这种设计思路就叫单指令周期处理器。这样的设计需要将指令周期时间设为与耗时最长的那条指令执行时间相当,这样显然会使得CPU频率比较,
阅读全文
摘要:一、指令周期 计算机每条执行过程分解如下: Fetch:取指令,从PC寄存器取出指令地址,内存中取出指令,将取出的指令加载到指令寄存器,PC寄存器自增; Decode:指令译码,解析指令寄存器中指令,确定指令类型以及要操作的寄存器、数据、内存地址; Execute:指令执行,根据不同指令类型执行算数
阅读全文
摘要:一、浮点数不精确性 在自算计中打开python命令行输入0.3+0.6我们可以看到输出结果是0.899999,出现这种结果和计算机中对于浮点数的保存方法有关。 二、定点数的表达 假如我们使用四个字节表示一个0~9的整数,32位就可以保存8个这样的整数,使用左边的6个表示整数位,右边两个表示小数位,这
阅读全文
摘要:前言: 二进制13乘以9应该怎么算呢? 一、顺序乘法: 上图中可以看到,二进制计算乘法比较简单,由于每一位上只有0和1,乘法计算其实就简化成了位移和加法,乘数每一位和被乘数相乘,结果不是完全复制就是0,只不过对应着不同的位移。 为了节约晶体管,不需把四个位移运算的结果都保存,只需从低位开始将被乘数逐
阅读全文
摘要:接口分离原则指在设计时采用多个与特定客户类有关的接口比采用一个通用的接口要好。即,一个类要给多个客户使用,那么可以为每个客户创建一个接口,然后这个类实现所有的接口;而不要只创建一个接口,其中包含所有客户类需要的方法,然后这个类实现这个接口。 定义没那么重要,对于非软件从业者,可以无视上面的定义,直接
阅读全文
摘要:前言: 由上一讲我们知道,计算机硬件层面为我们提供了门电路,可以实现“与”、“或”、“非”这样的单比特逻辑运算。后续的电路其实就是这些门电路组合而成的的。 一、异或门和半加器 假如我们要计算8位二进制的加法,使用手算应该怎么算呢?我们会找到一张草稿纸,第一行前两行写上要加起来的两个数然在第三行准备写
阅读全文
摘要:前言: 上节我们了解了,如何对字符串和数字进行编码把它们变为计算机能够识别和保存的0和1。这节我们来探究一下计算机在硬件层面如何表示二进制。 一、电报是如何传输信息的 电报传输有两种信号,一种是短促的点信号另一种是长些的划信号,使用不同的点和划得组合就可以对应不同的单个数字,再使用数字组合表示不同的
阅读全文
摘要:前言: 现代计算机都是用0和1组成的二进制来表示所有信息。前面所讲到的机器码也是使用二进制表示;其他诸如字符串、整数、浮点数等也都是使用二进制保存。具体细节需要我们了解一下。 一、二进制和逢二进一 二进制,逢二进一,常用的十进制通过短除法即可转换为二进制数,这样的表示方式称为原码表示法。为了区分正负
阅读全文
摘要:前言: 前面讲过,通过链接将不同文件内的代码合并到一起成为一个可执行文件,才能加载运行,在不同程序链接的过程中,有些代码是被多次复用的,如果每个程序装载的时候都去重复装载这部分代码,就会使这些相同的代码重复占用内存。 (一)链接分动静,共享省内存 要解决这个问题,我们希望不同程序引用相同代码时,都只
阅读全文
摘要:(一)程序装载需要解决的问题 程序运行实际上是通过装载器将经过动态链接生成的可执行文件装载如内存,然后交给CPU去执行的,这种机制下我们需要解决两个问题: 可执行文件加载后占用的内存应该是连续的; 我们需要同时加载多个应用程序,且不能让程序自己规定在内存中加载的位置; 如遇满足这两个条件,就需要在内
阅读全文

浙公网安备 33010602011771号