计算机体系结构基础引言

关与作者更多博客请访问云里云外开源社区

计算机体系结构基础引言

本篇的主要内容来自胡伟武老师等著的《计算机体系结构基础》第二版,有兴趣的朋友们可以自行学习

计算机体系结构(Computer Architecture)是描述计算机各组成部分及其相互关系的一组规则和方法。简单来说就是讲如何造CPU的核心课程。

信息产业的主要技术平台都是以中央处理器(Central Processing Unit,简称CPU)和操作系统(Operating System,简称OS)搭建起来的。常见的如雄踞PC端的Wintel平台(英特尔公司的X86架构CPU和微软公司的Windows操作系统构成的,Windows和Intel的结合)和称霸移动端的“双A”平台(谷歌公司的Android操作系统和ABM公司的ABM架构CPU)

这些东西重要吗?大家看看自己和身边的朋友,手机绝大多数是Android和ios系统,芯片则大多是高通、苹果的;电脑OS是Windows和Mac OS,CPU则是英特尔和AMD。但现在我们国家必须要有自己的CPU和操作系统,不然就会受制于人。最简单的道理,每年我国进口芯片的金额已近远超进口石油,实现关键技术和设备国产化是保证国民享受到信息社会带来的福利的重要保障。
在这里插入图片描述

说了那么多,究竟什么是CPU,什么是操作系统呢?有图有真相,请看。中间这个小方块就是信息产业的核心——CPU,别看这么小一块,它的内部集成了数十亿的晶体管,没有了它,我们的手机、电脑、工业设备、飞机、军事装备就无法运转。
这是中国第一块完全自主验证的通用处理器——龙芯处理器操作系统就更加虚无缥缈一些了,现在常用的OS如下
常见OS操作系统简单来说就是连接硬件和应用软件之间的桥梁,没有操作系统,我们直接操作硬件会非常复杂。与我们关联最紧密的一点就是OS提供了用户与计算机交互的界面,像登录界面之类。
下面正式开始正文部分!

1.1一以贯之

计算机体系结构的研究方向,左侧是纵向技术方向,右侧是横向的应用研究方向。
计算机体系结构研究方向下面我们用一个非常常见的情形来描述计算机体系结构的研究内容之间的联系

1.1.1为什么我按一下空格键,PPT会翻一页

我将此过程大致分为三个阶段,分别是发送信号——中断处理——应用程序。整个过程设计到诸多概念,为了大家更清晰的了解整个过程,我会尽力用最生动的语言去描述。为了帮助理解,还是要先简要介绍一些基本概念。当然有基础的童鞋可以直接往下走。

当我们按下空格键的那一瞬间——
键盘首当其冲

键盘属于输入/输出设备(简称IO设备)。IO设备大都是具有特定功能的部件,像显示器、网卡、硬盘、打印机、音响等等。它们一般都是由各自的设备控制进行控制,设备控制器会提供一组寄存器的接口,寄存器内容的变化也会引起设备控制器执行一系列复杂的动作。我们可以在电脑控制面板搜索设备管理器,里面可以看到有哪些设备存在。

当空格键被按下后,键盘控制器会产生一个对应的扫描码,存放在键盘控制器中的数据寄存器中,完成操作后会向南桥芯片发送一个信号。(南桥芯片是管理键盘等对带宽要求较低的IO接口)那南桥芯片是如何通知CPU呢?

中断信号首先发送给南桥芯片的中断控制器中的中断请求寄存器,将其某一位置为1,如果该位没有被屏蔽则产生一个中断信号给处理器。

处理器(CPU)与IO设备间的同步(协同工作)有两种方式,分别是轮询和中断。轮询可以理解为设备控制器中有一个表示当前设备状态的状态寄存器,CPU需要不断读取IO设备的状态寄存器,所以也被称为轮询,但显而易见,这种方式效率极低。
另一种方式时中断,这是由设备主导的,可以理解为当设备完成某个操作时向处理器发出中断信号。处理器收到中断信号后,会根据处理器中的一个叫做Status的状态寄存器的屏蔽位来判断是否处理中断信号。如果可以处理的话,cpu会暂停当前的执行进程,转而去执行特定的中断处理程序

南桥芯片向CPU发送外部中断信号后,CPU接受到信号,并且将一个叫Cause的控制寄存器的某一位置为1,表示收到中断信号。接着CPU的一个叫Status的状态寄存器表示可以处理此中断信号。这就是第一个阶段——发送信号。
第二个阶段——中断处理。CPU拿到中断信号,也表示可以处理了,那究竟怎么处理呢?这涉及到指令的部分。中断信号在计算机内以指令的形式表示,但中断是一种特殊的指令,和一般的加减指令不同,处理中断需要专门的机制。

