嵌入式计算机系统概述

概述

a)大批量嵌入式系统以成本控制为核心,采用集成CPU、定制芯片和存储芯片,设计为最小功耗。操作系统的选择需要综合考虑,对于嵌入式设备(如传感器),选择轻量级操作系统(FreeRTOS、Zephyr);对于服务器,选择稳定性优先的操作系统(Linux、Windows Server);对于实时控制(工业机器人),选择硬实时系统(VxWorks、QNX)。

b)小批量嵌入式系统可通过PC架构与实时操作系统,以高性能CPU替代专用硬件降低成本。

c)嵌入式软件运行于资源受限硬件,无标准外设,存储多用FLASH,人机交互简化。

d)嵌入到机械设备中的嵌入式系统需要长期无故障连续运行,因此它的软件需要比PC中的软件更加仔细地开发及更加严格的测试。

e)根据IEEE的定义,嵌入式系统是“控制、监视、辅助设备、机器、车间的装置”。这主要是从应用上加以定义的,从中可以看出嵌入式系统是硬件和软件的综合体(硬件是物理装置,软件是程序、数据、相关文档的集合),还可以涵盖机械等附属装置。目前国内一个普遍认同的嵌入式系统定义是:以应用为中心、以计算机技术为基础,软件硬件可裁剪,适应应用系统对功能、可靠性、成本、体积、功耗严格要求的专用计算机系统。可以这样认为,嵌入式系统是一种专用的计算机系统,作为装置或设备的一部分,通常嵌入式系统是一个控制程序存储在ROM中的嵌入式处理器系统板。

f)嵌入式系统的研究和应用的新变化:
1)嵌入式OS优化架构提升可移植性,可快速适配更多微处理器。嵌入式OS的可移植性核心通过分层解耦架构实现,将硬件相关的板级支持包BSP/硬件抽象层HAL与内核核心逻辑彻底分离,配合设备树、统一驱动框架、POSIX标准接口兼容等技术,可实现跨ARM、RISC-V、X86等多架构、上千款微处理器的快速适配,大幅缩短新芯片的支持周期。
2)嵌入式开发是系统工程,厂商需提供软硬件系统及配套开发工具与软件包;
3)通用计算机新技术向嵌入式系统移植,推动嵌入式软件平台持续完善。通用计算机领域的容器化/轻量级虚拟化、微服务架构、DevOps 开发模式、Rust内存安全语言、轻量化AI大模型部署等技术,已全面向嵌入式场景渗透并规模化落地;同时嵌入式软件平台正向标准化、组件化、低代码化方向演进,形成兼容通用接口规范的全栈平台能力。
4)各类嵌入式linux操作系统迅速发展,由于具有源代码开放、系统内核小、执行效率高、网络结构完整等特点,很适合信息家电等嵌入式系统的需要;
5)网络互联已成为嵌入式系统的必然趋势与基础标配。网络互联已成为嵌入式设备的必备能力,互联技术从传统以太网、WiFi、蓝牙,拓展到5G/4G Cat.1、NB-IoT、LoRa、TSN 时间敏感网络等多协议融合,实现端-边-云全链路互联;配套的网络安全、低功耗广域网、边缘计算协同能力,已成为互联方案的核心组成。
6)嵌入式系统通过内核精简、算法优化,降低功耗与软硬件成本;
7)提供更加友好的多媒体人机交互界面。

计算机硬件

a)基本的计算机硬件系统由运算器、控制器、存储器、输入设备、输出设备5大部件组成,随着网络技术发展,通信部件也成为计算机系统的基本组件。运算器和控制器及相关部件已经被集成在一起,统称中央处理单元(central processing unit,CPU)。

b)运算器负责数据运算,控制器负责指令执行控制;存储器分为内存与外存,CPU内寄存器速度远高于内存。

计算机软件

a)计算机软件是管理、运行、维护、应用计算机系统的程序及相关文档的集合,是硬件实现计算能力的核心载体。

b)软件可分为系统软件、中间件、应用软件等类型。系统软件的主要功能是管理系统的硬件和软件资源,应用软件则用于解决应用领域的具体问题,中间件是一类独立的系统软件或服务程序,常用来管理计算计算资源和网络通信,提供信息处理、数据存取、事务处理、web服务、安全、跨平台等服务。

数据表示

进制转换

a)
/

数值型数据的表示

a)原码表示:数值零的原码有两种形式:[+0]原=00000000,[-0]原=10000000。其中最高位是符号位,其余位表示数值的绝对值。

b)反码表示:正数的反码与原码相同,负数的反码则按其绝对值按位求反。数值0的反码有两种形式:[+0]反=00000000,[-0]反=11111111

c)补码表示:正数的补码与其原码和反码相同,负数的补码则等于其反码的末尾加1。在补码表示中,0有唯一的编码,即[-0]补=[+0]补=00000000

相对于原码和反码表示,n位补码有一个例外,当符号位为1而数值位全部为0时,它表示整数-2^(n-1),即此时符号位的1既表示负数又表示数值。设计补码时,有意识地引用了模运算在数理上对符号位的处理,即利用模的自动丢弃实现了符号位的自然处理。

d)移码表示:移码=真值+固定偏移量,用于浮点数阶码,使编码非负。偏移量常为2 ^ (n-1)(n位编码,补码符号位取反得移码)或 2 ^ (n-1)-1(如IEEE 754)。特点是码值顺序与真值一致,无正负零,便于浮点数比较。

定点数和浮点数

a)定点数就是表示数据时小数点的位置固定不变。
/

