计算机基本体系结构

计算机基本体系结构

CPU(运算器、控制器、寄存器)
	运算器:进行数字运算、逻辑运算
	控制器:控制数据的存取 
	寄存器:运算过程中数据的暂存位置
	
RAM
	数据存储单元,每8位一个存储单元,称为cell
	每个cell都有一个唯一的十六进制地址标识,0x00,00x01
	为了确保CPU能在内存中寻址寻找数据,中间需要一个中间件,称为north bridge
	
	CPU采用线路复用(32位电路)的方式完成数据寻址、数据存储等,例如00表示寻址、01表示数据读取等
	
	
	PAE	Physical Address Extension	物理地址扩展 

		在32位电路上又加了4位电路, 使32位CPU支持能够使用大于4G的内存 


		
	CPU缓存 
		将RAM中具有热区的数据缓存,加快CPU读取数据速度(20%)
	
		当缓存占满时,会使用一定的置换策略进行数据置换(例如LRU),用于确保当后续数据需要被载入时有足够的空间
	
		依赖于程序局部性
	
			空间局部性:缓存加载数据时,除了加载对应cell的数据外,还会加载其附近的数据
			时间局部性:一段数据被访问一次,其可能在一段时间内会再被访问 
		
		
		缓存类型:
			一级缓存
				一级指令缓存
				一级数据缓存 
			二级缓存 
			三级缓存 

			一级、二级缓存对于多个CPU或者多核CPU来说是独有的
			三级缓存是所有CPU共享的
		
		
			由于RAM与缓存的空间相差太大,会导致缓存命中率低,采用了N路关联技术(一路关联、二路关联、四路关联、八路关联) 	
	

			CPU处理写操作时,由于CPU是直接和一级缓存打交道,也就意味着该数据的修改会通知一级缓存、二级缓存、三级缓存、内存,此技术称为通写write through
			
			另外一种技术称为write back,回写,CPU对缓存数据进行修改后,不会立即更新到RAM,只有数据要被缓存通过某种置换策略丢弃时才会被同步到RAM
	
	
	
显卡	同样需要北桥与CPU进行大量数据交换

I/O设备[磁盘、网卡、键盘、鼠标等]通过插入South Bridge,再通过North Bridge与CPU进行关联
	高速IO	PCI-E插槽,接入North Bridge 
	低速IO	PCI[外部设备互联]插槽,接入South Bridge

CPU架构

SMP 对称多处理器 

NUMA  非一致性内存访问 


	
	
	
	
	
CPU如何区分不同的I/O设备?   I/O Port 

	任何一个I/O设备为了和CPU进行数据交互,都要向CPU申请一片连续的I/O port
		

I/O设备控制器/适配器 
	将对应的I/O设备的信息转换成总线上可以传输的信号、进行信号的校验等
	
	

	
CPU如何获知哪个外部设备来了数据?

	Poll:CPU轮询,效率低 
	通知机制 
		为了确保I/O设备与CPU进行数据信号交互,每个I/O设备需要向CPU中断控制器注册信号通路
		
		CPU中断控制器[Interrupt Controller],即CPU暂停处理当前的事务,来接收外部设备来的信号,最起码先把信号加载到内存 
		
		CPU Context Swith: 上下文切换 ,进程在CPU上切换被CPU执行 
		
		
DMA: Director Memory Access
	CPU如果总是控制I/O设备读取数据,效率低下;其解决方案,CPU检测到I/O设备支持通过DMA机制,CPU将给DMA进行授权,让DMA由DMA芯片控制I/O设备将数据读取到内存,DMA一般是把数据读取到内存中最容易寻址的一块区域;内存中还有一块底层区域用于BIOS
	
	DMA数据读取完成后,要向CPU中断控制器发送信号,告之CPU数据加载完成 
	
	临界区
		指的是有可能发生总线冲突的区域 
	
	
	
		
由于各硬件设备的速度差异较大,因此CPU还要具有能够协调各硬件协同工作的能力;通过脉冲信号(电平信号)完成

<================================================================================>

OS

Process: 进程
每个进程运行过程中要获取硬件资源
系统资源:CPU时间、存储空间

如何让CPU运行多个进程?

在CPU上按时间进行切片,也就是说CPU会为每个进程指令分配一定的运行时间

由指令计数器记录每个进程在时间片结束时,其指令运行的条目数 

进程在运行时还需要RAM进行数据保存,如何确保多个进程共同使用RAM存储数据且不冲突?

按内存空间进行切片是不合适的
	进程结束时可能会造成内存中存在好多漏洞
	万一事先分配的内存空间不足,可能会覆盖其他进程所使用的内存空间 

如何解决?
	
	事先切割内存,以4K为默认单位,每个4k的存储槽称为页框page frame,每个4k中存储的数据称为页面page
	
	在此基础上加一个映射机制,让每一个进程都认为自己拥有完整的内存使用,此映射器中用于保存线性地址与物理地址的映射关系 

	每个进程认为自己拥有的内存地址空间称为线性地址,真实的内存称为物理地址

I/O设备

内核 --> 进程  

CPU在运行内核进程时,称为内核模式

CPU在运行用户空间进程时,称为用户模式,而用户模式的进程是不允许直接操作硬件的

CPU在进行一些指令时是分级别的,或者称为ring

	ring -1	硬件辅助虚拟化 
	ring 0	特权指令
	ring 1 
	ring 2 
	ring 3  用户空间指令,完全虚拟化[纯软件模拟]
posted @ 2020-05-17 13:19  知秋一叶9527  阅读(1479)  评论(0编辑  收藏  举报