Listening to the Words

CPU原理の勉強中

《CPU原理の勉強中》

计算机核心

计算机的核心有三大件: CPU内存硬件,他们之间有个联系的桥梁(Bridge)—I/O总线

功能

CPU:程序指令的计算单元,功能只有一个执行二进制的计算
内存: 程序指令的存储单元

进程(process)和线程(thread)

进程:资源分配的基本单位

每个进程有独立的内存资源

线程: 程序运行的基本单位(路径)

程序执行的单位

线程调度(Thread Scheduling)

CPU的工作方式是串行,因此不同线程间的任务需要调度,CPU执行一会A线程然后切换到B线程,这个过程被称之为:线程切换(threading switch)或者上下文切换(context switch)

CPU如何完成切换的呢?

小明一边做数学题,一边做英语题,听到闹铃提示小明就切换一下,这个过程必不可少的东西是状态记录(register),每次切换都要知道以前做到了哪里,这个记录就是CPU的寄存器(register),这个过程就是上下文切换.

为什么使用寄存器而不是内存记录?

答案是内存太慢了,CPU和内存是两个不同的组件,它们通讯不管多块,相对于CPU内部的需要都是太慢了.

还可以更快捷吗

为了更加快速运用寄存器和内存之间的通讯效率,在CPU中还存在一个功能是:缓存(cache)共有三级称之为三级缓存.

L1,L2,L3每一级别都比下一级别快上几个数量级,寄存器从内存里拿到指令首先会搜索L1,如果没有在向下检索,一直到内存.

这个缓冲区提高了寄存器指令的运行效率,为什么这么说呢?

通常来说,在内存里的A B C D E 几个指令是顺序执行的,恰好此时他们都在寄存器顺序排好,这就节省了获取指令上下文切换的时间了

多核心CPU (dual core)

《CPU原理の勉強中》

现代CPU通常是多核心的,一次在一个CPU了会存在多个cpu核心,也意味着可以做到多线程并行(物理上的)处理程序.

因为存在这多核心并行,因此运行计算指令时就会出现多线程竞争的资源的局面,为了解决这个竞争问题,就有了线程锁和线程通讯.

多线程的并行的核心是线程间必须是资源共享的,左手的事情,右手也必须知道否则就会出现资源不对等,每个CPU厂商都有不同的物理通讯协议来处理线程缓存一直性例如:MESI协议

点赞