学习步骤及分类总结:
我们常用的进制包括:二进制、八进制、十进制与十六进制。
以下大致列举相互转换的方式:
二转八(小数点向外三位一运算):
1011101.101 = 001 011 101. 101 = 135.5
11010111.0100111 = 011 010 111 . 010 011 100 = 327.234
-
二转十(乘以2的次方):
1011101.101 = 1+4+8+16+64+0.5+0.125 = 93.625
-
二转十六(小数点向外四位一运算):
1011101.101 = 0101 1101 . 1010 = 5 13 . 10 = 5D.A
八转二:
55.3 = 101 101 。 011 = 101101.011
-
八转十(乘以8的次方):
55.3 = 5+40+0.375 = 45.375
-
八转十六(八转二,二转十六):
八转二 55.3 = 101101.011 二转十六 0010 1101 . 0110 = 2 13 .6 = 2D.6
十转二(除二取余):59.25 = 111011.01
-
十转八(除八取余):3459.25 = 6603.2
-
十转十六(除十六取余):273459.25 = 42C33.4
十六转二:
39C.D8 = 3 9 12 . 13 8 = 0011 1001 1100 . 1101 1000 = 1110011100.11011
-
十六转八(十六转二,二转八):
39C.D8 = 1110011100.11011 = 001 110 011 100 . 110 110= 1634.66
-
十六转十(乘以16的次方):
39C.D8 = 3 9 12 . 13 8 = 12+144+768+0.8437 = 924.8437
以上是各进制之间大致的转换,具体内容不做陈述。
概念:数在计算机中的表示形式统称为机器数。计算机中处理数据及运算都是采用二进制,通常规定机器数用八位二进制表示。实用的数据有正数和负数,因为计算机只能表示0、1两种状态,数据的正号“+”或负号“-”,在计算机里就用一位二进制的0或1来区别,通常放在最高位,成为符号位。 符号位数值化之后,为能方便的对机器数进行算术运算、提高运算速度,计算机设计了多种符号位与数值一起编码的方法,最常用的机器数表示方法有:原码、反码、补码和移码,下面就分别介绍一下它们的表示方法。
记住口诀:
已知补码求原码:
最高位如果是1的话(负数),那么除了最高位之外的取反,然后加1得原码。
最高位如果是0的话,不变,正数的补码就是他的原码。
浮点数是一种 公式化 的表达方式,用来近似表示实数,并且可以在表达范围和表示精度之间进行权衡(因此被称为浮点数)。
浮点数通常被表示为:
N=M×R^E
比如: 123.45=1.2345×10^2
其中,M(Mantissa)被称为浮点数的 尾数 ,R(Radix)被称为阶码的 基数 ,E(Exponent)被称为阶的 阶码 。首先进行对阶,阶码小的向阶码大的对齐。(尾数是小数)
计算机中一般规定R为2、8或16,是一个确定的常数,不需要在浮点数中明确表示出来。
因此,在已知标准下,要表示浮点数:
逻辑运算符:与,或,非,异或
与运算(&)
进行运算的两个数据,按二进制位进行“与”运算。
规则:0&0=0; 0&1=0; 1&0=0; 1&1=1;
即: 两位同时为“1”,结果才为“1”,否则为0
或运算(|)
进行运算的两个数据,按二进制位进行“或”运算。 运算规则:0|0=0; 0|1=1; 1|0=1; 1|1=1;
即 :参加运算的两个对象只要有一个为1,其值为1。
非运算:~
1取0,0取1 ~1 = 0, ~0 = 1 ~(10001) = 01110
异或运算(^)
参加运算的两个数据,按二进制位进行“异或”运算。
运算规则:0^0=0; 0^1=1; 1^0=1; 1^1=0;
即:参加运算的两个对象,如果两个相应位为“异”(值不同),则该位结果为1,否则为0。
考点:交换两个变量的值(不借助第三个变量)
使用异或运算符:
例:a=6, b=5
核心代码:
(1)a = a ^ b;
(2)b = a ^ b;
(3)a = a ^ b;
在此我解释下,我们知道,两个相同的数异或之后结果会等于 0,即 a ^ a = 0。并且任何数与 0 异或等于它本身,即 a ^ 0 = a。
CPU是一台计算机的运算核心和控制核心。
一、 运算器(算术逻辑单元ALU、累加寄存器、数据缓冲寄存器、状态条件寄存器)逻辑、算术运算。
二、控制器(程序计数器PC、指令寄存器IR、指令译码器ID、地址寄存器AR、时序产生器、操作控制器),是发布命令的决策机构,完成协调和指挥整个计算机系统的操作。不仅保证指令的正确执行,还要能够处理异常事件。
主要功能:从内存中取出一条指令,并指出下一条指令在内存中的位置,对指令进行译码或测试,并产生相应的操作控制信号,以便启动规定的动作,指挥并控制CPU、内存和输入输出设备之间数据的流动。
三、寄存器组:可分为专用寄存器和通用寄存器。运算器和控制器中的寄存器是专用寄存器。它是CPU内部的临时存储单元,临时存放一些相关的数据。既可以存放数据和地址,也可以存放控制信息或CPU工作时的状态。CPU中的寄存器通常分为(存放数据的寄存器、存放地址的寄存器、存放控制信息的寄存器、存放状态信息的寄存器和其他寄存器)。
四、 内部总线:各部件间信息的传递。
五、
CPU和内存是计算机中最重要的两个组件,CPU工作需要知道指令或数据的内存地址,我们可以了解一下内存工作原理。
寻址:寻找操作数的地址或下一条将要执行的指令地址。数据和指令一般都需要存放在一些存储器的存储单元中,存储器对这些存储单元进行编号,这些编号就是数据和指令的地址,如果在应用中需要用到这些数据或指令时,就通过它们的地址到存储器中去寻找。
9种常用寻址方式
R=寄存器,E=有效地址,S=操作数,(A)=A中的内容,代码不特别说明表示8086汇编语言,PC=程序计数器(指向当前指令的下一条)
1.隐含寻址
含义:操作数隐含的由累加器给出。(即某指令由固定的操作数,不需要给出)
例子:8086汇编语言 CWD;把AX中的内容按符号位拓展成DX,AX双字
2.立即寻址
含义:指令中直接给出相应的操作数。不是操作数地址,而是操作数本身。
例子: MOV AX,1234H;——1234H就是采用立即寻址
3.寄存器直接寻址(通用寄存器组中直接存放操作数)
含义:指令中给出寄存器号R,操作数存放在R中 E=R,S=(E)=( R )
例子:MOV AX,BX——操作数在BX中
4.寄存器间接寻址(通用寄存器组中存放操作数地址,主存中存放操作数)
含义:指令中给出寄存器号R,R中存放操作数的有效地址 E=( R ),S=(E)=(( R ))
例子:MOV AX,[SI]
5.直接寻址
含义:指令中给出操作数的有效地址,给出操作数在内存的地址。 E=A,S=(E)=(A)
例子:MOV AX,[1234H]
6.间接寻址
含义:指令中给出存放有效地址E的存储单元地址。 E=(A),S=(E)=((A)) 理论上讲可以多次间接寻址,但大多数计算机只允许一次(由于A的寻址范围不足以覆盖整个存储空间)
7.相对寻址
含义:指令中给出相对于PC的偏移量A E=(PC)+A,S=(E)=((PC)+A)
注:A是个带符号数,一般用补码表示,若A的位数与PC不一致,需要带符号填充。
8.基址寻址
含义:指令中给出相对于基址寄存器R的偏移量 E=( R )+A,S=(E)=(( R )+A)
注:A是个带符号数,一般用补码表示,若A的位数与R不一致,需要带符号填充。
9.变址寻址
含义:指令中给出相对变址寄存器R的偏移量 E=( R )+A,S=(E)=(( R )+A)
注:A是个带符号数,一般用补码表示,若A的位数与R不一致,需要带符号填充。
设定机器字长位n,A的位数位m
寻址方式 | 寻址大小 |
---|---|
直接寻址 | 2m-1 |
寄存器间接寻址 | 2n-1 |
间接寻址 | 2n-1 |
相对寻址 | 2n+2m-2 |
基址寻址 | 2n+2m-2 |
变址寻址 | 2n+2m-2 |
CISC(Complex Instruction Set Computers,复杂指令集计算机),以Intel,AMD的X86
CPU为代表。基本思想:进一步增强原有指令的功能,用更为复杂的新指令取代原先由软件子程序完成的功能,实现软件功能的硬件化,导致机器的指令系统越来越庞大而复杂。这种计算机所支持的指令系统趋于多用途、强功能化。指令系统围绕着缩小与高级语言的语义差距以及有利于操作系统的优化而设计。
RISC(Reduced Instruction Set Computers,精简指令集计算机),以ARM,IBM
Power为代表。随着VLSI(超大规模集成电路)技术的发展产生。RISC的设计初衷针对CISC CPU复杂的弊端,选择一些可以在单个CPU周期完成的指令,以降低CPU的复杂度,将复杂性交给编译器。基本思想:通过减少指令总数和简化指令功能,降低硬件设计的复杂度,使指令能单周期执行,并通过优化编译提高指令的执行速度,采用硬布线控制逻辑优化编译程序。
例:CISC提供的乘法指令,调用时可完成内存a和内存b中的两个数相乘,结果存入内存a,需要多个CPU周期才可以完成;而RISC不提供“一站式”的乘法指令,需调用四条单CPU周期指令完成两数相乘:内存a加载到寄存器,内存b加载到寄存器,两个寄存器中数相乘,寄存器结果存入内存a。
CISC也是要通过操作内存、寄存器、运算器来完成复杂指令的。它在实现时,是将复杂指令转换成了一个微程序,微程序在制造CPU时就已存储于微服务存储器。一个微程序包含若干条微指令(也称微码),执行复杂指令时,实际上是在执行一个微程序。这也带来两种指令集的一个差别,微程序的执行是不可被打断的,而RISC指令之间可以被打断,所以理论上RISC可更快响应中断。
CISC和RISC的主要区别:
RISC特点:
是指程序在执行时候多条指令重叠进行操作的一种准并行处理实现技术。通俗的讲将一个时序过程,分解成若干个子过程,每个过程都能有效的与其他子过程同时执行。这种思想最初是在RISC的架构中出现的,旨在提高处理器处理效率,争取在一个时钟周期中完成一条指令。对于只有单条指令的情况下,流水线方式与顺序执行时没有区别。流水线的原理是在某一时刻可以让多个部件同时处理多条指令,避免各部件等待空闲,由此提高了各部件的利用率,也提高了系统的吞吐率。
取指:
指令取指(Instruction Fetch)是指将指令从存储器中读取出来的过程。
译码:
指令译码(Instruction Decode)是指将存储器中取出的指令进行翻译的过程。经过译码之后得到指令需要的操作数寄存器索引,可以使用此索引从通用寄存器组(Register File)中将操作数读出。
执行:
指令译码之后所需要进行的计算类型都已得知,并且已经从通用寄存器组中读取出了所需的操作数,那么接下来便进行指令执行(Instruction Execute)。指令执行是指对指令进行真正运算的过程。譬如,如果指令是一条加法运算指令,则对操作数进行加法操作;如果是减法运算指令,则进行减法操作。在“执行”阶段的最常见部件为算术逻辑部件运算器(Arithmetic Logical Unit,ALU),作为实施具体运算的硬件功能单元。
访存:
存储器访问指令往往是指令集中最重要的指令类型之一,访存(Memory Access)是指存储器访问指令将数据从存储器中读出,或者写入存储器的过程。
写回:
写回(Write-Back)是指将指令执行的结果写回通用寄存器组的过程。如果是普通运算指令,该结果值来自于“执行”阶段计算的结果;如果是存储器读指令,该结果来自于“访存”阶段从存储器中读取出来的数据。
考点公式:
流水线执行时间计算公式:第一条指令顺序执行时间+(指令条数-1) * 流水线周期,周期为指令耗时最长的一段。
吞吐率TP=指令数/流水线执行时间
存储层次是在计算机体系结构下存储系统层次结构的排列顺序。分层原因: 随着CPU不断的升级和总线速度的不断提高,存储器的速度远远不能与之匹配。
所谓存储系统的层次结构,就是把各种不同存储容量,存取速度和价格的存储器按照层次结构组成多层存储器,并通过管理软件和辅助硬件有机的组合成为一个整体,使所存放的程序和数据按照层次分布在各种存储器中。目前,在计算机系统中通常采用三级层次结构来构成存储系统,主要是由高速缓冲存储器cache,主存储器,和辅助存储器组成。
计算机系统的存储器划分:
(1)层次化的存储结构可以分为:CPU(寄存器)、Cache(高速缓存(也是分级,有L1,L2等缓存))、主存(普通内存)、外存(辅存(硬盘、磁带、光盘))。
高速缓存的存取速度和CPU相匹配,但价格高,且容量小;内存由DRAM构成,速度比高速缓存慢,但容量大;辅助存储器速度比内存慢的多,但容量又比内存大得多。为使存储空间足够大且又能满足CPU的存取速度要求而且价格适中,计算机采用层次化的存储体系结构,在系统运行时,把使用最频繁的程序和数据放在高速缓存中,经常使用的程序和数据放在内部存储器中,把不太常用且容量较大的程序和数据放在辅助存储器中,提高存储体的性能价格比。
(2)从上至下,读取速度越来越慢,存储容量越来越大。
名词介绍:
DRAM 动态随机存取存储器
SRAM 静态随机存取存储器
Cache 高速缓存(也是分级,有L1,L2等缓存),其作用是为了更好的利用局部性原理,减少CPU访问主存的次数。cache分成多个组,每个组分成多个行,
EEPROM 电可擦可编程只读存储器
Cache是一个高速小容量的临时存储器,由快速半导体存储器制成,可以用高速的静态存储器(SRAM)芯片实现以集成到CPU芯片内部,或者设置在CPU与内存之间,用户存储CPU最经常访问的指令或者操作数据。Cache的出现是基于两种因素:首先是由于CPU的速度和性能提高很快而主存速度较低且价格高,其次是程序执行的局部性特点。因此,才将速度比较快而容量有限的SRAM构成Cache,目的在于尽可能发挥CPU的高速度。其作用是为了更好的利用局部性原理,减少CPU访问主存的次数。简单地说,CPU正在访问的指令和数据,其可能会被以后多次访问到,或者是该指令和数据附近的内存区域,也可能会被多次访问。因此,第一次访问这一块区域时,将其复制到cache中,以后访问该区域的指令或者数据时,就不用再从主存中取出。
cache分成多个组,每个组分成多个行,linesize是cache的基本单位,从主存向cache迁移数据都是按照linesize为单位替换的。比如linesize为32Byte,那么迁移必须一次迁移32Byte到cache。 这个linesize比较容易理解,想想我们前面书的例子,我们从书架往书桌搬书必须以书为单位,肯定不能把书撕了以页为单位。书就是linesize。当然了现实生活中每本书页数不同,但是同个cache的linesize总是相同的。
所谓8路组相连( 8-way set associative)的含义是指,每个组里面有8个行。
相关问题:
我们知道,cache的容量要远远小于主存,主存和cache肯定不是一一对应的,那么主存中的地址和cache的映射关系是怎样的呢?
-
拿到一个地址,首先是映射到一个组里面去。如何映射?取内存地址的中间几位来映射。
-
举例来说,data cache: 32-KB, 8-way set associative, 64-byte line sizeCache总大小为32KB,8路组相连(每组有8个line),每个line的大小linesize为64Byte,OK,我们可以很轻易的算出一共有32K/8/64=64个组。
-
对于32位的内存地址,每个line有2^6 =64Byte,所以地址的【0,5】区分line中的那个字节。一共有64个组。我们取内存地址中间6为来hash查找地址属于那个组。即内存地址的【6,11】位来确定属于64组的哪一个组。组确定了之后,【12,31】的内存地址与组中8个line挨个比对,如果【12,31】为与某个line一致,并且这个line为有效,那么缓存命中。
该部分为计算题,提供例子,不做过多陈述。
主存编址计算出来的数值单位为大B。 而大B是bite(字节),小b是bit(位),1B=8b。 1k/1kB = 1024B; 1M =1024kB*1024kB = 104857613b。
例: 内存地址从A1000H到B13FFH区域的存储容量为____KB。
-
解:(A1000H-B13FFH)+1 = 10400H; 10400H = 66560B; 66560B/1024 = 65KB。
设用2K * 4位的存储器芯片组成16K * 8位的存储器(地址单元为0000H~3FFFH,每个芯片的地址空间连续),如果按字节编址,则地址单元0B1FH所在芯片的最小地址编号为()。
-
解:如果按字节编址,对应一个大小为16K * 8位的存储器,需要14位地址(16K = 2 ^ 14),14位二进制表示。芯片的大小为2K * 4位,而存储器的大小为16K * 8位,要获得这样一个大小的存储器,则需要(16K * 8bit)/ (2K * 4bit) = 16片。16 = 2 ^ 4,片选地址为高4位,片内地址为(14 - 4)= 低10位。0B1FH转化为二进制00 1011 0001 1111,其中高4位为0010,即片选地址为0010 = 2,则位置为第二片芯片,该芯片的起始地址(最小地址)为 00 1000 0000 0000,即0800H。
输入/输出(input/output,I/O),读作“eye-oh”,描述的是在计算机上输入输出数据的操作系统、程序或设备。一般的输入输出设备有打印机、硬盘、键盘和鼠标。实际上,有些设备只有输入功能,如键盘和鼠标;有些设备只有输出功能,如打印机;还有些设备具有输入输出2种功能,如硬盘、磁碟和可写性只读光盘(CD-ROM)。
补充:I/O设备(外设)中存在设备状态字寄存器,又叫设备状态(DSW),是设备所有状态的集合,用来标志设备的工作状态。设备状态寄存器是设备对主机的窗口,CPU通过程序查询设备状态位来判断设备的状态。
I/O设备与主机间交换数据的方式和特点:
无条件I/O方式
即是在CPU读取和写入数据到外部设备时,都必须保证外部设备的工作状态已经准备好了,无需CPU查询。
-
特点:当程序执行到I/O指令时,CPU默认外设始终准备就绪,无需检查I/O的状态。输入时必须确保外设已将数据准备好。输出时,必须确保外部设备的数据锁存器为空,即外设已将上次的数据取走。
-
缺点:一般外设难以满足这种要求。
直接程序控制方式(与无条件IO方式不同,执行IO指令时,会先获得外设的状态)
直接由CPU通过I/O指令对I/O接口访问,主机与外设之间交换信息的每个步骤都在程序中表示出来(全部靠计算机程序控制),整个输入输出过程由CPU执行程序完成。会先获得外设的状态,并根据外设的状态决定下一步操作。程序发出IO指令,询问设备是否就绪,未就绪的话,重复查询,直到到达查询次数上限或者设备就绪为止。
-
缺点:CPU的大量时间用来查询外设的状态。CPU需要不断查询I/O是否完成,因此一直占用CPU。
中断IO方式
当I/O接口准备好接收数据或者向CPU传送数据时会发出中断信号通知CPU。CPU对中断信号确认后,保存当前正在执行的程序的现场,转而去执行I/O中断服务程序,和外设交换数据,完成数据传输。
-
特点:CPU不需要主动查询外设的状态,等待数据期间可以执行其他程序,提高CPU的利用率,CPU和外设可以并行地工作。
-
缺点:一次中断处理的过程需要保存现场、中断处理和恢复现场等阶段,一次中断事件需要执行若干条指令,控制电路相对复杂,无法满足高速的批量数据传送要求。
-
在系统中有多个中断源的情况下,常用的处理方法有多中断信号线法、中断软件查询法、菊花链法、总线仲裁法和中断向量表法。
中断优先级
在中断优先级控制系统中,给最紧迫的中断源分配高的优先级,而给那些要求相对不紧迫的中断源分配低一些的优先级。当不同优先级的多个中断源同时提出中断请求的时,CPU应优先响应优先级最高的中断源。当CPU正在对某一个中断源服务时,又有比它优先级更高的中断源提出中断请求,CPU应能暂时中断正在执行的中断服务程序而转去对优先级更高的中断源服务,服务结束后再回到原先被中断的优先级较低的中断服务程序继续执行。
-
可屏蔽中断与不可屏蔽中断
可屏蔽中断由有中断能力的外设所产生,包括处在定时模式的定时器溢出和I/O中断请求;不可屏蔽中断是出现在NMI(不可屏蔽中断)线上的请求,不受中断标志位的影响,通常用于电源故障。不可屏蔽中断的优先级高于可屏蔽中断。
DMA方式(直接主存(内存)存取)
完全通过硬件控制实现主存与I/O设备间的直接数据成块传送,数据传送过程由DMA控制器(DMAC)进行控制,只需CPU启动传送过程,向设备发出“传输一块数据”的命令。当外设准备好后,通知DMA控制器,DMA控制器从CPU接管总线,并完成外设和内存之间的大量数据传输;传输完成后DMA控制器将总线控制权交还给CPU,数据交换过程不需要CPU的干预。
(1)外设通过DMA控制器向CPU发出DMA请求
(2)CPU响应DMA请求,系统转变为DMA工作方式,并把总线控制权交给DMA控制器
(3)由DMA控制器发送存储器地址,并决定传送数据块的长度
(4)执行DMA传送
(5)DMA操作结束,并把总线控制权交还CPU
-
特点:简化CPU对数据传送的控制,提高了主机与外设并行工作的程度,实现了快速外设和主存之间成批的数据传送,使系统的效率明显提高。
-
缺点:控制电路更加复杂。
通道/IO处理机控制方式
通道和IO处理机方式可以将CPU从对外围设备管理的繁杂工作中解放出来。通道是一种专用控制器,是能够专门执行I/O指令的处理机,又称为输入输出处理器(IOP)。可以实现对外围设备的统一管理,以及外设与主存之间的数据传输。它通过执行通道程序进行I/O操作的管理,为主机与I/O设备提供一种数据传输通道。通道程序存放在存储器中,当需要进行I/O操作时,CPU只要按约定格式准备好命令和数据,然后启动通道即可。通道执行相应通道程序完成操作。效率的提高是以增加更多的硬件为代价的。
-
特点:通道程序可完成较复杂的I/O管理和预处理,很大程度上将主机从繁重的I/O管理中解脱出来,提高系统效率。
-
外围处理机PPU
等同于IO处理机,是通道方式的进一步发展,结构更接近于一般处理机。PPU是专用处理机,它根据主机的I/O命令,完成对外设数据的输入输出。
将各个部件链接到一组公共的信息传输线上,这个称之为总线连接(BUS)。如果各个部件之间使用分散连接的话,那么计算机系统必然会因为众多的设备而导致拥有大量的数据导线,从而使得系统变得异常复杂,如果需要动态添加一个新的设备的话,会比较麻烦。
从物理角度看,总线有许多导线直接印在电路板上,延伸到各个部件,如下图显示了各个部件与总线之间的物理摆放位置:
图中的CPU,主存,I/O这些插板通过插头与水平方向总线插槽连接。因此,为了保证机械上的可靠连接,必须规定其机械特性;为了保证电气上的正确连接,必须规定其电气特性;为了保证正确地连接到不同部件,还需要规定其功能特性和时间特性。
总线上信息传输方式:有串行和并行两种。
两种方式优缺点:
串行:
优点:硬件设计简单,占用引脚较少,有利于集成。
缺点:数据传输效率较低。
-
并行:
优点:数据传输效率较高,吞吐量大。
缺点:硬件设计复杂,占用较多引脚,集成复杂。
(1)芯片内总线:
片内总线是指芯片内部的总线,如在CPU芯片的内部,寄存器和寄存器之间,寄存器和运算逻辑单元ALU之间的都是由片内总线连接而成的。
(2)系统总线(微机/板级/板间总线):
系统总线是指CPU,主存,I/O设备各大部件之间的信息传输线。由于这些部件通常安放在主板的各个插件板上,因此又称为板级总线或板间总线。比如:PC总线、ISA总线、EISA总线、PCI总线都属于系统总线。
按照系统总线传输的信息的不同,又可以分为三类:
- 数据总线:数据总线用来传输各功能部件之间的数据信息,他是一个双向的传输总线,其位数与机器字长,存储字长有关,一般为8位,16位或者32位。数据总线的位数成为数据总线的宽度,他是衡量系统性能的一个重要参数。CPU一次传输的数据与数据总线带宽相等。
- 地址总线:传送地址,它决定了系统的寻址空间。地址总线主要用来指出数据总线上的源数据或者目的数据在主存储单元的地址或者I/O设备的地址。地址总线的数据用来指明CPU想要访问的存储单元或者I/O端口的地址,由CPU输出,单向传输。数据线的位数代表着系统能够寻址的空间大小,比如地址线宽为20那么地址空间为2的20次方。
- 控制总线:传送控制信号和时序信号,如读/写、片选、中断响应信号等,数据总线和地址总线是被挂在总线上的所有设备所共享,那么这些设备之间怎么协调使用呢?答案就是控制总线,依靠控制总线来完成共享总线的占用申请。控制总线是发出各种控制信号的,因此它的传输方向就是单向的。但是,通常对于CPU而言的话,控制总线是既有输入,又有输出的。常见的控制信号有:时钟,复位,总线占用请求等等。
(3)通讯总线:
这类总线用于计算机系统之间或计算机系统与其他系统之间的通讯,比如网络连接。这类通讯涉及许多方面,因此互相之间差别极大,传输的类别很多,但是总体可以分为两种:串行和并行。
总线结构整体可以分为 单总线结构 和 多总线结构。
单总线(系统总线):计算机的各个部件均系统总线相连,所以它又称为面向系统的单总线结构。在单总线结构中,CPU与主存之间、CPU与I/O设备之间、I/O设备与主存之间、各种设备之间都通过系统总线交换信息。
-
优点:控制简单方便,扩充方便。
缺点:由于所有设备部件均挂在单一总线上,使这种结构只能分时工作,即同一时刻只能在两个设备之间传送数据,这就使系统总体数据传输的效率和速度受到限制。
多总线结构
- 双总线结构:
这种结构的特点就是将速度较低的I/O设备从单总线上分离出来,形成主存总线和I/O总线分开的结构。图中的通道是一个具有特殊功能的处理器,CPU将一部分的功能下放给通道,使其对I/O设备具有统一管理的功能,以完成外部设备与主存之间的数据传送,增大系统性能。但是这种结构的问题是:不是所有的I/O设备的工作速度都是一样的,不同速度的I/O放在一个总线工作会大大影响效率。
- 三总线结构:
这个结构为高速I/O设备建立了一个到达主存的高速通道,称为DMA(直接存储访问)总线。这个结构中同时只能有一个总线在使用,主存总线与DMA总线不能同时访问主存,I/O总线只有在CPU执行I/O指令时才能用到。
- 三总线加强版:处理器与cache之间有一个局部总线,它将CPU和cache或者更多的局部设备连接起来。Cache控制结构不仅将cache连接到局部总线上,而且还直接连接到系统总线上,这样cache就可以通过系统总线和主存交互,而且I/O设备与主存之间的交互也不必通过CPU。还有一条扩展总线,它将局域网,SCSI等接口连接起来,并且通过这些接口又可以与各类I/O设备连接,因此可以支持很多的外接设备。
- 四总线结构:又增加了一条与系统相连的高速总线,高速总线上挂了很多高速的I/O设备,他们通过cache控制机构中的高速总线桥或者高速缓冲器与系统总线和局部总线连接,使得这些高速设备和CPU更加密切。而一些较低速度的设备则放在了扩展总线上。这种结构对于高速设备而言,自身的工作可以很少依赖CPU,同时他们又比扩展总线上的设备更加靠近CPU,可见对于高性能设备与CPU来说,各自的效率将获得很大的提高。在这种结构中,CPU,高速总线的速度以及各自的信号线的定义可以完全不同,以至于各自改变结构也不会影响高速总线的正常工作。
(3)PCI总线结构
IDE、SCSI、PCI、AGP总线
计算机硬盘对应IDE总线,光驱对应SCSI总线,主板对应PCI总线,显卡对应AGP总线。一般来说,按照总线在计算机中的位置可以分为机器内部总线和机器外设总线两类。
指的是软件产品与在规定的一段时间内和规定的条件下维持其性能水平有关的能力,是一个系统对于给定时间间隔内、在给定条件下无失效运作的概率。它的子特性包括:成熟性、容错性、易恢复性,对于软件可靠性与软件潜在错误的数量、位置有关,并且与软件产品的使用方式有关,对于软件产品的开发方式并不能决定软件产品的可靠性。可靠性用MTTF/(1 + MTTF)来度量。
指的是软件在特定使用环境下为特定用户用于特定用途时所具有的有效性。也是指在给定的时间点上,一个系统正确运作的概率。可用性用MTBF/(1 + MTBF)来度量。
指的是与软件维护的难易程度相关的一组软件属性。
指的是是否可以通过运行更多的实例或者采用分布式处理来支持更多的用户。
现实世界中的系统往往是由若干模块组合而成。其实,各个模块之间的关系无非“串联”和“并联”两种(与串并联电路类似),那么整体可用性计算方式就显而易见了。
串联模块
整体可用性计算公式如下:
A = Ax* Ay
某计算机系统由下图所示的部件构成,假定每个部件的千小时可靠度都为R,则该系统的千小时可靠度为()。
答:系统构成串联系统时,其中任何一个子系统失效就足以使系统失效,其可靠度等于各子系统可靠度的乘积。构成并联系统时,只要有一个子系统正常工作,系统就能正常工作,则系统可靠度为1- (1 - 可靠度)(1 - 可靠度)。
-
因此本题可得本系统的可靠度为:
R * (1 - (1 - R)(1 - R)) * (1 - (1 - R)(1 - R)) = R(1 - (1 - R)2)2
串联部件的可靠度 = 各部件的可靠度的乘积
并联部件的可靠度 = 1 - 部件失效率的乘积
* 奇数个数据位出错,可以检查但无法纠正
)英文为:Parity Check
奇偶校验码也是一种校验码,它用来检测数据传输过程中是否发生错误,是众多校验码中最为简单的一种。对于奇偶校验,是由若干位有效信息,再加上一个二进制位(校验位)组成校验码,其中奇校验“1”的个数为奇数,而偶校验“1”的个数为偶数,奇偶校验只能查错不能纠错。
它有两种校验方法:奇校验和偶校验
-
奇校验:原始码流 + 校验位 总共有奇数个1
偶校验:原始码流 + 校验位 总共有偶数个1
跟CRC类似,也是在原始码流后面,加上校验位。不同的是,它的校验位只有一位,要么是0,要么是1。并且它的校验码还可以放在码流的前面。
例如下图有5组原始码,校验位的计算方法如下。红色代表校验位。
奇偶校验码一个最为常见的应用场合就是ASCII码。
ASCII码占用一个字节,低7位是有效位,最高位用作奇偶校验。
只能检测出奇数个错误。
例如还是ASCII码 大写字母 A
奇校验 正确码流 11000001
-
错1位 11000011 变成了偶数个1,能检测出错误
错2位 11000010 变成了奇数个1,检测不出错误
错3位 11001010 变成了偶数个1,能检测出错误
偶校验 正确码流 01000001
-
错1位 01000011 变成了奇数个1,能检测出错误
错2位 01000010 变成了偶数个1,检测不出错误
错3位 01001010 变成了奇数个1,能检测出错误
补充:
奇校验一个重要的特征是产生不了全0代码,所以在实际操作过程中选择的时候要考虑到这一点。
CRC循环冗余校验码是数据通信中的一种查错校验码。在进行编码时,其编码的结果由数据位 + 校验位组成,其中数据位在前,而校验位在后。
循环冗余检查对数据进行多项式计算,将计算结果附加在帧后面,接收数据的设备执行模2运算,保证数据传输的正确性和完整性。
模2除法
①不向上借位,只要除数和被除数的位数相同就可进行计算,不比较它们的大小;
②模2运算中用到了模2减法,与逻辑异或相似:
1-1=0, 1-0=1, 0-1=1 , 0-0=0,
③例子:
(1)选择一个生成多项式,作为对接收的帧进行除法运算时的除数,生成多项式可以写为二进制形式;
生成多项式的要求:
①最高位和最低位必须为1;
②当CRC码的任何一位发生错误时,新帧除生成多项式后余数不为0;
③不同位发生错误时,余数应该是不同的;
生成多项式转化为二进制形式:
如x5+x3+x2+1,写为二进制:101101
(2)计算CRC校验码位数k=生成多项式位数-1,在要发送的数据帧后加k个0,除第一步用生成多项式转化的二进制数(使用模2除法),得到的余数即为CRC校验码;
模2除时,余数的位数必须只比除数少一位,不能省略0
(3)把得到的校验码CRC加到原数据帧后,构成一个新数据帧发送到接收端,接收端将新帧除以之前选择的除数(模2除法),如果没有余数,则表明该数据帧在传输过程中没有出错,否则出错;
假设CRC生成多项式G(X)=X5+X4+X+1,要发送的二进制数据帧为100101110,求CRC校验码:
①把生成多项式转换为二进制数:110011;
②由生成多项式的位数为6可知,CRC校验码的位数为5,所以在数据帧后加5个0,变为100101110 00000,将这个数使用模2除法除以生成多项式110011,得到余数即CRC校验码11010;
③用得到的CRC校验码替换掉数据帧中的5个0,形成新的帧100101110 11010,将这个新帧发送给接收端;
④接收端收到新帧后,用新帧除以上面的多项式110011(模2除法),如果余数为0,该数据帧在传输过程中没有出错,否则出错;(经验证余数为0)
一个编码系统中任意两个合法编码(码字)之间不同的二进制数位数称为这两个码字的码距,而整个编码系统中任意两个码字的最小距离就是该编码系统的码距。为了使一个系统能检查和纠正一个差错,码间最小距离必须至少是3。海明码是一种可以纠正一位差错的编码,是利用奇偶性来检错和纠错的校验方法。海明码的基本意思是给传输的数据增加r个校验位,从而增加两个合法消息(合法码字)的不同位的个数(海明距离)。假设要传输的信息有m位,则经海明编码的码字就有n = m + r位。
与循环冗余校验码(CRC)不同,CRC编码方法是在k位信息码后面再拼接r位的校验码。
重点公式:
2^k - 1 >= n + k;
求海明码所需最少的校验位数k与原信息n个数据位的关系。
电子计算机技术指标是用来评价计算机性能和选择、使用计算机的参考数据。
电子计算机技术指标主要有以下几项:
-
(1)字长(bit)。指计算机运算机中寄存器的位数。字长越长,表示数的范围越大,即有效数字的位数越多,计算精度越高。因此,字长是表示电子计算机计算精度的指标。根据机器的不同,字长有8位、16位、32位、48位、64位等,通常大中型计算机字长是32-64位,小型机和微型机字长是8-32位。
-
(2)运算速度。表示电子计算机运算快慢程度的指标,用每秒钟所能执行的指令条数表示,单位为“次/秒” (也可用完成算术运算的平均速度表示)。
-
(3)存贮容量。指存贮器所能寄存的数字或指令的数量,即存贮器能够存贮二进制信息的能力。用存贮单元和每个单元的位数 (字长) 的乘积表示,单位用比特(一位二进的数为1比特)或字节。8个比特为1字节表示,1024字节为1K字节。巨型或大型计算机的内存容量一般为2-10兆字节左右,中、小型计算机的内存容量为几十K到1兆字节左右,微型机为4K-64K字节。
-
(4)存取周期。指存贮器进行一次完整的存取操作所需要的时间,存取周期在很大程度上决定着计算机的计算速度,它越短越好。磁芯存贮器的存取周期为零点几微秒到几微秒,半导体存贮器的存取周期为一百毫微秒到几百毫微秒。
-
(5)带宽。总线的带宽指单位时间内传输的数据总量。带宽 = 数据总量/总时间。时钟频率是其时钟周期的倒数,若时钟频率为200MHz,则时钟周期为1/200MHz。5个时钟周期的总时间为5/200MHz,假设数据总量为32bit,则总带宽 = 32bit/(5/200MHz)= 1280Mbit/s = 168MB/s。
相关内容: