cpu的组成,执行逻辑,以及存储器和cache的数据读取原理

常见操作系统包含linux,windwos ,unix和mac os等

1. 系统的基本组成:

一个系统基本组成如下图:

2.cpu和内存关系

其中操作系统最关键的就是cpu和内存

2.1 cpu 由三个模块组成:

 pc(program counter)程序接收器: 里面存放下一条命令的地址,负责 从内存中调取数据(存放指令)

registers 寄存器:  通过pc的读取到的数据,寄存在registers寄存器上

ALU 运算单元(算数逻辑单元): 将寄存器的数据进行运算,然后写回到内存上

cache:(缓存): 将部分数据存放缓存

Q:为什么会有缓存, 是由于cpu计算很快,内存会相对慢, 所以部分数据会寄存在缓存上

2.2 cpu和内存之前执行逻辑

首先需要明白,cpu的一个基础单元是线程,

cpu在执行一个线程的时候,会将执行的地址存放在pc, 以及执行的数据执行的数据存放在寄存器;

停止执行线程的时候, 会将执行线程的地址,以及数据存放回内存(其中数据可能会存放在缓存的部分)

2.3 什么叫做单核双线程

单核单线程,是指一个cpu 有一个pc 和一个寄存器 为单核单线程

单核双线程,是指一个cpu有两个pc 和两个寄存器,为单核双线程

注:为什么要多线程, ALU(计算单元)的运行速度非常快,是有能力同时跑两套pc和寄存器的线程执行

3.内存读取以及cache缓存逻辑

 3.1从内存读取数据,一次读取多少?

需要先明白一个概念,cpu从内存(0101010之类的数据)读取数据,是一位一位的读取,还是一次取一片,答案是一次取一片,32位系统从内存去4个字节,64位从内存去8个字节,

详细原因如下:

内存和cpu中间通讯是通过总线通讯, 总线默认传输的是字(word),每次提取数据可以提取一个字长(字长,可以虚拟的理解为, 一个总线存在多个通道,一次提取多个字)

注:

计算器最小存储单元是字节(Byte);

计算器最小传输单元是比特/位(bite)   1Byte=8bit

即,

32位系统=数据传输在总线一次数据传输32bite=内存中存取的4个Byte

 64位系统=数据传输在总线一次数据传输64bite=内存中存取的8个Byte

3.2  存储器的分层

存储器的分层如下图:从cpu寄存器的存储是最快的——其次是cache 缓存(有区分l1,l2,l3,其中l3是共享缓存,可能是多个核共享的缓存—— 其次是主机内存——其次是磁盘——其次是远程文件存储

从存储读取的速度如下表:

3.3. cache缓存
a.cache缓存分级

cache缓存分级: l1 ,l2,l3的图示区分

多核cpu,每一核都有自己的l1,l2的cache 缓存,   多个核心共享l3的核心

读取速率,l1>l2>l3 

b.cache数据读取逻辑:

第一次提取,会从内存中提取, 然后存放到l3 - 再存放到l2 -l1-寄存器, 

后续在读取数据时,会从 寄存器-l1-l2 -l3-内存的方向进行读取(此处仅说cache的缓存,l1 l2 l3)

注意:多核中,L1 or L2  数据有变化,会通过数据一致性协议(MESI,MSI,MOSI,Synapse,Firefly,Dragon )同步给其他的核,然后其他核重新去内存读取

(为什么不存储到l3,从l3读取?  答:此案例为单个cpu多核, 实际环境可能为多个cpu多核心,是不同的l3)

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值