b)浮点数是指小数点位置不固定的数,浮点表示法能表示更大范围的数。在十进制数中,一个实数可以写成多种表示形式,例如,83.125可以写成10 ^ 3 * 0.083125或10 ^ 4 * 0.0083125等。同理,一个二进制数也可以写成多种表示形式。
1)
/
在浮点表示法中,阶码通常为带符号的纯整数,尾数为带符号的纯小数。
2)
/
3)一个数的浮点表示不是唯一的。小数点移动,阶码同步调整。
4)浮点数范围由阶码决定,精度由尾数决定。
5)为了提高数据的表示精度,当尾数的值不为0时,规定尾数域的最高有效位应为1,这叫浮点数的规格化表示,否则需要修改阶码左移或右移小数点的位置,使其变为规格化数的形式。

c)工业标准IEEE754
1)
/
其中S为数的符号位;指数(阶码)用移码表示(偏移值为2 ^ (p-1) - 1,p表示阶码的位数);M表示尾数,用原码表示。
2)对于阶码为全0或全1的情况,IEEE754标准特别规定:若P为全0且M为0,则表示真值±0;如果P为全1且M是0,则这个数的真值为±∞;如果P为全1且M不是0,则规定其不是一个数(NaN)。
3)
/
4)在IEEE754标准中,对于单精度浮点数和双精度浮点数,约定小数点左边隐含有一位,通常这位数就是1,因此尾数为1.xxx…xxxx。
5)标准数的单精度浮点表示方法:十进制转二进制→对二进制进行规格化处理,去掉最高位,并且扩展为23位尾数→求阶码,并且用移码表示。

其他数据的表示

a)用4位二进制表示一位十进制,叫二-十进制编码,简称BCD编码。因为4位二进制可以表示16个数,而十进制只有10个不同字符,所以有多种BCD编码。根据4位代码是否每一位有确定的权来分为有权码和无权码。最常用的有权码即8421码,即4个二进制数从高到低分别为8421。无权码中最常用的是余3码,即在8421码基础上每个数的代码加上0011。格雷码则是相邻的两个代码之间只有1位不同。格雷码可靠性高,可减少多位误码;8421码中1010~1111为非法编码。

b)ASCII码(american standard code for information interchange,美国标准信息交换代码)采用7个二进制位,低4位组用作行编码,高3位组用作列编码。
/

c)西文是拼音文字,基本符号较少,比较容易编码,在计算机系统中输入、内部处理、存储、输出都可以使用同一代码。汉字种类多,编码比拼音困难,而且在一个汉字处理系统中,输入、内部处理、存储、输出对汉字代码要求不同,所以采用的编码也不同。输入码有数字编码(难记)、拼音码(同音字选择难)、字形码;内部码有GB2313-1980(两个字节,每字节用7位,可表示16384个机内码)、GB18030-2005;字形码(表示汉字字形的子模数据)。

校验码

a)码距:编码系统中两合法编码最少不同位;8421码距1,无检错能力;码距越大,检错/纠错能力越强。

b)奇偶校验码
1)奇偶校验:增加1位校验位使1的个数为奇/偶,码距2;
2)水平奇偶校验码:对每一个数据的编码添加校验位,使信息位与校验位处于同一行。
3)垂直奇偶校验码:把数据分为若干组,一组数据占一行,排列整齐,再加一行校验码。(VS 水平垂直校验码)

c)海明码
1)海明码是一种利用奇偶性来检错和纠错的校验方法。海明码的构成方法是在数据位之间的特定位置上插入K个校验位,通过扩大码距来实现检错和纠错。
2)设数据位是n位,校验位是k位,则n和k必须满足关系:(2 ^ k) - 1 ≥ n + k 。
3)
/
/

d)循环冗余校验码
1)循环冗余校验码广泛应用于通信领域和磁介质存储系统中。它利用生成多项式为k个数据位产生r个校验位来进行编码,其编码长度为k+r。
2)校验码是由信息码产生的,校验码位数越长,该代码的校验能力就越强。在求CRC编码时,采用的是模2运算。模2运算规则是:按位运算,无借位和进位。

算术运算和逻辑运算

算术运算

a)机器数的加减运算:在计算机中,可以只设置加法器,而将减法运算转换为加法运算来实现。
1)补码加法的运算规则:[X+Y]补 = [X]补 + [Y]补
2)补码减法的运算规则:[X-Y]补 = [X]补 + [-Y]补
3)[X]补求[-X]补的方法:[X]补的各位取反(包括符号位),末尾加1

4)补码加减运算的规则
①参加运算的操作数用补码表示;
②符号位参加运算;
③若进行相加处理,则两个数的补码直接相加;若进行相减运算,则将减数连同其符号位一起变反加1后与被减数相加;
④运算结果用补码表示。
与原码减运算相比,补码减运算的过程要简单得多。在补码加减运算中,符号位和数值位一样参与运算,无须特殊处理。因此,多数计算机都采用补码加减运算法。

b)溢出及判定
1)只有当两个同符号的数相加(或者不同符号数相减)时,运算结果才有可能溢出。
2)常用的溢出检测机制主要有进位判决法和双符号位判决法:
①双符号位判决法:若采用两位表示符号,即00表示正号、11表示负号,则溢出时两个符号位就不一致了,从而可以判定发生了溢出。
②进位判决法

浮点运算

