- 博客(79)
- 收藏
- 关注
原创 02计算机组成原理-并行系统(下)
先给大家补一个进程和线程的概念,线程这个概念马上就会讲到了,因为这节课是操作系统的最后一节课。下节课就开始操作系统的学习。
2026-03-26 20:15:11
275
原创 02计算机组成原理-并行系统(上)
随着信息技术的飞速发展,人们对计算机系统处理能力的要求越来越高。气象、生物、医药、天文等领域的高性能计算,互联网以及移动通信应用领域的海量“大数据”处理,银行、保险、证券等大型数据库系统开发, 游戏、航空模拟等各种媒体处理软件方面的开发,都需要计算机系统具有极其快速的处理能力。采用传统的单处理器系统中的串行计算方式,远远不能满足现代社会实际应用问题对计算能力的需求。为了追求更高的计算性能,出现了各种不同的并行处理系统。
2026-03-25 20:00:06
336
原创 02计算机组成原理-I/O数据传送控制方式(下)
这里的1是上一节中第二部分程序中断的第二个知识点,现代的中断。这里的2对应上节课应该讲的第三种方式DMA方式。
2026-03-24 19:47:01
320
原创 02计算机组成原理-I/O数据传送控制方式(上)
假设CPU当前正在运行QQ这个程序,你要给你朋友发送消息,你要发送消息就得用键盘输入文字,而你打出来的文字是没有存在内存中的,是通过外部设备获取的,因此此时QQ会发生一个请求–启动键盘,启动键盘后把你输入的文字取走就发过去了,但是CPU的处理是很快的,但是打字是很慢的,怎么来缓冲这个速度差呢,通过上节课我们知道是先把外部设备的数据放在IO缓冲寄存器里然后再一起交给CPU中的寄存器。
2026-03-24 19:13:11
315
原创 02计算机组成原理-IO接口
外部设备种类繁多,且具有不同的工作特性,因而它们在工作方式、数据格式和工作速度等方面存在很大差异。此外,由于CPU、内存等计算机主机部件采用高速元器件,使得它们和外设之间在技术特性上有很大的差异,它们各有自己的时钟和独立的时序控制,两者之间采用完全的异步工作方式。例如,打印机的工作速度相对较慢,数据格式通常是特定的打印指令,而内存的工作速度极快,数据格式以二进制形式存储。为此,为了解决外设与主机之间的同步与协调、工作速度匹配以及数据格式转换等问题,需要相应的逻辑部件,即外设的 I/O 接口或 I/O 模块。
2026-03-22 19:52:29
360
原创 02计算机组成原理-外部设备及总线
输入输出(I/O)系统是计算机系统中一个重要的软硬件结合的子系统,是计算机架构中的核心组件,它负责管理和优化CPU、内存与外围设备间的数据交流。这个系统由硬件和软件两大部分构成:包括外部设备本身、它们的接口电路、I/O控制器以及驱动这些组件的软件。其主要职责在于有效管理信息的输入与输出,确保数据可以顺畅且高效地在不同系统组件之间流动。实现这一目标的关键在于构建一条高效的数据传输通道,连接主存储器与外部设备。同时,I/O系统必须能够理解并执行用户的I/O请求,将其转化为具体的设备控制指令。
2026-03-21 20:34:19
374
原创 02计算机组成原理-可信寄存器层
存储器这章最重要的还是前面讲的主存和Cache。这里讲的可信寄存器层和后面一节的虚拟存储器大家也需要了解,只是重要程度没有前面的高。这节讲的可信存储器就是在讲存储器的可信性,之前我们讲的都是关注效率但是我们对于硬件来说我们还得关心它是否能完成我们交给的工作。这就是可信性。从字面来讲,也就是值不值得信任。它包括可靠性 恢复性 维修性 耐久性 安全性等等。
2026-03-19 18:45:37
298
原创 02计算机组成原理-Cache的基本原理及直接映射(上)
时间局部性:某个数据项在被访问之后可能很快被再次访问的特性,即某个数据项在一个较短的时间间隔内很可能又被访问。空间局部性:某个数据项在被访问之后,与其地址相近的数据项可能很快被访问的特性。无论数据如何分层,数据的处理和交换过程都是两个层之间相互交换,不可能跨层交换,所以在描述的存储器层次结构中,“块”(Block)或"行"(Line)是数据传输的基本单位。当数据从一个层次迁移到另一个层次时,并不是以字节或者单个数据项为单位,而是以固定大小的数据块进行。
2026-03-15 20:10:31
400
原创 02计算机组成原理-异常及指令级并行
这些设计使得处理器能够在异常发生时,准确地识别异常指令,并将正确的PC值(即导致异常的指令地址)保存至EPC寄存器中,从而减轻了操作系统在异常处理上的负担,并提高了整体系统的确定性和效率。首先,通过增加流水线的阶段数量(即流水线深度),可以更细粒度地分解指令的执行过程,使得更多的指令在不同的执行阶段并行处理。正常来说程序就一直执行就行了,但是可能出现这种情况:在执行的过程中突然来了一个比较紧急的请求需要处理,这个时候就得去处理那个紧急的请求,此时就得暂停目前程序的执行,转而执行更高的紧急情况的代码。
2026-03-10 21:28:45
372
原创 02计算机组成原理-流水线冒险(上)
大家看下面这个图,比如说第一条指令是beq指令,假设需要跳转,那么正常情况下下一条指令的地址应该是算出来的,但是在上节课的理想情况,当第一条beq指令执行到第二个阶段的时候,第二条指令已经被读取出来了切实PC+4,这就产生了矛盾。再比如第一条指令是个存数指令,第二条指令是需要用到我们第一个存的数据,我们在第一条指令的第四个阶段才把数据存进去,还没写回到寄存器中,但是第二条指令第三个阶段就要用它,此时的数据是更新之前的数据。所以这里也产生了矛盾。
2026-03-09 20:10:03
392
原创 02计算机组成原理-流水线技术概述
流水线(pipelining) 技术是一种在处理器设计和其他领域中广泛采用的并行处理技术,其核心思想是在程序执行期间,通过将指令处理过程分解为多个连续的阶段(如取指、译码、执行、访存和写回等),使得多条指令能够在不同阶段上同时执行,尽管每个单独的指令仍然按照顺序完成这些阶段。这种重叠执行的方式显著提高了处理器的吞吐量和效率,允许在一个时钟周期内启动多条指令的不同部分,从而加速了整体的计算过程。所谓并行,字面意思上就是两条指令一起执行,串行就是执行完一条指令再去执行下一条指令,那如何去执行这个并行呢?
2026-03-07 21:23:30
401
原创 02计算机组成原理-实现简单的MIPS子集(下)
控制单元的功能我们已经在之前的表中定义好了,其输入为 6 位操作码 Op[5:0], 输出为控制信号。这样,可以基于操作码的二进制编码为每个输出建立一张真值表:由五个信号来得到最后的六个操作码,所以其中的门电路是很复杂的,大家知道这个门电路是把输入转换成输出就OK了,这里就不展示。图中画叉的地方是不需要关心其值的。但其实大家可以发现,只有R型指令op5和op2全为0的时候才为R型指令所以我们画电路的时候用一个非op5与上非op2如果为1则说明是R型指令,这就简化了电路。
2026-03-06 21:52:45
331
原创 02计算机组成原理-建立一个数据通路
通过之前的学习,我们知道CPU是分两部分的,一部分是控制器一部分是运算器,运算器又叫数据通路。要想看CPU张啥样就要看这两部分分别张啥样,今天我们先来看数据通路。
2026-03-04 22:47:21
375
原创 02计算机组成原理-逻辑设计的一般方法
上一节博客我们知道逻辑电路中分为两类:组合逻辑电路和时序列逻辑电路,这节课我们就来具体看一下时序逻辑电路相关的内容在MIPS实现中,数据通路的功能部件包括两种不同类型的逻辑单元:处理数据值的单元和存储状态的单元。处理数值的单元就是前面讲的组合逻辑单元而存储状态的单元就是时序电路:通过组合处理数据值的单元和存储状态的单元,MIPS处理器可以执行复杂的指令序列,实现各种计算和控制任务。这些单元之间的协作和数据流动构成了MIPS处理器的数据通路。
2026-03-03 22:10:09
393
原创 02计算机组成原理-逻辑设计基础
逻辑运算单元其实就是与操作和或操作,所以需要一个与门和或门,如果进行与运算就把A输入到与门把B输入到与门同理如果进行或运算就把A输入到或门把B输入到或门,那到底是实现与运算还是或运算我们通过给一个信号,图中上面的“操作”两字来让ALU知道,通过对指令的操作数解码如果信号给的是0就输出与运算的结果,如果给的是1就给出或运算的结果。例如,如果知道对于所有输入A、B、C取值的情况下,只要A为0,输出始终为0,那么真值表就无需列出所有A=0的情况,只需列出A=1时的各输入组合及其对应的输出值即可。
2026-03-02 21:31:30
843
原创 02计算机组成原理-补码乘除法
这节课来补充一下之前落下的坑,补码的Booth乘法以及不恢复余数法,我们知道之前学的补码的乘法有四种情况,均为正,均为负,被乘数为正时乘数为负,被乘数为负时乘数为正,那有没有一种方法把这四种情况统一起来呢?今天我们来介绍一下。
2026-02-26 17:54:09
992
原创 02计算机组成原理-浮点数的加减运算
首先来看十进制的浮点数的加减:不能将0.123和0.456直接相加,因为阶数不一样,要把阶数调整为相同(往大的调整)之后再相加。结果的尾数为两个尾数之和,阶数为调整之后的阶数。所以,浮点数加减法运算其实很简单,总共就5步:对阶、尾数运算、规格化、舍入、溢出判断。x+(-)y=z为例,基于IEEE754标准 32位短浮点数。
2026-02-25 17:25:44
671
原创 02计算机组成原理-浮点数的表示
我们知道整数在计算机中存储的形式是以其二进制的补码形式。大家在编程的时候有没有遇到这种现象:比如有一个小数要保留4位的小数,并且尽量不损失精度,我们可以把这个小数乘以10000,然后最后输出答案的时候就除以10000,但对于有些数据是不对的,最后除完后数据就不是原来的那个数了,因为产生了精度丢失,其实这和我们的浮点数的表示方法是有关联的。
2026-02-24 14:20:47
937
原创 02计算机组成原理-定点数除法
首先通过十进制数的长除来回忆除法运算:十进制下1001 010 除以1000a÷b=c…d,被除数÷除数=商…余数除法的本质就是被除数中有多少个除数,有多少个就不断地减去除数去求每一位,这样我们就可以把除法拆为减法的过程。除法中的两个源操作数,称为 被除数 和除数 , 结果称为商 , 还有一个第二结果,称为余数。用一种方式来表达它们之间的关系(这种方式可以更好看出除法的本质):被除数 = 商 x 除数 + 余数例如:91 = 224+338 = 66+2这里余数要小于除数。
2026-02-22 19:07:21
688
原创 02计算机组成原理-定点数乘法
先来看一下十进制下的乘法运算,两个十进制的数a,b,a*b=c,这个a叫做被乘数,b是乘数,c是积。假设a是n为数,b是m位数(n>m),c的位数最少得是n+1位,最多为n+m位。
2026-02-20 11:24:43
932
原创 02计算机组成原理-定点数加减法
现在来看一个减法41-26,假设是6位的固定位数,41的二进制是101001,26的二进制是011010,注意位数不够的时候往前面借是借的2,就像十进制位数不够往前面借的是10,转为十进制后001111是15,说明无符号数的减法就跟我们十进制的减法是类似的。总结原理,如果是正数的情况,因为符号位都是0,所以如果溢出,即最高位产生进位,那么一定会是进0,那这个时候就看次高位,如果得到的是0说明没有溢出,如果是1说明符号位从0变为了1,即两个正数相加得到了1,故溢出。一般最后的那个0会省略掉。
2026-02-19 21:43:07
928
原创 02计算机组成原理-32位立即数与寻址
26 位只是形式地址的字段长度(指令里存储的原始数据),而 MIPS 的内存地址是 32 位(CPU 能访问的地址空间是 32 位),所以整个寻址过程的最终目标,就是把 “26 位形式地址” 和 “PC+4 的高 4 位” 组合成完整的 32 位有效地址——26 位是 “原料”,32 位是 “成品”。有的同学可能直接写成这样了,但事实上这个+1是加的一条指令的长度,而这里一条指令长度为32位,按字节编址,也就是说8位一个地址,那就说明跨过了4个地址,所以真正的下一条指令的地址是0x0000 0008。
2026-02-11 22:30:15
676
原创 02计算机组成原理-指令格式
然后每五位就是一个操作数,第一个五位就是第一个源操作数25-21(由于是源操作数是放在寄存器里面的,这五位就存放的是第一个源操作数的寄存器对应的二进制的地址,后同),第二个五位就是第二个源操作数20-16,第三个五位是目标操作数,还剩下五位就是用来存放位移量的,如果有移位指令就会用这五个位置,对加法操作来说没有移位操作那就写0就可以了。这一革命性的设计使得计算机能够在无需硬件改动的情况下,仅通过改变存储在内存中的程序就可实现不同的计算任务,从而释放了计算机的巨大潜力,为现代信息技术的发展奠定了基础。
2026-02-08 22:53:46
991
原创 02计算机组成原理-逻辑运算符与字符表示
来做一道例题巩固一下上堂博客学的:十进制的数-66,按其补码的形式存放在一个8位的寄存器中,问该寄存器的内容是?-66我们可以看成-(64+2),所以-66的原码是:1100 0010,由于是负数,我们对负数的补码操作是原码的符号位不变,其余数值位取反加1得:1011 11101011=1+2+8=B(十六进制下)1110=E,所以应该是BEH。
2026-02-07 22:04:13
977
原创 02计算机组成原理-有符号数和无符号数
那也就是说计算机里硬件一次性处理的数据的位数是固定的,假设某一个处理加法的硬件一次性处理硬件的位数是4位,那现在有两个4位的无符号数相加,我们看这么一个例子,1111(15)+0001(1)—>结果确实10000,这个算出来的前提是这个处理加法的硬件一次性只能处理的位数是4位,超过4位,这个硬件会把前面的位数直接丢弃了,就变成了0000(0)。在原码加减运算中,对于两个不同符号数的加法(或同符号数的减法),先要比较两个数的绝对值大小,然后用绝对值大的数减去绝对值小的数,最后还要为结果选择合适的符号。
2026-02-06 22:09:51
996
8
原创 02计算机组成原理-计算机硬件的操作及操作数
以下是我们这一章大概要学的内容:通过之前的学习,我们大概知道,指令就是用来控制计算机大致做什么操作的计算机能做的操作大部分都是一些运算的操作比如说一些加减乘除,一些逻辑运算。那既然要进行运算操作,那就得有一些数据参与进来进行操作,所以在我们讲指令格式之前,先把指令能够操作的操作数先给大家讲一下,比如说指令参与某一个操作的一些数据哪来的,逻辑运算用哪些运算,算术运算用哪些,小数怎么表示,正负数怎么表示,“”前面就是指令中的操作数的有关内容怎么处理字符。这一章除了理解指令还要理解存储程序的思想。
2026-02-03 21:27:57
764
原创 02计算机组成原理-计算机的性能
来看下面这个例子:现在有三个任务,每个任务从开始到完成需要2秒,我们用6秒中的时间来完成这3个任务,采取并发的思想,在第一秒内我开始执行任务1,二秒内我开始执行任务2,三秒内我开始执行任务3,在第四秒内我又执行任务1,系统对任务1的响应时间是4秒,它不会管你中间是否做了其他任务,只关注从开始到结束一共用了多久,进而导致响应时间下降了。我们作为普通用户我们关心的是响应时间,相应时间内各个硬件的工作快慢我们不可见也不太关心,我们主要关心整体时间,但是对于计算机的设计者来说,那么我们就得去关心计算机硬件的效率。
2026-01-29 22:28:41
889
原创 02计算机组成原理-计算机硬件组成
显示器:I/O设备中的输出了,就是给我们呈现出画面的东西。一般显示器我们用的是LCD液晶显示。最开始的显示器是没有触摸功能的,随着时代的发展,我们已经不满足于用鼠标或者键盘和计算机交互了,后面我们就想能不能直接触摸操作,所以后来就出现了触摸屏。触摸屏:平板电脑和智能手机则是使用了触摸屏代替键盘鼠标。屏幕本身是玻璃,触摸屏技术本质上就是在这个玻璃上覆盖一层透明的导体,不影响视线,因为人是微导体,可以通过电流,当手指触摸到导体就会产生微小电流从而导致电容发生变化,所以手机识别到了操作。
2026-01-26 23:12:13
704
原创 02计算机组成原理-计算机概述
我们公认的世界上第一台计算机是ENIAC计算机,这是用来军事使用的,这个时期的计算机是电子管计算机,因为是电子管计算机所以说做的比较庞大,一台电脑可能有一个房子那么大,但存储空间少得可怜,且运行时间久了,散热没处理好容易炸。最早这个计算机运行的时候程序和运算是分开的,你想要计算机干事就得给他下指令(程序),程序是放在外部电路里面的,所以当你想要计算机计算的时候需要人工去接电路,这个过程是很耗时的,等到接完之后,可能几分钟就算完了,这样问题就出现了,下达指令的时间太长了。
2026-01-19 22:52:31
627
原创 01数据结构-串和KMP算法
串是由0个或多个字符组成的有序序列。串中字符的个数称为串的长度,含有0个元素的串叫空串。在C语言中,可以用如下语句定义一个名为str的串。C语言定义了’\0’作为字符串的技术标志,但在描述串的长度时,需要通过扫描整个串才获得,时间复杂度为O(N),不如额外定义一个变量专门来存储串的长度,这样求串的长度的时间复杂度为O©的操作了。不同的编程语言,是否用’\0’作为串的结束标语,是没有定论的,可以通过length来约束空间的长度也会更通用。
2025-09-19 17:25:57
887
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