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

计算机体系结构基础引言

文章目录

  • 计算机体系结构基础引言
    • 1.1一以贯之
      • 1.1.1为什么我按一下空格键,PPT会翻一页
    • 1.2什么是计算机
    • 1.3计算机的基本组成
      • 1.3.1冯.诺依曼结构
      • 1.3.2有趣的二进制

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

计算机体系结构(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提供了用户与计算机交互的界面,像登录界面之类。
下面正式开始正文部分!

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-南桥两片结构
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. 【学习笔记】高性能计算之胡伟武《计算机体系结构基础》(第三版)

    自2022年3月1日起每天更新,3.3已更新至第三章 写在前面 1. 引言 1.1 计算机体系结构的研究内容 1.2 衡量计算机的指标 1.3 计算机体系结构的发展 1.4 体系结构设计的基本原则 2 ...

  2. 计算机体系结构基础中的问题(可能的问题)回答(胡伟武)

    计算机体系结构基础中的问题回答(胡伟武) 文章目录 计算机体系结构基础中的问题回答(胡伟武) 从按下键盘到PPT翻页的过程? 卡顿的原因? CPU微结构中影响性能的因素? 独显的数据传输问题? 什么是 ...

  3. 1【计算机专业必备基础知识】《计算机体系结构基础》(胡伟武)速读笔记(上篇)“这位同学,请描述一下PPT完成翻页时电脑软硬件是如何协作的?”

    前言 在学习计算机的这几年,一直有些很基础的问题困扰着我,C++.Java照写,但总感觉没有底气.本科学过操作系统.数据结构.微机原理.数字电路,(不知是不是因为我给忘干净了还是咋的,)平时遇到学术道 ...

  4. 计算机体系结构基础知识

    1.计算机体系结构是什么? ▪ 计算机体系结构--传统是研究如何在给定工艺限制和软件要求下设计更好的计算机.最早指的是指令集的设计: ▪ 后来发展为:涉及计算机硬件(逻辑设计和封装技术).指令集体系结 ...

  5. 计算机体系结构基础最近的知识点

    我是小康小白,一个平平无奇的Java小白.热爱有趣的文字,生活和远方. 个人博客:https://blog.csdn.net/weixin_45791445 有问题欢迎QQ联系:1059320343 ...

  6. chapter16 计算机体系结构基础

    1big endian little endian 低地址保存的是整数的地位称为little endian,反之称之为big endian.(x86平台为小端) 2 cpu操作的基本步骤为 eip取指 ...

  7. 计算机体系结构基础知识介绍之缓存性能的十大进阶优化之减少命中时间和流水线访问和多组缓存增加带宽(三)

    优化二:减少命中时间的方式预测 路预测是一种高速缓存优化技术,它在高速缓存中保存额外的位来预测下一次高速缓存访问的路(或者组内的块).这种预测可以提前设置多路选择器来选择期望的块,并且在那个时钟周期内 ...

  8. 计算机网络应用基础论文,计算机网络应用基础概述论文

    如今计算机网络技术应用的范围比较普遍,已经渗透到了人们工作和生活的各个方面.计算机网络的应用代表着社会进入了一个全新的时代,是生产力发展到一定阶段的产物.下面是答.案.网 ZQNf.Com小编给大家推 ...

  9. 计算机体系结构复习笔记

    本篇复习笔记对应的课本是<计算机体系结构 量化研究方法> 参考了老师的PPT,以及总结了课后习题和考试题 文章目录 1. 计算机体系结构基础 1.1 计算机系统的分层 1.2 计算机体系结 ...

最新文章

  1. python and or 与 | 的比较
  2. Hibernate Annotation 学习
  3. Opencv 数学基础--范数(17)
  4. Ubuntu在终端执行命令时出现的错误
  5. package.json mysql_package.json入门
  6. React开发(236):dva概念1数据流向
  7. 突然发现被点名(理想恋人游戏)
  8. Log4J基础详解及示例大全
  9. 乔布斯18岁求职信拍卖价22.24万美元,值吗?
  10. python docx 替换文字_查找并替换.docx文件中的文本 - Python
  11. atitit.薄伽梵歌overview  attilax 读后感
  12. laravel后台可修改配置自动加载
  13. 计算机免费证件照,完全免费!一键替换证件照背景色,再也不用花钱重新拍了...
  14. 电脑维修小知识(我抄的!)
  15. python并集符号_Python No.18_集合以及表示符号
  16. 广告平台精准推送系统解决方案架构
  17. 燕云台的滑铁卢——豆瓣的营销推广价值
  18. python辗转相除法算法_辗转相除法的算法
  19. 北京公共计算机考试准考证打印
  20. HTML ===> 向右侧展开div

热门文章

  1. 每日词根——pact(固定->紧实->意见达成一致->和平->条约)
  2. 用友UAP开发环境搭建步骤
  3. SQL中窗口函数中的FOLLOWING关键字
  4. mosquitto 常见客户端命令
  5. Mongodb创建用户角色
  6. 解除与设置计算机锁定
  7. java merkle树,梅克尔树Merkle trees
  8. vs+Qt+GLEW配置
  9. Netty入门之BIO,NIO和AIO编程
  10. 银河上半年开放式基金排名:股票型基金