a)浮点加减运算:X = M * 2 ^ i ; Y = N * 2 ^ j,求X±Y的过程:
1)对阶:使两个数的阶码相同。令K=|i-j|,把阶数小的数的尾数右移k位,使其阶码加上k;
2)求尾数和(差);
3)结果规格化并判断溢出。若运算结果所得的尾数不是规格化的数,则需要进行规格化处理。当尾数溢出时,需要调整阶码;
4)舍入:对结果进行右移时,尾数的最低位将因移出而丢掉。另外,在对阶过程中也会将尾数右移使最低位丢掉。这就需要进行舍入处理,以求得最小的预算误差。舍入处理的方法如下:
①截断法:将要保留的数据末位右边的数据全都截去,不管数据是0还是1;
②末位恒1法:将要保留的末位数据恒置1,不管右移丢掉的是0还是1;
③0舍1入法:在数据为0.11111…111时,即在尾数全为1的时候,这种舍入会再次产生溢出。遇到这种情况可用硬件判断,并在舍去1时末位不再加1;
5)溢出判断:以阶码为准,若阶码溢出(超出最大值),则运算结果溢出;若阶码下溢(小于最小值),则结果为0,否则结果正确无溢出。

b)浮点数乘除运算:浮点数相乘,其积的阶码等于两乘数的阶码相加,积的尾数等于两乘数的尾数相乘。浮点数相除,其商的阶码等于被除数减去除数的阶码,商的尾数等于被除数的尾数除以除数的尾数。乘除运算的结果都需要进行规格化处理并判断阶码是否溢出。

逻辑运算

a)
/

计算机硬件组成及主要部件功能

CPU

a)功能
1)程序控制:管控程序的执行顺序。程序控制是CPU的核心职能,数据加工处理是CPU最根本的任务,中断处理可响应系统内外的异常与紧急事件;
2)操作控制:生成并下发指令对应的操作信号;
3)时间控制:CPU对各操作进行时间上的控制,即指令执行过程中操作信号的出现时间、持续时间、出现的时间顺序都需要进行严格控制;
4)数据处理:完成算术、逻辑运算等核心数据加工;
5)中断处理:响应并处理系统内外的中断与异常事件。
/

b)组成
1)运算器:运算器主要由ALU、累加寄存器、数据缓冲寄存器、状态条件寄存器等组成,它是数据加工处理部件,用于完成计算机的各种算术和逻辑运算。相对控制器而言,运算器接受控制器的命令而进行动作,即运算器所进行的全部操作都是由控制器发出的控制信号来指挥的,所以它是执行部件。运算器执行所有算术运算和逻辑运算。运算器中的各组件:
①ALU:负责处理数据,实现对数据的算术运算和逻辑运算;
②累加寄存器AC:是一个通用寄存器,其功能是当运算器的算术逻辑单元执行算术或逻辑运算时,为ALU提供一个工作区。例如,在执行一个减法运算前,先将被减数取出暂存在AC中,再从内存储器中取出减数,然后同AC中的内容相减,将所得的结果送回AC中。运算的结果是放在累加器中的,运算器中至少要有一个累加寄存器;
③数据缓冲寄存器DR:在对内存储器进行读写时,用DR暂存由内存储器读写的一条指令或一个数据字,将不同时间段内读写的数据隔离开。DR的主要作用为:作为CPU和内存、外部设备之间数据传送的中转站;作为CPU和内存、外围设备之间在操作速度上的缓冲;在单累加器结构的运算器中,数据缓冲寄存器还可兼作为操作数寄存器。
④状态条件寄存器PSW:PSW保存由算术指令和逻辑指令运行或测试的结果建立的各种条件码内容,主要分为状态标志和控制标志,例如运算结果进位标志C、运算结果溢出标志V、运算结果为0标志Z、运算结果为负标志N、中断标志I、方向标志D、单步标志等。这些标志保存了当前指令完成后的状态。
2)控制器:运算器只能完成运算,而控制器用于控制整个CPU的工作,它决定了计算机运行过程的自动化。它不仅要保证程序的正确运行,还要能够处理异常事件。控制器一般包括指令控制逻辑、时序控制逻辑、总线控制逻辑、中断控制逻辑:
①指令寄存器IR:暂存待执行的指令;
②程序计数器PC:存储下一条指令地址,顺序执行自动+1,转移时更新目标地址;
③地址寄存器AR:暂存CPU访存的单元地址,匹配CPU与内存的速度差;
④指令译码器ID:指令包括操作码和地址码。指令译码器就是对指令中的操作码字段进行解释,向操作控制器发出具体的控制信号,控制各部件工作,完成所需的功能;
⑤时序控制要为每条指令按时间顺序提供应有的控制信号。总线逻辑是为多个功能部件服务的信息通路的控制电路。中断控制逻辑用于控制各种中断请求,并根据优先级的高低对中断请求进行排队,逐个交给CPU处理。
3)寄存器组:分为专用寄存器组和通用寄存器组。运算器和控制器中的寄存器是专用寄存器,作用是固定的。通用寄存器可由程序员规定其用途,其数目因处理器不同有差异。

c)多核CPU
1)多核即在一个单芯片上集成多个处理器内核,每个内核都有自己的逻辑单元、控制单元、中断处理器、运算单元、一级cache、二级cache共享或独有,其部件完整性和单核一致。
2)多核CPU系统最大的优点是可满足用户多任务同时处理。要发挥CPU的多核性能,就需要操作系统能及时合理给各个核分配任务和资源(如缓存、总线、内存等),也需要应用软件在运行时可以把并行的线程同时交付给多个核心分别处理。

存储器

a)位于更高层次的存储设备比位于比较低层次的存储设备速度更快、单位比特造价更高。其中cache和主存之间的交互功能全部由硬件实现,而主存和辅存之间的交互功能可由硬件和软件结合起来实现。