CPU中与IO相关的任务通常会以中断方式进行处理。
中断处理程序内容很多,可以拿出来单独写一章,这里只做简单介绍。
后面讲到讲到指令存储在内存中,并且是以二级制的形式保存 。
那计算机是怎样识别这样一串010110的指令呢?不同的计算机有不同的指令集,指令集对指令的格式有着严格的规定,例如0-5位是指令码,表示指令的功能,6-10位是源操作数1,11-15是源操作数2等等。CPU拿到指令后对指令分析,这步叫做译码。
一条指令的处理全程可以分成取指、译码、执行、访存、写回

中断信号附在一条译码后的指令送到重排序缓冲(Re-order Buffer,ROB)中。

计算机是指令驱动的,每秒会处理百万记的指令,这些指令流在处理时是按需进入,但指令间会有很多相关关系,在译码时会乱序,到写回时又根据进入时的顺序按序写回。译码后的指令就进入了一个存放指令的容器,叫重排序缓冲,ROB。
中断处理程序对于中断有严格的要求,中断指令前的指令必须全部执行完毕,其后的指令必须全部取消。

当中断指令前的指令都执行完毕写回后,处理器开始执行中断指令。
ROB向所有模块发出一个取消信号,取消该指令后的所有指令。同时修改控制寄存器,将系统态变为核心态(为了执行系统级的中断处理程序,普通的用户态不能执行)。并保存中断(例外)原因和程序计数器PC到指定的控制寄存器中;然后把程序计数器的值置为0x80000180这个例外处理入口地址进行取指。

0x是表示16进制,0x80000180是MIPS指令集规定的操作系统例外处理入口地址。

处理器在这个内存地址取到指令后开始执行操作系统代码。操作系统首先保存处理器现场,包括寄存器内容等。保存现场后,操作系统向CPU的状态寄存器读取例外(中断)原因。发现是外部中断后,向南桥的中断控制器读取中断原因,同时清除南桥的中断位。读回来发现中断原因是有人敲了空格键。

清除中断位是为了中断后的指令正常执行

这就是第二阶段——中断处理
第三阶段——应用程序部分
假设我们使用的是PowerPoint,这在操作系统中以进程的方式管理

进程有三个状态,运行态、阻塞态、睡眠态,进程在等待IO输入时。

操作系统发现有一个叫做PowerPoint的进程处在阻塞态,这个进程对空格键有响应,就把PowerPoint唤醒。PowerPoint唤醒后处在运行态,发现操作系统传来的数据是个键盘输入空格,表示要翻页,PowerPoint就把下一页的内容准备好,调用操作系统的显示驱动程序,把要显示的内容送到显存,有GPU通过访问显存空间来刷新屏幕。
第三个阶段结束,看完的小伙伴给自己鼓个掌吧!
在这里插入图片描述
问题还没结束哦!如果在PPT翻页过程中很卡,这是为什么呢?

  • 首先看此时计算机中有没有很多任务在运行,这些任务会占用CPU,内存资源,IO带宽,导致PowerPoint分到的资源不够多,造成卡顿。
  • 如果同一时间任务不多的话呢?是CPU太慢吗?其实翻页时,CPU干的活不多,通过上述流程我们也可以看出。
  • 一种可能的情况是下一页包含很多图形,尤其是矢量图,,需要GPU画出来,GPU忙不过来了。
  • 另一种情况是要显示的内容很多,要把大量数据从PowerPoint的空间传给GPU使用的专门空间,内存带宽不足导致传输不及时。

计算机体系结构的设计人员就像领导人,不能只总览全局和上层建筑。既要体察基层民情民意,又要了解国际社会运筹帷幄,否则就不能很好的管理国家。对计算机体系结构来说,总览全局和上层建筑就是体系结构设计;了解国际社会运筹帷幄就是了解应用程序、操作系统、编译器的行为特征;体察基层民情民意就是了解逻辑、电路、工艺的特点。

永远不要就体系结构论体系结构,要做到应用、系统、结构、逻辑、电路、期间的融汇贯通。就像《论语》中说的“吾道一以贯之”

在这里插入图片描述

上图把计算机系统分为应用程序、操作系统、晶体管四个大层次,有三个层次将他们连接起来。第一个层次是API(Application Program Interface),API是应用程序的高级语言编程接口,在编写程序源代码时使用,常见的有C语言,Java,JS
第二个界面是指令系统(Instruction Set Architecture,ISA)介于硬件和操作系统之间。常见的ISA包括X86、ARM、MIPS、LoongISA。指令系统除了实现加减乘除等操作的指令外,还包括系统状态的切换、地址空间的安排、寄存器的设置、中断的传递等运行环境的内容。第三个界面是工艺模型、介于硬件系统与晶体管之间,工艺模型是芯片设计厂家提供给芯片设计者的界面。
注:在API与ISA之间还有一层应用程序二进制接口(Application Binary Interface)

