计算机之基础

2020年3月13日 | 作者 Siran | 2000字 | 阅读大约需要4分钟
归档于 计算机 | 标签 #计算机

系统的硬件组成


总线

贯穿整个系统的是一组电子管道,称作总线,它携带信息字节并负责在各个部件间传递。总线通常被设计成传送定长的字节块,也就是字(word)。字中的字节数(即字长)是一个基本的参数根据具体的系统而定(大部分4字节或者8字节)。解决不同设备之间的通信

总线的分类:

1. 片内总线:芯片内部的总线,寄存器与寄存器之间,寄存器与控制器、运算器之间。高集成度芯片内部的信息传输线
2. 系统总线包含以下几个部分:

  • 数据总线(一般与CPU位数相同(32位,64位)):双向传输各个部件的数据信息、 数据总线的位数(总线宽度) 是数据中线的重要参数
  • 地址总线(地址总线位数=n):指定源数据或目的数据在内存中的地址、地址总线的位数与存储单元有关
  • 控制总线:用来发出各种控制信号的传输线、由控制总线从一个组件发给另外一个组件、可以监视不同组件之间的状态(就绪/未就绪)

CPU、主内存、IO设备、各组件之间的信息传输线

总线的仲裁:比如主存需要和硬盘或者IO设备交换数据,那么总线应该是由硬盘使用还是IO设备使用还是主存使用,为了解决不同设备使用的优先权的问题。

仲裁的方式:

  • 链式查询:电路复杂低,仲裁方式简单;优先级低的设备难以获得总线使用权;对电路故障比较敏感
  • 计时器定时查询:仲裁控制器会对设备编号并使用计数器累计计数;接受到仲裁信号后,往所有设备发出计数值;计数值与设备编号一致则获得总线使用权
  • 独立请求:每个设备均有总线独立连接仲裁器;设备可单独向仲裁器发送请求和接受请求;当同时收到多个请求信号,仲裁器有权按优先级分配使用权;响应速度快,有线顺序可动态改变;设备连线多,总线控制复杂。

I/O设备

系统与外部世界的联系通道。上图中有4个I/O设备:鼠标、键盘、显示器、长期存储数据和程序的磁盘驱动器(磁盘)。每个I/O设备都通过一个控制器或适配器与I/O总线相连。控制器和适配器之间的区别主要在于它们的封装方式。控制器是I/O设备本身或者系统的主印制电路板(主板)上的芯片组。而适配器则是一块插在主板插槽上的卡。

CPU与I/O设备的通信:

  • 程序中断:当外围I/O设备就绪时,向CPU发出中断信号;CPU有专门的电路响应中断信号;提供低速设备通知CPU的一种异步方式;CPU可以高速运转同时兼顾低速设备的响应
  • DMA(直接存储器访问):

存储器

为什么计算机断电,内存数据丢失?磁盘数据不会丢失?

  • 主存储器:是一个临时存储设备,在处理器执行程序时,用来存放程序和程序处理的数据。从物理上说,主存是由一组动态随机存取存储器(DRAM)芯片组成的。从逻辑上说,存储器是一个线程的字节数组,每个字节都有其唯一的地址(数组索引),这些地址是从零开始的。 内存:RAM(随机存取存储器:Random Access Memory);通过电容存储数据,必须隔一段时间刷新一次;如果断电,那么一段时间后将丢失所有数据
  • 辅存储器磁盘

处理器

CPU简称处理器,核心是一个大小为一个字的存储设备(或寄存器),称为程序计数器(PC),任何时候PC都指向主存中某条机器语言指令。

处理器从程序计数器指向的内存处读取指令,解释指令中的位,执行该指令的简单操作,然后更新pc(程序计数器),使其指向下一条指令,而这条指令并不一定和主内存中刚刚执行的指令相邻。

寄存器文件是一个小的存储设备,由一些单个字长的的寄存器组成,每个寄存器都有唯一的名字。

ALU(算数/逻辑单元)计算新的数据和地址值。

下面使一些简单的例子,CPU在指令的要求下可能会执行这些操作:

  • 加载:从主存中复制一个字节或者一个字到寄存器,以覆盖寄存器原来的内容。
  • 存储:从寄存器复制一个字节或者一个字到主存中的某个位置,覆盖这个位置上原来的内容。
  • 操作:把两个寄存器的内存复制到ALU,进行算数运算,并将结果放到一个寄存器中,覆盖原来的值。
  • 跳转:从指令本身中抽取一个字,并将这个字复制到程序计数器(PC)中,以覆盖PC中原来的值

执行一个可运行程序的过程

我们在键盘上输入字符串,程序将字符逐一读入寄存器,在把它放到内存中。

可以直接使用存储器存储(DMA)技术,数据可以不通过处理器而直接从磁盘到主存

一旦文件中的代码和数据被加载到主存中,处理器就开始执行程序。这些指令产生的结果从内存复制到寄存器文件,在从寄存文件中复制到显示设备,最终显示。

高速缓存工作原理

  • :是指存放在一个存储单元中的二进制代码组合
  • 字块:存储在连续的存储单元中而被看作是一个单元的一组字

高速缓存的替换策略:

  • 随机算法
  • 先进先出算法(FIFO):把高速缓存看做是一个先进先出的队列;优先替换最先进入队列的字块
  • 最不经常使用算法(LFU):优先淘汰最不经常使用的字块;需要额外的空间记录使用频率
  • 最近最少使用算法(LRU): 优先淘汰一段时间内没有使用的字段;一般使用双向链表;把当前访问节点置于链表前面(保证链表头部节点是最近使用的)