b)存储器的分类
1)随机存储器可对任何存储单元存入或读取数据,访问任何一个存储单元所需的时间相同;顺序存储器访问数据所需要的时间与数据所在的存储位置相关,磁带是典型的顺序存储器;直接存储器介于随机存储和顺序存储之间,磁盘是一种直接存储器,它对磁道的寻址是随机的,而在一个磁道内是顺序寻址。

c)相联存储器
1)相联存储器是一种按内容访问的存储器。其工作原理是把数据或数据的一部分作为关键字,按顺序写入信息,读出时并行将关键字和存储器中每一单元比较,找出存储器中所有与关键字相同的数据字,特别适合于信息检索和更新。

高速存储器

a)组成:cache存储器中控制部分是判断CPU要访问的信息是否在cache中。命中时直接对cache存储器寻址;未命中时要按照替换原则决定主存的一块信息放到cache存储器的哪一块里。CPU访存时首先查找L1 cache,如果不命中则查找L2,直到访问主存。通常要求L1 cache速度足够快以赶上CPU主频。

b)高速缓存中的地址映像方法
1)CPU访存输出主存地址,需通过地址映像完成主存地址到cache地址的转换,即规定主存块到cache块的映射规则,主流有3种方法:
①直接映像:主存的块与cache块的对应关系固定。主存的块只能存放在cache存储器的相同块号中,因此,只要主存地址中的主存区号与cache中记录的主存区号相同,则表示访问cache命中。一旦命中,由主存地址(主存区号+区内块号+块内地址)中的区内块号就立即可得到要访问的cache存储器中的块,而块内地址就是主存地址中给出的低位字段。优点是地址变换简单,缺点是灵活性差。
/
②全相联映像:主存与cache均分为大小相同的块。这种映像方式允许主存的任一块可以调入cache存储器中的任何一个块的空间中。例如主存为64MB,cache为32KB,块大小为4KB(块内地址需要12位),因此主存分为16384块,块号需要14位,cache分为8块,块号需要3位。存放主存块号的相联存储器需要有cache块个数相同数目的单元,相联存储器中每个单元记录所存储的主存块的块号。在地址变换时,利用主存地址高位表示的主存块号与cache中相联存储器所有单元记录的主存块号进行比较,若相同即为命中。这时相联存储器单元的编号就对应要访问cache的块号。
/
③组相联映像:这种方式是前两种方式的折中。具体是将cache中的块再分成组。例如,假定cache有16块,再将每两块分为1组,则cache就分为8组。主存同样分区,每区8块,再将每两块分为1组,则每区分为8组。组采用直接映像方式,块采用全相联映像方式。即主存任何区的0组只能存到cache的0组中,1组只能存到cache的1组中,以此类推。组内的块则采用全相联映射方式,即一组内的块可以任意存放,即主存一组中的任一块可以存储cache相应组的任一块中。
/

c)替换算法:替换算法的目标是使cache获得尽可能高的命中率。常用的算法有:
1)随机替换算法
2)先进先出算法
3)近期最少使用算法
4)优化替换算法。这种方法必须先执行一次程序,统计cache的替换情况。有了这种先验信息,在第二次执行该程序时就可以用最有效的方式来替换。

d)cache性能分析
1)命中率是cache的一个重要指标。
/
2)在指令流水线中,cache访问作为流水线中的一个操作阶段,cache失效将影响指令的流水。因此,降低cache的失效率是提高cache性能的一个重要措施。

e)虚拟存储器
1)现代系统提供了一种对主存的抽象,称为虚拟存储,使用虚拟地址的概念来访问主存,使用专门的MMU将虚拟地址转换为物理地址后访问主存。
2)虚拟存储器实际上是逻辑存储器,实质是对物理存储设备进行逻辑化的处理,并将统一的逻辑视图呈现给用户。因此,用户在使用时,操作的是虚拟设备,无须关心底层的物理环境,从而可以充分利用基于异构平台的存储空间,达到最优化的使用效率。
/

f)外存储器
1)CPU不能直接访问外存中的程序和数据,只有将其以文件为单位调入主存中才可访问。
2)磁盘存储器:将盘片分为多个同心圆,即磁道track。将一个磁道沿圆周分为若干段,每段叫一个扇区sector,每个扇区可存放一个固定长度的数据块,如512字节。一组盘片的所有记录面上相同序号的磁道构成一个柱面cylinder。硬盘的寻址信息由硬盘驱动号、柱面号、磁头号(记录面号)、数据块号(或扇区号)、交换量组成。对扇区的访问时间分为寻道时间、旋转时间、传送时间。
3)固态硬盘:主控芯片是固态硬盘的大脑,作用有两个:一是合理调配数据在各个闪存芯片上的负荷;二是承担数据中转的作用,连接闪存芯片和外部SATA或USB接口。不同主控芯片差异很大,在数据处理能力、算法、对闪存芯片的读写控制方面有很大不同,直接导致固态硬盘产品在性能上差距很大。一个闪存由多个块、每块由多个页组成,通常页的大小为512B-4KB,块的大小为32页-128页。在闪存中,数据以页为单位读写。只有在一页所在的块被整体擦除后,才能写入该页。写一个块重复超过限定次数后,该块会磨损坏而不能再使用。

总线

