计算机系统基础知识

目录

1.计算机系统硬件基本组成

2.中央处理单元

        2.1CPU的功能

        2.2CPU的组成

        2.3多核CPU

3.数据表示

3.1原码,反码,补码,移码

4.校验码

4.1奇偶校验码

4.2海明码

4.3循环冗余校验码


1.计算机系统硬件基本组成

        计算机系统是由硬件和软件组成的,它们协同工作来运行程序。

        计算机的基本硬件是由运算器,控制器,存储器,输入设备和输出设备5大部件组成的。

运算器,顾名思义,能完成各种算术,逻辑运算;存储器使用来存放程序,数据及中间结果;输入设备用于输入原始数据及各种指令,比如电脑的键盘,鼠标;输出设备用于输出计算机运行的结果,比如:电脑的显示屏。

2.中央处理单元

        2.1CPU的功能

                CPU功能有:程序控制,操作控制,时间控制,数据处理。

                程序控制:CPU通过执行指令来控制程序的执行顺序。

                操作控制:一条指令功能的实现需要若干操作信号配合来完成,CPU产生每条指令的操作信号并将操作信号送往对应的部件,控制相应的部件指令的功能要求进行操作。

                时间控制:CPU对各种操作进行时间上的控制,即指令执行过程中操作信号的出现时间,持续时间及出现的时间顺序需要进行严格控制。

                数据处理:CPU通过对数据进行算术运算及逻辑运算等方式进行加工处理。

                举个例子:一个计算两个数的平均值的程序。这个程序涉及到CPU的四个功能。

               程序控制: CPU按照指令的顺序逐条执行程序。例如,首先执行加载操作数的指令,然后执行加法指令,最后执行除法指令。程序控制确保了指令的顺序执行。

                操作控制: CPU根据指令的操作码进行相应的操作控制。例如,加载指令会将数据从内存加载到寄存器中,加法指令会将寄存器中的数据相加,存储指令会将结果存储回内存。

                时间控制: CPU通过时钟信号来控制指令的执行时间和顺序。时钟信号确定了指令的执行速度和时序,确保指令按照正确的顺序和时序执行。

                数据处理: CPU执行各种算术和逻辑运算来处理数据。在这个例子中,CPU执行加法运算来计算两个数的和,执行除法运算来计算平均值,确保数据得到正确的处理和计算。

          

        2.2CPU的组成

                CPU是由控制器,运算器,寄存器组和内部总线等部件组成的。

                1)运算器

                        (1)组成:运算器由算术逻辑单元,累加寄存器,数据缓冲寄存器和状体寄存器组成的。

                        功能:完成计算机的各种算术和逻辑运算。

                        (2)算术逻辑单元(ALU)

                        功能:负责处理数据,实现数据的算术运算和逻辑运算

                         (3)累加寄存器(AC)

                        功能:为ALU提供一个工作区,存放运算结果。

                           (4)数据缓冲寄存器(DR)

                        功能:作为CPU和内存,外部设备之间数据传送的中转站;作为CPU和内存,外围设备之间操作速度上的缓冲;在单累加器结构的运算器中,数据缓冲寄存器还可以兼作为数寄存器。                

                          (5) 状态条件寄存器(PSW)

                        功能:保存由算术指令和逻辑指令运行或者测试的结果建立的各种条件码内容,主要分为状态标志和控制标志。

          举个例子:一个计算两个数之和并检查结果是否为负

        算术运算单元: 这个单元负责执行基本的算术运算,如加法、减法、乘法、除法。在这个例子中,我们要计算两个数之和。因此,算术运算单元将执行加法操作。

        累加寄存器器: 累加器是存储算术运算结果的主要寄存器。它在运算中扮演着关键角色。算术运算单元将加法结果存储到累加器中,以供后续操作使用。

        数据缓冲寄存器: 运算器中通常包含多个寄存器,用于临时存储数据。在这个例子中,我们可以假设两个输入数分别存储在寄存器A和寄存器B。加法运算单元将从这两个寄存器中读取数值,进行运算。

       状态条件寄存器: 运算器通常有状态标志位,用于指示运算的结果状态,如溢出、负数、零等。在这个例子中,我们可以检查计算的结果是否为负数。如果结果是负数,那么状态标志位中的"负数标志"将被设置。

                          

                2)控制器

                        (1)指令寄存器(IR)

                                功能:存储当前正在执行的指令。

                        (2)程序计数器(PC)

                                功能:存储下一条将要执行的指令的地址。

                        (3)地址寄存器(AR)

                                功能:保存当前CPU所访问的内存单元的地址

                        (4)指令编译器(ID)

                                功能:对指令中的操作码字段进行分析解释,识别该指令规定的操作。

                 举个例子:执行一系列指令来计算两个数字的和,并将结果存储到内存中

                PC(程序计数器):程序计数器负责跟踪CPU应该执行的下一条指令的内存地址。在这个例子中,PC一开始指向第一条指令的位置,并在每次指令执行后自动增加以指向下一条指令。

                IR(指令寄存器):指令寄存器用于存储当前正在执行的指令。当PC指向某个指令时,CPU将该指令从内存中读取到IR中。比如,PC指向第一条指令时,该指令会被加载到IR中。

                ID(指令译码器):指令译码器负责解释IR中的指令,以便CPU知道要执行什么操作。在这个例子中,ID将指令解码成操作代码和操作数,以便CPU执行对应的操作。比如,如果IR中包含"LOAD A",ID会解码为"将数值A加载到寄存器"。

                AR(地址寄存器):地址寄存器用于存储内存操作所需的地址。当CPU需要从内存中读取数据或将数据写入内存时,AR会存储相应的内存地址。在这个例子中,最后一条指令是将结果存储到特定的内存地址,这个地址会被加载到AR中,以确保数据被写入正确的位置。

                        

        2.3多核CPU

                

