计算机组成原理
文章平均质量分 50
黄色猴子
这个作者很懒,什么都没留下…
展开
-
CPU的基本功能和结构
CPU的功能:CPU的基本结构:运算器的基本结构:运算器的核心部件就是算术逻辑单元。算术逻辑单元(Arithmetic&logical Unit) 是中央处理器(CPU)的执行单元,是所有中央处理器的核心组成部分,由"And Gate"(与门) 和"Or Gate"(或门)构成的算术逻辑单元,主要功能是进行二位元的算术运算,如加减乘(不包括整数除法)。基本上,在所有现代CPU体系结构中,二进制都以补码的形式来表示。在运算中可能会产生一些中间结果,而且有些时候也会把操作数存放在寄存器当中原创 2021-03-27 14:56:10 · 3095 阅读 · 1 评论 -
CISC 和 RISC
指令格式:例如:假设OP进行的是加法操作。(注:加括号表示取地址中的数值)。下面来分析一下这条指令:假设指令在内存中是依次存放的:那么这样的指令还能再优化吗?当然能,改变一下指令在内存中的存放位置,让操作码放在一起,地址码放在一起:这样存放的话如果程序没有特殊的要求,CPU只要自动地取下一条指令就行了。所以可以专门设置一个单元,用来控制指令地址的修改。这样的话就省去了用来指出下一条指令的地址码,相应的指令结构也可以优化成:那这样是最优化的情况了?当然不是,用来存.原创 2021-03-24 20:35:55 · 150 阅读 · 0 评论 -
指令寻址方式
数据存放:指令寻址:数据寻址:①立即寻址:②直接寻址:③间接寻址:这里有个问题,一次间接寻址很容易判断两次寻址后就是所要取的操作数有效地址,但是多次间接寻址后该如何判断哪次寻址得到的才是操作数有效地址?可以在存储单元前面增加一个标志位,当标志位是1的时候表明取地址后得到的地址还是间接地址,当标志位是0的时候就说明取地址后得到的就是有效地址了。④寄存器寻址:⑤寄存器间接寻址:⑥隐含寻址:⑦偏移寻址:Ⅰ、基址寻址:Ⅱ、变址寻址原创 2021-03-23 13:45:41 · 2939 阅读 · 0 评论 -
指令格式
例如:假设OP进行的是加法操作。(注:加括号表示取地址中的数值)。下面来分析一下这条指令:假设指令在内存中是依次存放的:那么这样的指令还能再优化吗?当然能,改变一下指令在内存中的存放位置,让操作码放在一起,地址码放在一起:这样存放的话如果程序没有特殊的要求,CPU只要自动地取下一条指令就行了。所以就可以用一个程序计数器的寄存器,用来控制指令地址的修改。这样的话就省去了用来指出下一条指令的地址码,相应的指令结构也可以优化成:那这样是最优化的情况了?当然不是,用来存放结...原创 2021-03-23 13:42:41 · 255 阅读 · 0 评论 -
Cache(高速缓冲存储器)工作原理
地址映射:Q:怎么判断此时要存储的cache行内是否存在数据呢?A:可以通过设置有效位来判断cache行内是否有数据存在。Q:还有一个问题,因为我们是在cache内随机存储的,那么该怎么判断这一行数据是代表主存里的哪行数据?A:...原创 2021-03-20 14:54:45 · 8804 阅读 · 0 评论 -
Cache的基本原理
对于没有接触过底层技术的朋友来说,或许从未听说过cache。毕竟cache的存在对程序员来说是透明的。在接触cache之前,先为你准备段code分析。int arr[10][128];for (i = 0; i < 10; i++) for (j = 0; j < 128; j++) arr[i][j] = 1;如果你曾经学习过C/C++语言,这段code自然不会陌生。如此简单的将arr数组所有元素置1。 你有没有想过这段code还有转载 2021-03-08 13:30:56 · 471 阅读 · 0 评论 -
双端口RAM和多模块存储器
在CPU与主存的协同工作当中,根据摩尔定律,集成电路的性能每18个月翻一翻,对于CPU来说,它的速度是指数级增长,对于主存来说,它的容量是指数级增长,但是它的速度则是近似线性的增长,这样就会导致CPU余主存之间的速度差距会越来越大,所以,如何提高主存的工作速度成为计算机领域中优化方面的一大主题。这里双口RAM和多模块存储器,原理是使用特殊的存储器的管理结构。存取周期:存取周期是用来衡量整个存储器的工作速度,是一个时间概念。题外扩展:{ 与周期相对的一个概念是频率...原创 2021-03-07 14:15:25 · 540 阅读 · 0 评论 -
主存与CPU的连接(位/字扩展)
主存容量扩展——位扩展主存容量扩展——字扩展原创 2021-03-06 22:14:13 · 4088 阅读 · 4 评论 -
存储器基本概念
存储器的分类:分类的总结:存储器的性能指标:存储器的层次化结构:原创 2021-03-04 13:28:47 · 182 阅读 · 1 评论 -
半导体存储器(RAM和ROM)
半导体存储芯片的基本结构:半导体随机存取存储器(RAM):DRAM的刷新:SRAM的读周期:(注:CS代表片选线,上面有横线表示低电平有效。)0/1的信号通过地址线传过来后不能马上读取,因为都是通过不同的线传过来的,速度不一,如果马上读取会读取到一个不稳定的地址,所以要隔一小段时间再接通片选线,接通片选线后从存储距阵获取数据也是需要时间的,所以不能立马断开片选线,等需要读取的数据稳定下来后再断开片选线,断开片选线后数据可能还在传送,所以数据线上的信号会维持一段时间再关闭,相应的地址线上的原创 2021-02-27 23:10:17 · 4721 阅读 · 3 评论 -
主存简单模型和寻址概念
主存储器:这样一个能完成一个二进制位读写的单元称为一个存储元。(会有一个开关元件)而一个存储体正是由多个存储元构成的。红色的线并行控制多个存储元,绿色的线可以把存储元上面的信号传入/传出。举一个读的例子:如果...原创 2021-02-26 17:03:32 · 248 阅读 · 0 评论 -
加法器设计
算数逻辑单元(ALU):一位全加器:简化后:串行加法器:并行加法器:类似于多米诺骨牌:那么如何更快产生进位?为了是表达式更简洁先,这里再用两个未知量代替一下:原创 2021-02-25 22:27:56 · 348 阅读 · 0 评论 -
浮点数的运算
浮点数的加减运算从十进制科学计数法理解浮点数的加减运算:对阶的原则是小阶对大阶(算术右移),之所以这样做是因为若大阶对小阶(算数左移),则尾数的数值部分的高位需移出,而小阶对大阶移出的是尾数的数值部分的低位,这样损失的精度更小。计算机中二进制的浮点数的加减运算:例题:求得X、Y的浮点数表示:舍入:强制类型转换:...原创 2021-02-22 20:17:12 · 2521 阅读 · 0 评论 -
为什么x86不叫x32?
转载自:http://blog.sina.com.cn/s/blog_6053551a0102x5my.html#commonComment安装了64位系统后,会多出:program(x86)文件夹,用于存放32位软件。在下载软件时,也会有x86,x64不同版本下载。那么64位系统叫x64,32位系统为什么不叫x32,而是x86呢?x86,x64,看似写法类似,但实际上代表了完全不同的含义。简单来说,x86指的是cpu的架构,x64是cpu位数。笼统的说,前者代表cpu的逻辑结构,后者是cpu运算能力。转载 2021-02-22 13:24:29 · 10117 阅读 · 1 评论 -
浮点数
为什么要有浮点数?从十进制科学计数法理解浮点数:计算机中二进制的浮点数:二进制中阶码的底也可以不为2。例如,二进制中阶码的底可以为4、为8等等。当阶码的底为2,假设阶码为+1,则小数点需要后移一位(即算数左移一位);当阶码的底为4时,假设阶码为+1,则小数点需要后移两位(即算数左移两位)。例如:例题:如果使用1个字节的空间去存储,那么阶码部分在内存中占3位,位数部分在内存中占5位,刚刚好。阶码部分在内存中占3位,位数部分在内存中占6位,但是最后一位存不下,只能原创 2021-02-20 21:50:37 · 4215 阅读 · 1 评论 -
大小端模式和边界对齐
大小端模式:为什么说小端方式更便于计算机处理呢?比如CPU进行加法运算,每次只能处理8位二进制,应该先从它的最低有效字节进行加法,然后再加次低位,所以如果采用小端方式存储的话,那么计算机读入的低地址对应的刚好就是最低有效字节。边界对齐:当给出要访问的字地址,要怎么转换成与之对应的字节地址?只需要把字地址逻辑左移2位即可,因为逻辑左移1位意味着乘以2,逻辑左移两位则是乘以4;例如,要访问的字地址为2(假设从0开始,图 2.10的第三行为地址2),化成二进制为10,那么转换成字节地址需要逻辑左移原创 2021-02-18 20:56:55 · 765 阅读 · 0 评论 -
定点数的强制类型转换
一、有符号数转换成无符号数:例如:即,x在计算机中二进制存储为:(真值为:-4321)y在计算机中二进制存储为:(真值为:61215)————————————————————————————————————————————二、长整数转换成短整数例如:a与c变量在计算机中16进制的存储(因为二进制过长,这里用16进制代替):b与d变量在计算机中16进制的存储:————————————————————————————————————————————三、短整数转换成长整数.原创 2021-02-16 23:06:37 · 584 阅读 · 0 评论 -
原码和补码的除法运算
《原码除法》手动计算:计算机计算:方法一:恢复余数法1.被除数、除数存储在ACC中,除数存储在通用寄存器中,商存储在MQ中。2.因为计算机不知道商0还是商1,但是会默认先商1,所以恢复余数法就是如果商错了,重新商0,并且修改存储在ACC中原本计算出错的余数,使其恢复正确。3.图中深灰色的最低一位就是最先参与运算的商,例如图中的例子,计算机会默认先商1,1乘以除数并被送入ALU中参与运算,同时ACC中的被除数也会被送入ALU中参与运算,加法器通过补码实现原码的减法运算(A - B = A +原创 2021-02-16 22:08:35 · 3148 阅读 · 1 评论 -
定点数的溢出判断
溢出判断:例如:(下图的数轴为补码及其对应的真值)例如,2 + 2,补码相加为010 + 010 = 100,其真值为-4,发生上溢。那么计算机是如何判断溢出的呢?(图中A、B为二进制数码)该表达式的本质:负 + 负 = 正 (或) 正 + 正 = 负下图展示了何为符号位的进位和最高数值位的进位:结果的双符号位中高位表示原本应该得出的正确符号,低位表示实际得出的符号。正确的符号为正号,但实际为负号,即为下溢;正确的符号为负号,但实际为正号,即为上溢。为什么是这样命名的呢原创 2021-02-04 23:33:20 · 3128 阅读 · 3 评论 -
原码和补码的乘法运算
《原码乘法》手动计算:计算机计算:为什么要叫原码的一位乘法呢?因为每次都只运算一个位,如:第一步:第二步:第三步:第四步:第五步:后面步骤重复,直到最后一步:最后的最后,还需要修改符号位:注意:如果是整数乘法,小数点应该位于灰色0前面。手动模拟计算机运算:...原创 2021-02-04 22:53:42 · 2653 阅读 · 0 评论 -
原码和补码的加减运算
原码的加减运算:补码的加减运算:溢出判断:例如:(下图的数轴为补码及其对应的真值)例如,2 + 2,补码相加为010 + 010 = 100,其真值为-4,发生上溢。那么计算机是如何判断溢出的呢?(图中A、B为二进制数码)该表达式的本质:负 + 负 = 正 (或) 正 + 正 = 负下图展示了何为符号位的进位和最高数值位的进位:结果的双符号位中高位表示原本应该得出的正确符号,低位表示实际得出的符号。正确的符号为正号,但实际为负号,即为下溢;正确的符号为负号,但实际原创 2021-02-04 01:23:51 · 6609 阅读 · 0 评论 -
移位运算
移位:通过改变各个数码位和小数点的相对位置,从而改变个数码位的位权。可用移位运算实现乘法、除法。原码的移位:定点整数右移:定点整数左移:总结:—————————————————————————————定点小数左移:定点小数右移:总结:—————————————————————————————反码的移位:正数:负数:...原创 2021-02-02 23:19:52 · 259 阅读 · 0 评论 -
定点数(原码、反码、补码、移码)
无符号数:原码(有符号数):例:十进制19.75可以表示成:原码表示的范围:反码:补码:移码:随着真值的增大,移码也是随之增大,因为这种特性,计算机可以通过这一点来比较两个数的大小,从最高位依次开始比较,哪一位先出现1,哪个数就比较大。(如果比较的两位都是1,则比较下一位。)小技巧:...原创 2021-01-28 23:49:29 · 10345 阅读 · 2 评论 -
循环冗余校验码(CRC码)
循环冗余校验码的思想:例题:注:产生的余数为R位(比除数少一位)二进制数。注:这里与海明码不同,余数转换成十进制后的数与出错位没有必然的联系。————————————————————————————————————————————————《模二运算》1、模二加的运算法则:0+0=0, 0 + 1 = 1, 1+ 0 = 1, 1+ 1 = 0理解:两个二进制数相加相减不考虑进位例:01 + 11 = 10,对于两个数的低位都是1,进行模二和为0,但是没有进位,所以高位的0 加1原创 2021-01-25 21:28:54 · 2869 阅读 · 5 评论 -
海明校验码
海明校验码设计思路:1.将信息位分k(k为正整数)组进行偶校验,那么就得出k个校验位2.且每个校验位都标注着是否出错和出错的位置——————————————————————————————————————————————————————————那么问题来了,应该分成几组呢?1.假设信息位有n位,校验位有k位,2.那么k个校验位就可以2^k种状态,3.信息位+校验位共n+k位,且每一位都可能会出错,这就说明出错的状态会有n+k种,所以就能得出2^k >= n + k,4.但是还有一种传输原创 2021-01-21 15:04:00 · 3312 阅读 · 1 评论 -
奇偶校验码
首先,要根据信息位算出校验位(通过异或运算:相同为0,不同为1):原创 2021-01-19 18:17:38 · 9964 阅读 · 1 评论 -
字符与字符串
ASCII码:规律:1.数字的高位4个二进制位是一样的,而低位刚好对应着8421码的0~9;2.大写的英文字母的高位前三个二进制位是一样的,而后面5位二进制数转换成十进制后刚好是1~26;3.小写英文字母与大写英文字母相同;4.所有的数字、大小写字母的ASCII码值都是连续的。汉字的表示和编码:字符串的存储:...原创 2021-02-18 20:12:13 · 123 阅读 · 0 评论 -
BCD码
十进制转换成二进制可以用数码位乘以位权的方式,但是这种转换方式太过于麻烦,而BCD码就是为了解决这种麻烦。BCD码的原理:用4个二进制位对应1个十进制位,因为4个二进制位可以表示16种状态,而这16种状态就足够用来表示十进制中0~9的数,还有6种冗余状态。8421码(有权码):因为4个二进制位的十进制表示范围是0~15,而十进制10到15的数无法映射出8421码,所以需要加一个6,这样的话这4个二进制数肯定会向高位进一个1,而低位留下的部分刚好是我们需要的个位的部分。余3码(无权码)..原创 2021-02-18 19:34:19 · 942 阅读 · 0 评论 -
进制转换
十进制:二进制:为什么n个二进制位能表示2^n中状态?(可用排列组合推出)任意进制 ➡ 十进制:二进制 ⬅➡ 八进制、十六进制(不够补0):十进制➡任意进制:整数部分:如果十进制转八进制或者十六进制的话可以选择先把十进制转成二进制,再由二进制转成八进制或者十六进制,因为这样计算量小一点;当然也可以选择由十进制直接转成八进制或者十六进制。小数部分:各进制的常见书写方式:(二进制为binary)真值和机器数:...原创 2021-02-18 17:31:19 · 176 阅读 · 0 评论 -
计算机语言
原创 2021-02-18 15:34:45 · 101 阅读 · 0 评论 -
计算机的性能指标
主存性能:CPU性能:例如:系统整体性能:(注:基准程序就相当于跑分软件)原创 2021-02-18 16:29:46 · 170 阅读 · 0 评论 -
认识计算机各个硬件部位
存储器:读操作:写操作(实线为数据线,虚线为控制线):运算器:控制器:计算机的执行过程:(注:寄存器外面加个括号,表示寄存器里面的内容;M(MAR)中的M表示主存储器,整个表示主存储器里面MAR寄存器这个地址所指明的存储单元里面的数据。)总结:...原创 2021-02-18 14:58:02 · 246 阅读 · 0 评论 -
计算机硬件的基本结构
早期冯诺依曼机的结构:世界上第一台计算机ENIAC,而冯·诺依曼就是这台计算机设计的一位顾问,这台计算机很大的一个缺点就是每一步的计算需要执行什么指令都需要程序员(操作员)们通过手动连接线缆的方式来告诉计算机,所以虽然这台计算机执行运算的速度很快,但是由于这些程序员们每一次都需要手动接线来告诉它下一步该怎么做,所以ENIAC的计算速度就被手工操作的耗时所抵消了,总的来说就是说一句做一句,效率很低。所以,为了解决这个问题,冯·诺依曼提出了存储程序的概念:(注:主存储器就是我们所说的内存)(注原创 2021-02-18 13:48:45 · 973 阅读 · 0 评论