a)分类
1)按所传输的信号类型可分为:数据总线、地址总线、控制总线。数据总线是用来传递数据信息,是双向的。地址总线用于传送CPU发出的地址信息,是单向的,传送地址信息的目的是指明与CPU交换信息的内存单元或IO设备,地址总线的宽度决定了CPU的最大寻址能力。控制总线是用来传送控制信号/时序信号/状态信息的,控制总线的每一条线的信息传送方向是单方向且确定的,但控制总线作为一个整体是双向的,所以在各种结构框图中,凡涉及到控制总线都是双向线表示。

b)总线的性能直接影响到整机系统的性能,而且任何系统的研制和外围模块的开发都必须依从所采用的总线规范。

c)南北桥芯片结构
1)北桥芯片直接与CPU、内存、显卡、南桥连接,控制着CPU的类型、主板的总线频率、内存控制器、显示核心等。前端总线FSB是将CPU连接到北桥芯片的总线。内存总线是将内存连接到北桥芯片的总线。用于和北桥之间的通信,显卡则通过IO总线连接到北桥芯片。
2)南桥芯片主要负责外部设备接口与内部CPU的联系,其中,通过IO总线连接外部IO设备连接到南桥,例如USB设备、ATA、SATA设备、扩展接口。扩展总线则指是主板上提供的一些PCI、ISA等插槽。
/

d)单芯片结构:单芯片组方式取消了北桥。由于CPU中内置了内存控制器,不再需要通过北桥来控制,这样就提高了内存控制器的频率,减少延迟。还有一些CPU还集成了显示单元,使得显示芯片频率更高,延迟更低。

e)常见总线
1)ISA总线:工业标准总线,只支持16位IO设备,数据传输率大约16Mbps。
2)EISA总线:ISA基础上发展的32位总线,该总线定义了32位地址线+32位数据线+控制总线+电源和地等196个接点,数据传输率大约33Mbps。
3)PCI总线:微型机上广泛采用的内总线,采用并行传输方式。PCI总线有适用于32位机的124个信号的标准和适用于64位机的188个型号的标准。PCI总线的传输速率至少是133Mbps,64位PCI总线的传输速率是266Mbps。PCI总线的工作与CPU的工作是相互独立的,即PCI的总线时钟与处理器时钟是独立非同步的。PCI总线上的设备是即插即用的。接在PCI总线上的设备均可以提出总线请求,通过PCI管理器中的仲裁机构允许该设备成为主控设备,主控设备与从属设备间可以进行点对点的数据传输。PCI总线能够对所传输的地址和数据信号进行奇偶校验检测。
4)PCIE总线:采用点对点串行连接,每个设备都有自己的专用连接,不需要向整个总线请求带宽,而且可以把数据传输率提高到一个很高的频率。相对于PCI总线在单一时间周期内只能实现单向传输,PCIE的双单工连接能提供更高的传输速率和质量。PCIE的接口根据总线位宽不同而差异,包括x1/x4/x8/x16。其中x1的传输速率是250Mbps,x16是16倍x1的速度,即4Gbps。PCIE支持热拔插。PCIE支持双向传输模式,还可以运行全双工模式。
5)前端总线FSB:front side bus是将CPU连接到北桥芯片的总线。需要注意主板和CPU的搭配问题。一般来说,如果CPU不超频,那么前端总线是由CPU决定的,如果主板不支持CPU所需要的前端总线,系统就无法工作。通常情况下,一个CPU默认的前端总线是唯一的。北桥芯片负责联系内存、显卡等数据吞吐量最大的部件,并与南桥芯片连接。CPU通过前端总线FSB连接到北桥芯片,进而通过北桥芯片与内存、显卡交换数据。FSB是CPU与外界交换数据的最主要通道,因此FSB的数据传输能力对计算机整体性能作用很大,如果没有足够快的FSB,再强的CPU也不能明显提高计算机整体速度。
6)RS232C:传输距离远,用电平传输为15m,电流环传送可达千米。采用非归零码负逻辑工作,电平≤-3V为逻辑1,电平≥3V为逻辑0,具有较好的抗干扰性。
7)SATA:serial ATA缩写,即串行ATA。用作主板和大量存储设备(如硬盘及光盘驱动器)之间的数据传输。SATA总线使用嵌入式时钟信号,具备更强的纠错能力。与以往相比其最大的区别是能对传输指令(而不仅仅是数据)进行检查,如果发现错误会自动纠正,提高了数据传输可靠性。串行接口还具有结构简单,支持热拔插的优点。
8)USB(通用串行总线):USB由4根信号线组成,其中2条用于传输数据,另外两条传送+5V容量为500mA的电源。可以经过HUB进行树状连接,最多可达5层。该总线上可接127个设备。USB1.0支持低速1.5Mbps,高速12Mbps。USB2.0为480Mbps。USB总线最大优点还在于支持即插即用和热插拔。
→即插即用和热插拔的区别:即插即用(Plug and Play, PnP)是操作系统/软件层面的自动识别与配置能力,核心解决不用手动设置、不用重启就能用的问题;热插拔(Hot Swap/Hot Plug)是硬件电气/协议层面的带电安全操作能力,核心解决不用关机断电就能安全插拔的问题。即插即用的概念由微软在Windows 95时代大规模推广,解决了早期系统中硬件需要手动配置中断、IO地址、安装驱动的痛点。热插拔的核心硬件设计,是接口的长短针序:地线引脚最长(先接通后断开),电源引脚次之,数据引脚最短,保证插拔时先接地、再通电、最后传数据,断开时先断数据、再断电源、最后断地线,避免电涌损坏硬件。
9)IEEE-1394:高速串行外总线,也支持外设热插拔,可为外设提供电源,省去了外设自带的电源,能连接多个不同设备,支持同步和异步数据传输。IEEE-1394由6条信号线组成,其中两条用于传送数据,两条传送控制信号,另外两条传送8-40V容量为1500mA的电源。理论可接63个设备。传输速率从400、800、1600、3200Mbps。
10)IEEE-488总线:并行总线接口。按位并行、字节串行双向异步方式传输信号,连接方式为总线连接,仪器设备不需要中介单元直接并联于总线上。总线上最多可连接15台设备。最大传输距离为20m,信号传输速度一般为500Kbps,最大传输速度为1Mbps。