多核 CPU 拥有多个核心,每个核心都可以独立执行指令和处理数据。相比之下,单核 CPU 只有一个核心。多核 CPU 在性能上有一些优势,但也有一些区别:

        并行处理能力:多核 CPU 可以同时执行多个任务,每个核心处理一个任务,从而提高系统的整体性能。单核 CPU 则需要在不同任务之间切换执行,无法同时处理多个任务。

        多线程处理:多核 CPU 可以更好地支持多线程应用程序,每个线程可以分配到不同的核心上并行执行,提高应用程序的响应速度和效率。单核 CPU 虽然也支持多线程,但只能通过时间片轮转的方式在单个核心上执行多个线程,效率较低。

        能耗和散热:多核 CPU 在高负载情况下可能消耗更多能量并产生更多热量,因为多个核心同时工作会导致整体功耗增加。相比之下,单核 CPU 在负载较低时可能更节能,因为只有一个核心在工作。

        成本和复杂性:多核 CPU 的设计和制造成本通常较高,因为需要更复杂的硬件和更精密的制造工艺来支持多个核心。单核 CPU 制造成本相对较低,因为只需要一个核心。

        应用场景:多核 CPU 更适用于需要高性能和并行处理能力的应用场景,比如高性能计算、大数据处理和科学计算。单核 CPU 则更适用于一般的办公和日常应用,因为对性能要求不高。

3.数据表示

各种数值在计算机中表示的形式成为机器数,机器数采用的是二进制计数制,数的符号用0和1表示。机器数对应的实际数值称为数的真值。

机器数由无符号和带符号数之分。无符号表示正数,在机器数中没有符号位,对于带符号数,机器数的最高位表示正,负的符号位,其余的位则表示数值。

然而为了方便运算,带符号的机器数可采用原码,反码,补码等编码方法,这种编码方法称为马制。

3.1原码,反码,补码,移码

原码

原码是计算机中用于表示有符号整数的一种方法。在原码表示法中,一个整数由两部分组成:符号位和数值位。

比如:假设我们使用8位的原码表示整数,其中最高位是符号位。那么,00000101表示的是正数5,10000101表示的是负数5。

原码的优点是简单直观,易于理解和实现。但是,原码表示法存在一个问题,即0有两种表示形式:+0和-0。这会导致在进行数值运算时需要特殊处理0的情况,增加了复杂性。

反码

反码是计算机中表示有符号整数的一种方法。在反码表示法中,一个整数同样由两部分组成:符号位和数值位。正数的反码不变,负数的反码,最高位为1,其余位按位取反。

比如:对于8位表示的反码,+5的反码是00000101,而-5的反码是11111010。

反码的优点是相对简单,负数的表示形式直观,不需要额外的特殊处理。但是,与原码一样,反码也存在0的两种表示形式:+0和-0,导致在数值运算中需要特殊处理0的情况。

补码

补码是计算机中表示有符号整数的一种方法,也是最常用的一种表示法。在补码表示法中,一个整数同样由两部分组成:符号位和数值位。正数的补码与原码是一样的,负数的表示形式是其对应正数的补码加1

例如,对于8位表示的补码,+5的补码是00000101,而-5的补码是11111011=(-5的反码)+1。

补码的优点是在表示负数时比原码和反码更加简洁和一致,不需要额外的特殊处理。

移码

移码通常是指计算机中的二进制数的表示方法之一。它是一种用于表示有符号整数的方法,通过将数值的最高位作为符号位,而其他位表示数值的绝对值。在移码表示法中,正数的移码和其二进制表示相同,而负数的移码是将其绝对值的二进制表示按位取反(即0变为1,1变为0),然后再加1。

优点:正这种方法可以让计算机在进行加法和减法运算时使用相同的硬件逻辑,从而简化了运算的实现。

例如,假设我们使用8位移码表示有符号整数:

  • 正数 5 的二进制表示是 00000101,它的移码也是 00000101。
  • 负数 -5 的绝对值的二进制表示是 00000101(与正数 5 相同),取反后得到 11111010,然后加 1 得到移码表示 11111011。

通过这种表示方法,我们可以在计算机中方便地进行有符号整数的加减运算。

最后我们通过一个简单的例子来说明原码、反码、补码和移码的应用。

假设我们使用一个8位的有符号整数来表示温度值,其中最高位表示符号位,0表示正数,1表示负数。

现在,我们要表示温度为 -10 摄氏度。

  1. 原码:最简单直观的表示方式。对于负数,最高位为1,其余位表示数值的绝对值。所以 -10 的原码为 10001010。

  2. 反码:反码是原码的按位取反。对于负数,最高位为1,其余位按位取反。所以 -10 的反码为 11110101。

  3. 补码:补码是原码加1的结果。对于负数,最高位为1,其余位按位取反,然后加1。所以 -10 的补码为 11110110。

  4. 移码:移码是补码的符号位取反,其余位不变。所以 -10 的移码为 01110110。

这就是 -10 摄氏度在原码、反码、补码和移码下的表示。在实际应用中,计算机通常会使用补码来表示有符号整数,因为补码可以简化加法和减法运算的实现。

4.校验码

定义:是一串附加在数据位后面,对数据位起校验作用的码。

作用:是对数据传送的正确性提供按位的检测。

分类:奇偶校验码,海明码,循环冗余校验码

4.1奇偶校验码

工作机理:通过计算数据中1的个数是奇数还是偶数来确定校验位,是最简单的错误检测码。有奇校验和偶校验两种。

举个例子

     1.原始数据:10110

     2.计算1的个数:在原始数据10110中,1的个数是3,这是奇数。

     3.添加校验位:由于我们使用的是奇校验,并且原始数据中的1的个数已经是奇数,所以校验位应该是0,以保持整个数(包括校验位)中1的个数位奇数。

     4.完整的数据:101100

现在,假设在传输过程中,数据 101100 的第三位(从右往左数)发生了错误,由1变为了0,那么接收到的数据就是 100100