一般来说,计算机体系结构的研究内容主要包括指令系统结构、硬件系统结构和CPU内部微结构。但体系结构设计者一定要上知天文下知地理,了解应用程序、操作系统、晶体管级行为。
以下就不一一展开说了,大家可以在后面的章节中找到自己的答案。

  • 指令就是应用的 “ 算子 ”
    • 哪些硬件实现 ? 哪些软件实现 ?
  • 结构设计结合应用行为
    • Cache 利用应用访存局部性
    • 转移猜测利用转移相关性和重复性
  • SA 和微结构要考虑OS 的需求
    • 页表和TLB
    • 多线程支持 、 虚拟机支持
  • 结构设计要考虑晶体管属性
    • Cache 容量影响主频
    • 多发射结构发射电路影响主频

1.2什么是计算机

< id=“1.2”>1.2什么是计算机
计算机顾名思义就是用来进行计算的机器,计算的形式多种多样,有数字计算包括加减乘除和逻辑运算等。大家不要只认为我们的智能手机和玩游戏的电脑才算计算机。其实下到手表、电话、数码相机、打印机、路由器等设备的核心部件都是计算机,上到服务器、工作站,甚至是飞机、轮船、等工业设备的核心也是计算机,还有在新闻中出现的用来模拟核武器制造的超级计算机都属于计算机。

在这里插入图片描述
计算机的本质还是计算,我们平常浏览的网页、玩的桌面游戏、听的音乐、手机上的APP都是通过底层的计算产生的服务。

1.3计算机的基本组成

< id=“1.3”>1.3计算机的基本组成
计算机专业的童鞋们不详细了解冯诺依曼和二进制是不合格的,相信我,了解了他们之后你会走进一片新的天地。
芯片的一层层结构抽象

芯片层次图

1.3.1冯.诺依曼结构

<id=“1.3.2”>1.3.1冯.诺依曼结构
冯.诺依曼结构的三个基本思想是:

  • 采用二进制逻辑
  • 程序和数据一样存放在内存
  • 计算机由五个部分组成(运算器、控制器、存储器、输入设备、输出设备)
    冯.诺依曼计算机的工作原理

冯诺依曼体系结构存储器:负责记忆。包括程序指令数据
运算器:负责计算。
控制器:包含指令寄存器、指令计数器(Program counter,PC)、译码器等等
输入输出设备:我们看的屏幕,打字的键盘,操作的鼠标,听音乐的音箱都属于这一类。
这里有很多专业名词,这里不太懂没关系,后面的系列会有更详细的介绍。
接下来用一个例子来介绍冯诺依曼结构的运行过程。计算机计算3 x 5的过程。由前面的介绍我们知道数据和指令都是存储在内存中。先画内存,可以理解为一个矩形的长条,分了很多块,每一块都有序号。
在这里插入图片描述现代计算普遍采用冯.诺依曼结构的思想,也可以亲切的称计算机为数据和指令搬运机。它的核心思想是将指令和数据都存储在存储器中,CPU从内存中取指令和数据运算并将结果也放入内存中。概括起来就是存储程序和指令驱动执行
利用冯.诺依曼的思想来制造计算机硬件可以有多种方式,这里先行介绍一种经典模式,有助于理解前面的流程。
CPU-南桥两片结构
在这里插入图片描述CPU-南桥Tips:南桥芯片:主要负责硬盘、键盘以及各种对带宽要求较低的IO接口与内存、CPU之间的数据交换。本质也是一块集成电路片。
GPU(Graphic Processing Unit):图形处理器,负责图形、视频和可视化计算等任务,在计算机中担负越来越重要的角色。

1.3.2有趣的二进制

< id=“1.3.2”>1.3.2有趣的二进制

在这里插入图片描述这类图片在各种科技大片中层出不穷,但本质代表着计算机是以二级制,也就是0和1来存储数据和程序的。也是通过二级制来传输数据的。二级制本身是一种数字表示方法,与日常的10进制相比,二级制逢二进一。
在这里插入图片描述计算机为什么用二级制表示而不用日常的10进制或者8进制呢?
这是根据计算机最底层的制造有关,用二级制的0和1表示电路的通和断是最便捷的方法而且二级制表示逻辑的真和假也是最适合的。
这里不具体介绍二级制的应用的运算,感兴趣的同学们可以自行度娘。
忘了介绍,中国古代的八卦也属于二进制的应用
在这里插入图片描述
至此,引言部分结束,还有很多关于《计算机体系结构基础》的博客敬请期待。感兴趣的同学也可以自己看书。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值