输入/输出控制

a)IO设备
1)可将IO设备分为块设备和字符设备。块设备把信息存放在固定大小的块中,每个块都有自己的地址,独立于其他块,可寻址。例如磁盘、USB闪存、CD-ROM等。字符设备以字符为单位接收或发送一个字符流,字符设备不可以寻址。例如网卡、鼠标键盘等。
2)IO设备一般都包含设备控制器,一般以芯片方式出现,如南桥芯片。南桥芯片中包含了多种设备的控制器,如硬盘控制器、USB控制器、网卡、声卡控制器等。
3)不同设备控制器的操作控制通过专门的软件即驱动程序进行控制。每个控制器都有几个寄存器与CPU进行通信。通过写入这些寄存器,可以命令设备发送或接收数据、开启或关闭。通过读这些寄存器就知道设备的状态。由于寄存器数量和大小是有限的,所以设备一般会有一个RAM性质的缓冲区,来存放数据。例如硬盘的读写缓存、显卡的显存等。
4)CPU与IO设备控制器中的寄存器或数据缓冲区如何进行通信?
①为每个控制器分配一个IO端口号,所有的控制器可以形成一个IO端口空间,这些信息存放在内存中,一般程序不能访问,操作系统则通过特殊的指令和端口号来从设备读取或写入数据。早期计算机基本如此,通常使用汇编语言进行操作。
②将所有控制器的寄存器映射到内存空间,于是每个设备的寄存器都有一个唯一的地址,即内存映射IO。由于不需要特殊的指令控制,对待IO设备和其他普通的数据访问方式相同,因此可以使用C语言编程。
③结合使用,如寄存器拥有IO端口,数据缓存区映射到内存空间。

b)程序控制方式
1)程序控制IO是指外设数据的输入输出过程是在CPU执行程序的控制下完成的。这种方式分为无条件传送和程序查询方式。
①无条件传送:外设总是准备好的,可以无条件随时接收CPU发来的数据,也可以随时向CPU提供数据;
②程序查询方式:通过CPU执行程序来查询外设是否准备好接收数据或准备好了向CPU输入的数据。根据这种状态,CPU有针对性地为外设的输入/输出服务。这种方式降低了CPU效率,对外部的突发事件无法及时做出响应。

c)中断方式
1)利用中断方式完成数据输入输出的过程:当系统和外设交互数据时,CPU无须等待也不必查询IO设备的状态,而是处理其他任务。当IO设备准备好后,就发出中断请求信号通知CPU,CPU接到中断请求信号后,保存正在执行程序的现场,转入IO中断服务程序的执行,完成与IO系统的数据交换,然后再返回被打断的程序继续执行。
2)在系统有多个中断源的情况下,常见的处理有:多中断信号线法、中断软件查询法、菊花链法、总线仲裁法、中断向量法:
①中断软件查询法:当CPU检测到一个中断请求信号后,即转入到中断服务程序去轮询每个中断源以确定是谁发出了中断请求信号。对各个设备的响应优先级由软件设定。
②菊花链法:软件查询的缺陷在于花费时间太多。菊花链法实际上是一种硬件查询法。所有的IO模块共享同一根中断请求线,中断确认信号则以链式在各模块间相连。当CPU监测到中断请求信号时,则发送中断确认信号。中断确认信号依次在IO模块间传递,直到发出请求的模块,该模块把它的ID送往数据线由CPU读出。
③总线仲裁法
④中断向量法:中断向量表用来保存各个中断源的中断服务程序的入口地址。当外设发出中断请求信号INTR后,由中断控制器INTC确定其中断号,并根据中断号查询中断向量表取得其中断服务程序的入口地址,同时INTC把中断请求信号提交给CPU。在具有多个中断源的计算机系统中,各中断源优先级不同。当CPU正在对某一中断源服务时,又有比它优先级更高的中断源提出中断请求,CPU应能暂停中断正在执行的中断服务程序而转去对优先级更高的中断源服务,即中断嵌套。

DMA方式

a)在计算机与外设交换数据的过程中,无论是无条件传送、利用查询方式传送、利用中断方式传送,都需要由CPU通过执行程序来实现,这就限制了数据的传送速度。

b)直接内存存取(direct memory access,DMA)是指数据在内存与IO设备间的直接成块传送,即在内存与IO设备间传送一个数据块的过程中,不需要CPU任何干涉,只需要CPU在过程开始启动(即向设备发出传送一块数据的命令)与过程结束(CPU通过轮询或中断得知过程是否结束和下次操作是否准备就绪)时的处理,实际操作由DMA硬件直接执行完成,CPU在此传送过程中可以做别的事情。
/

c)DMA传送的一般过程
1)外设向DMA控制器(DMAC)提出DMA传送请求;
2)DMA控制器向CPU提出请求,其请求信号通常加到CPU的保持请求输入端HOLD上;
3)CPU在完成当前的总线周期后立即对此请求作出响应,CPU的响应包括两个方面:一是CPU将有效的保持响应信号HLDA输出加到DMAC上,告诉DMAC它的请求已得到响应;二是CPU将其输出的总线信号置为高阻,意味着CPU放弃对总线的控制权;
4)此时DMAC获得了对系统总线的控制权,开始实施对系统总线的控制。同时向提出请求的外设送出DMAC的响应信号,告诉外设其请求已得到响应,现在准备开始数据传送;
5)DMAC送出地址信号和控制信号,实现数据高速传输;
6)当DMAC将规定的字节数传送完后,它就将HOLD信号变为无效并加到CPU上,撤销对CPU的请求。CPU检测到无效的HOLD就知道DMAC已经传送结束,CPU就送出无效的HLDA响应信号,同时重新获得系统总线的控制权,接着DMA前的总线周期继续执行下面的总线周期。

d)在DMA传送数据时,DMAC要占用系统总线。根据占用总线的方法不同,DMA可以分为中央处理器停止法、总线周期分时法、总线周期挪用法等。无论使用哪种方法,在DMA传送数据期间,CPU不能使用总线。

计算机体系结构

a)概述定义
1)定义变化史
计算机体系结构是站在程序员的角度所看到的计算机属性,即程序员要能编写出可在机器上正确运行的程序所必须了解的概念性结构和功能特性。

传统体系结构就是指硬件与软件之间的界面,即指令集体系结构。

体系结构是结构、组织、实现、性能4个基本方面组成,其中结构指计算机系统各种硬件的互连,组织指各种部件的动态联系与管理。

b)指令系统:一个处理器支持的指令和指令的字节编码叫指令集体系结构ISA。
1)指令集体系结构的分类,可以根据下述5方面分类:
①操作数在CPU中的存储方式,即操作数从主存中取出后保存在什么地方?(可以分为堆栈、累加器、寄存器组。在求解表达式时,寄存器比堆栈或者累加器能提供更加灵活的次序。更重要的是,寄存器能保存变量,当变量分配给寄存器时,访存流量减少,程序运行加速,代码密度提高。)
②显式操作数的数量,即在典型的指令中有多少个显式命名的操作数。(三操作数指令包括两个源操作数和一个目的操作数;二操作数指令中有一个操作数既是源操作数又是目的操作数。)
③操作数的位置,即任一个ALU指令的操作数能否放在主存中,如何定位?(注意有几个操作数是存储器地址,对于典型的ALU指令,这个数在1-3之间)
④指令的操作,即在指令集中提供了哪些操作?
⑤操作数的类型和大小。

c)RISC关键技术
1)重叠寄存器窗口技术(overlapping register windows):在处理机中设置一个数量较大的寄存器堆,并把它划分为很多窗口。每个过程使用其中相邻的3个窗口和1个公共窗口,而在这些窗口中有一个窗口是与前一个过程共用,一个窗口是与下一个过程共用。与前一个过程共用的窗口可以用来存放前一过程传递给本过程的参数,同时也存放本过程传送给前一过程的计算结果。同样,与下一过程共用窗口可以用来存放本过程传送给下一过程的参数和存放下一过程传送给本过程的计算结果。
2)优化编译技术:RISC使用了大量寄存器,如何合理分配寄存器、提高寄存器的使用效率以及减少访存次数,都要提供编译技术的优化来实现。
3)超流水及超标量技术。
4)硬布线逻辑与微程序相结合在微程序技术中。

d)为了提高目标程序的实现效率,人们对大量的机器语言目标代码及其执行情况进行了统计。对程序中出现的各种指令以及指令串进行统计得到的百分比称为静态使用频度。在程序执行过程中,对出现的各种指令以及指令串进行统计得到的百分比称为动态使用频度。按静态使用频度来改进目标代码可减少目标程序所占的存储空间,按动态使用频度来改进目标代码可减少目标程序运行的执行时间。大量统计表明,动态和静态使用频度两者很接近,最常用的指令是存、取、条件转移等。对它们加以优化,既可以减少程序所需的存储空间,又可以提高程序的执行速度。

e)面向高级程序语言的优化思路是尽可能缩小高级语言与机器语言之间的语义差距,以利于支持高级语言编译系统,缩短编译程序的长度和编译所需的时间。面向操作系统的优化思路是进一步缩小操作系统与体系结构之间的语义差距,以利于减少操作系统运行所需的辅助时间,节省操作系统软件所占用的存储空间。操作系统的实现依赖于体系结构对它的支持。

f)流水的相关处理
1)由于流水时机器同时解释多条指令,这些指令可能有对同一主存单元或同一寄存器的先写后读的要求,这时就出现了相关。这种相关包括指令相关、访存操作数相关以及通用寄存器组相关等,它只影响相关的两条或几条指令,而且最多影响流水线的某些段推后工作,并不会改动指令缓冲器中预取到的指令内容,影响是局部的,所以称为局部性相关。解决局部性相关的两种方法:推后法、通路法。推后法是推后相关单元的读,直至写入完成。通路法是设置相关专用通路,使得不必先把运算结果写入相关存储单元,再从这里读出后才能使用,而是经过相关专用通路直接使用运算结果,以加快速度。
2)转移指令(尤其是条件转移指令)与它后面的指令之间存在关联,使之不能同时解释。执行转移指令时,可能会改动指令缓冲器中预取到的指令内容,从而造成流水线吞吐率和效率下降,比局部性相关的影响严重很多,所以叫全局性相关。解决全局性相关的3种方法:猜测转移分支、加快和提前形成条件码、加快短循环程序的处理。
①尽快获得条件码以便对流水线简化条件转移的处理。例如,一个乘法运算所需的时间较长,但在运算之前就能知道其结果为正或负,或者是否为0,因此,加快单条指令内部条件码的形成,或者在一段程序内提前形成条件码,对转移问题的顺利解决是有好处的。
②程序内广泛使用循环结构,因此流水线大多采用特殊措施以加快循环程序的处理。例如,使整个循环程序都放入指令缓存存储器内,对提高流水线效率和吞吐率有明显效果。
3)中断和转移一样,一样会引起流水线断流。好在中断出现的概率要比条件转移出现的概率低得多,因此只要处理好断点现场保护及中断后的恢复,尽量缩短断流时间即可。