现在,假设在传输过程中,数据 101100 的第三位(从右往左数)发生了错误,由1变为了0,那么接收到的数据就是 100100

       1.接收到的数据100100

       2.计算1的个数:在接收到的数据 100100 中,1的个数是2,这是一个偶数。

       3.检测错误:由于我们使用的是奇校验,并且接收到的数据中1的个数是偶数,这表明数据在传输过程中发生了错误

4.2海明码

海明码(Hamming Code)是一种可以纠正一位差错的编码。它通过在信息位中增加冗余位(也称校验位)来实现错误的检测和纠正。

设数据位是n位,校验位是k位,2^k-1 >= n+k。

海明码的编码规则如下:

注:校验位用符号P表示,数据位用符号D表示,海明码用符号H表示,_i表示下标。

假设有k个校验位,n个数据位,则海明码就有(n+k)个。

(1)P_i在海明码的第2^(i-1)位置,即H_j = P_i,j=2^(i-1),数据位则依照次序从低到高占据海明码中剩下的位置。

(2)海明码中的任何一位都是由若干个校验码来校验的。有以下的对应关系:被校验的海明码的下标等于所有参与校验该位的校验码的下标之和,二校验位由自身校验。

举个例子

假设我们有8位数据位 D7 D6 D5 D4 D3 D2 D1 D0,值为 1011 0101。我们将使用4位校验位 P4 P3 P2 P1

1)确定D与P在海明码中的位置,如下所示:

H12    H11    H10    H9    H8    H7    H6    H5    H4    H3    H2    H1    
D7      D6      D5      D4    P4    D3     D2    D1    P3   D0    P2    P1    

P的位置是根据(1)的公式来求得的,当i = 1时,j = 2^(i-1) = 1,所以P1 = H1,以此类推;D的位置不需要算,只需要从低到高占据海明码剩余的位置。

所以P1 = 1⊕0⊕0⊕1⊕0=0,P2= 1⊕1⊕0⊕1⊕0=1,P3 = 0⊕1⊕0⊕1=0,P4=1⊕1⊕0⊕1=1。

注:⊕这个符号叫异或运算符,它的逻辑是:如果两个值不同,则为真,反之,亦然。比如:1⊕1=0,0⊕1 = 1,0 ⊕ 0 = 0.

4.3循环冗余校验码

循环冗余校验码(CRC,Cyclic Redundancy Check),简称循环码,是一种常用的、具有检错、纠错能力的校验码,在早期的通信中运用广泛。循环冗余校验码常用于外存储器和计算机同步通信的数据校验。

RC校验码的工作原理是这样的:

  1. 发送方:当你准备发送一些数据时(比如一个文件或一个数据包),你会首先计算这些数据的一个特殊“指纹”或“校验码”。这个校验码是通过将数据与一个预先设定的“生成多项式”进行除法运算得到的余数。然后,你会将这个校验码附加到原始数据的后面,一起发送给接收方。
  2. 接收方:当接收方收到数据后,它会用同样的“生成多项式”去除以接收到的数据(包括校验码)。如果余数为0,那么说明数据在传输过程中没有出错;如果余数不为0,那么说明数据在传输过程中出现了错误。

举个例子

假设你要发送的数据是“101011”(二进制),而你的生成多项式是“10011”(也是二进制,这里只是一个简化的例子)。

  1. 发送方:首先,将你的数据“101011”后面添加4个0(因为你用的是一个5位的生成多项式,所以添加4个0),得到“1010110000”。然后,用生成多项式“10011”去除这个数,得到的余数是CRC校验码。在这个例子中,我们假设余数是“0010”(这只是一个假设的余数,实际的计算可能会有所不同)。所以,发送方实际发送的数据是“1010110010”(原始数据后面附加了CRC校验码)。
  2. 接收方:当接收方收到“1010110010”后,它会用同样的生成多项式“10011”去除这个数。如果余数为0,那么说明数据在传输过程中没有出错;如果余数不为0,那么说明数据在传输过程中出现了错误。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值