g)RISC使用的流水线技术有3种
1)超流水线技术(super pipe line):通过细化流水、增加级数、提高主频,使得在每个机器周期内能完成一个甚至两个浮点操作。其实质是以时间换取空间。超流水机器的特征是在所有的功能单元都采用流水,并有更高的时钟频率和更深的流水深度。由于它只限于指令级并行,所以超流水机器的CPI(clock cycles per instruction,每个指令需要的机器周期数)稍高。
2)超标量技术(super scalar):内装多条流水线来同时执行多个处理,其时钟频率虽然与一般流水接近,却有更小的CPI。其实质是以空间换取时间。
3)超长指令字(very long instruction word,VLIW)技术:与超标量相同,其同时执行多条指令。不同的是,超标量依靠硬件来实现并行处理的调度,VLM则发挥软件的作用,使硬件简化性能提高。VLIW有更小的CCPI值,但需要有足够高的时钟频率。

h)吞吐率和流水建立时间:吞吐率指单位时间内流水线处理机流出的结果数。对指令而言,就是单位时间内执行的指令数。如果流水线的子过程所用时间不同,则吞吐率p应该为最长子过程的倒数。流水线开始工作,需要经过一定时间才能达到最大吞吐率,这就是建立时间。

i)阵列处理机、并行处理机、多处理机
1)阵列处理器:阵列处理器将重复设置的多个处理单元PU按一定方式练成阵列,在单个控制部件CU控制下,对分配给自己的数据进行处理,并行完成一条指令所规定的操作。这是一种单指令流多数据流计算机,通过资源重复实现并行性。
2)并行处理机:SIMD和MIMD是典型的并行计算机。SIMD具有共享存储器和分布存储器两种形式。
/
分布存储器的并行处理机有两类存储器,一类是附属于主处理机的存储器,主处理机实现整个并行处理机的管理,在其附属的存储器内常驻操作系统;一类是分布在各个处理单元上的存储器,这类存储器用来保存程序和数据。在阵列控制部件的统一指挥下,实现并行操作。程序和数据通过主机转入控制存储器。通过控制部件的是单指令流,所以指令的执行顺序还是和单处理机一样,基本是串行处理。指令送到控制部件进行译码。划分后的数据集合通过向量数据总线分布到所有PE的本地存储器。PE通过数据寻径网络执行PE间的通信。控制部件通过执行程序来控制寻径网络。PE的同步由控制部件的硬件实现。
3)多处理机:多处理机系统是由多台处理机组成的系统,每台处理机有属于自己的控制部件,独立执行程序,共享一个主存储器和所有的外部设备。它是多指令流多数据流计算机。在多处理机系统种,机间的互连技术决定了多处理机的性能。

可靠性和系统性能评测基础

计算机可靠性

a)元器件的可靠性分为3个阶段:开始阶段元器件的工作处于不稳定期,失效率较高;第二阶段为正常工作期,失效率最低;第三阶段元器件开始老化,失效率提高。

b)计算机系统的可靠性R(t)是指它从开始运行到某时刻t这段时间内正常运行的概率。失效率s是指单位时间内失效的元器件与元器件总数的比值。R(t)=e^(-st)
/

c)两次故障之间系统能正常工作的时间的平均值叫平均无故障时间MTBF。MTBF=1/s。

d)用平均修复时间MTRF来表示计算机的可维修性。

e)计算机的RAS是指用可靠性R、可用性A、可维修性S这3个指标来衡量一个计算机系统。

计算机的可靠性模型

a)串联系统:可靠性计算R=R1*R2…*Rn;失效率计算S=S1+S2…+Sn。

b)并联系统:可靠性计算R=1-(1-R1)(1-R2)…(1-Rn);失效率计算S:
/

c)N模冗余系统
/

计算机系统的性能评价

a)常用方法
1)时钟频率
2)指令执行速度
3)等效指令速度法
4)数据处理速率
5)核心程序法

b)基准测试程序
1)有多种基准程序,例如主要测试整数性能的基准程序、测试浮点性能的基准程序等。
①整数测试程序:dhrystone是一个综合性的基准测试程序,它是为了测试编译器及CPU处理整数指令和控制功能的有效性,人为选择了一些典型指令综合起来形成的测试程序。dhrystone程序测试的结果由每秒多少个dhrystones来表示。不同厂家在测试MIPS值时,使用的基准程序不同,因此有时虽然MIPS值相同,但是其性能却可能差很大。这是因为各厂家在设计计算机时针对的是不同的应用领域。
②浮点测试程序:科学计算和工程应用中浮点计算工作占比大,大部分工作站使用linpack和whestone基准程序测试浮点性能。

Logo

openvela 操作系统专为 AIoT 领域量身定制,以轻量化、标准兼容、安全性和高度可扩展性为核心特点。openvela 以其卓越的技术优势,已成为众多物联网设备和 AI 硬件的技术首选,涵盖了智能手表、运动手环、智能音箱、耳机、智能家居设备以及机器人等多个领域。

更多推荐