1. “虚拟” to “现实”

首先可以看这张图片,下面的 Physics 所指的是我们的物理世界中看得见摸得到或者是客观存在的事物,而人类希望将自己的工作内容或者需求以某种方式映射到物理层面上,用物理变化带来的影响来完成人类工作内容。例如早期的计算器——算盘先生,通过拨动被赋予数值意义的算珠,完成数值运算。但这是一些简单的工作,那么要完成更加复杂的工作呢?播放视频、计算并生成电子表格、自动化控制一个系统环境运作,这些该工作如何做到映射在物理层面上?这样想想,哇!真是一件够复杂的事情,这两个中间的空白差距太大了。

那么从广义上来讲,计算机体系结构就是构建一个抽象的描述,将问题一层一层转化,并且实现出具体的层级,用来连接这两个层面,填补上中间的这片差距空白。但它的工作不仅仅是这些,计算机体系结构这么复杂当然想要设计出一个尽量不发生改变或者不发生大的变化的结构,那么就将这用来完成桥接的中间内容分层,细化出更加细节的抽象层或其它层级用来解决一个个细小的问题,那么这样就不会因为物理层或者应用层的一点点变化而发生翻天覆地的改变,这样就能重复性的利用设计,将可利用的物理事物转化为人类希望想要的应用。
[注]:这里的解释是笔者概括性的解释,也许有点难理解,或者说笔者的描述不够好,还请见谅!

这张图是对整个计算机环境的抽象,从上至下的层级表示越往下的被依赖程度越高,越往上则依赖程度越高。即是说上一层依赖于下一层这样的关系。最顶层 Application 描述的是应用程序软件(就是我们平时使用的一些软件程序如:微信、浏览器、WordVisual Studio Code 等等),而下一层则是算法层 Algorithm,应用软件的开发是离不开算法结构的。而算法的实现也是依赖于实现他的编程语言 Programming Language

这些软件能够正常的运行是依赖于有操作系统或者虚拟机环境 (Operating System / Virtual Machine) 提供的资源管理接口,以及控制调度系统来为软件的运行保驾护航,事实上操作系统和虚拟机环境也是软件,但是稍微偏基础一些。

下面的几层我想从下往上来看,物理层 (Pyhsics) 指的是物理世界中根据基本物理定律的物理变化,粒子的运动规律等,器件层 (Devices) 一般指的是晶体管,电路 (Circuits) 指的是利用晶体管搭建出的各种规模的电路,门(逻辑门)(Gates) 指的是利用电路构建出的 “逻辑门”(如,与门、或门、非门等),在往上就到了我们的重点的研究对象寄存器传输层 (RTL--Register-Transfer Level),用寄存器传输级描述语言实现的一层软件层(常见的语言有 VerilogVHDLScala 等),然后往上的微体系结构 (Microarchitecture),来设计出芯片结构,再往上就到了 指令集体系结构 (Instruction Set Architecture),这为软件编程提供了规范。

2. 计算机发展(No 陈述历史)

这张图展现了上层应用的需求导致中间我们关注的这三层会发生变化,而下面基层的技术水平则会限制着这三层的变化。


该图片来自于《计算机体系结构:量化研究方法 第 5 版》(《Computer Architecture - A Quantitative Approach 5》),这张图片展示了不同年份的计算机与 1978 年的 AX-11/780 机器的对数折线图,横轴是年份时间线,纵轴的 1、10、100、1000... 是对数尺度,这张图片试图在表达在计算机体系结构中有一些非常基础且关键的东西在推动着整个计算机行业的发展(计算机性能的提升)。

可以看到图中的线条几乎可以看作是一条直线上升,是什么让计算机性能能够以指数增长的速度提升。能够让计算机这么飞速发展的原因有两个,其中一个就是计算机架构,虽然这很重要,但这并不是最关键的,最关键的就是晶体管技术的发展。要知道单个晶体管的运行速度和性能不一定能够和指数增长的速度一样发展,但如何要让计算机性能以指数增长的速度提升,计算机架构师想到了,只要用更多的晶体管就好了啊!让更加多的晶体管来提供更多的性能,这就是常常被称为摩尔定律的东西。

你应该听说过这个词,他的意思其实是 戈登摩尔说:“每过十八个月到两年,你可以用同样数额的美元,但你会得到之前两倍数量的晶体管。” 这是最早的版本,而现在慢慢的把说法转变成了,你的电脑每年将会比原来快两倍,这可不是戈登摩尔说的(摩尔:“这个锅我不背!”)他说的花同样钱可以得到两倍晶体管,也有时候被人翻译成每年芯片上的晶体管数量能增长到以前的两倍,这也不是他的原话,但意思差的不太多。(摩尔:“你们让我背负的可太多了啊!”)

从图中可以看到有两个明显的转折点,首先看第一个,在 1986 的时间节点上发生了快速的上升,这里的便是发明了精简指令集计算机(Reduced Instruction Set Computer),或者叫做 RISC 计算机。因此当人们发明了第一个 RISC 时,计算机性能产生了一个拐点。

图中还有另外一个拐点,是在 2003 ~ 2007 年之间,在此之前顺序处理器的性能都可以保持着指数增长的趋势,但在这里顺序处理器的性能开始暴露出他的问题,为了保持计算机性能的指数增长,处理器从顺序处理器(单核处理器)变成了多核处理器即在单个芯片上拥有多个内核,但是多核处理器任然会有他的瓶颈,日后会有更新的技术来解决计算机性能发展停滞的问题。如果计算机性能发展停滞,那将代表所有的电脑性能突然间都不会再增长,也就不会有人再购买新的电脑芯片了。

3. 什么是计算机架构 / 指令集架构(Architecture or Instruction Set Architecture)

John_L._Hennessy 和 David A. Patterson 将 Architecture 称作 Instruction Set Architecture。下面就直接使用指令集架构 (Instruction Set Architecture) 来表示。

Q: What is instruction set architecture?

A: a instruction set architecture, or big A architecture is trying to provide the programmer some abstract machine model.


指令集架构

  • 程序员可见状态(内存、寄存器)
  • 执行语义
  • 输入输出(I/O)
  • 数据类型、大小

指令集架构是尝试为程序员提供一个抽象的机器模型, 以及为程序员提供一些机器状态的可视化,如机器是否有存储器、是否有寄存器,同时还定义了一些操作指令以及一些基本的计算指令, 并且定义了指令的操作方式。例如,ADD 指令一个基本的加法指令,它的实际语义定义了如何从一个寄存器中取出数据并与另一个寄存器中的数据相加,最后再保存。

将两个数相加,并保存到另一个寄存器中,这样看起来执行一条加法指令并不是一步完成的,其实指令很多时候都不会是一步完成还会有其他的操作需要处理,例如,IO 中断。那么就需要再指令集架构中定义一个中断的指令和实际语义是什么,或者是如何在 IO 出入一块数据,这些操作又是如何与处理器交互的。因此指令集架构还需要定义 IO 的输入输出如何工作。

有了输入输出,那么还需要考虑每次操作数的大小,每次操作多大的数据呢?以一个字节为单位?两个字节为单位?四个?那么一个字节具体又是多长?所以还需要定义数据的大小和类型。

指令集架构是提供给软件的一个抽象层,或者说是为了软件而提供了一个这样的抽象层(指令集架构),这样的目的是为了让软件不会有太大的改变。 指令集架构为机器的程序运行制定了一套理论基础即机器该依照此清楚自己如何运行程序,而没有明确的规定不同数据结构的大小、哪些东西运行得多快,这些实际性的执行问题都会在 微架构 (Microarchitecture) 中考虑。

在整个计算机体系结构中有这么多分层,我们需要清楚的一点是,设计整个计算机体系架构即设计每一层时都需要做到 权衡彼此。因此 指令集架构的设计会影响软件程序和微架构,即需要在同时兼顾上下相互影响的设计实现一个特定的指令集体系架构。

4. 什么是微架构/组织(Microarchitecture/Organization)

Q: What is a microarchtecture?

A: what microarchitecture and organization is really thinking about here is the tradeoffs as you’re going to implement a fixed instruction set architecture.


微架构

  • 如何为了某些指标而实现指令集架构的权衡(例如:流水线深度、流水线数量、Cache 大小、峰值功耗、乱序执行、总线宽度、ALU 宽度)

因为一般来说指令集架构是固定的,为了达到多种用途或者不同性能的处理器那么将根据一些目标指标来根据指令集架构实现不同的微架构。

例如,IntelX86 就是一个指令集体系架构,在此指令集架构上有许多不同的微体系架构的实现,因此有了高性能处理的服务器版本和专注于特定功能的机器,虽然芯片内部看起来完全不同,但是两个处理器可以执行相同的代码,因为他们使用的是完全一样的指令集架构。

5. 一些实例的对比指令集架构和微架构

5.1. 指令集架构相同但微架构不同

下面两款处理器均采用 X86 指令集架构,但不同的是设计的微架构不同,导致两者最终看起来完全不一样,但是两者可以运行相同的代码,原因就是两者使用的指令集架构完全相同。

可以看到 AMD Phenom X4 处理器有 4 个核心,功耗 125W,有 3 个解码指令,64KBL1 I Cache64KBL1 D Cache512KBL2 Cache,支持乱序执行,频率可达 2.6GHz。而 Intel Atom 只有一个核,但功耗只有 2W2 个解码指令,较小的 L1 Cache,但有着和左边一样大小的 L2 Cache,只能顺序执行,频率只有 1.6GHz;这就是微架构在权衡处理器指标的结果,根据相同的指令集架构设计出了不同的微体系架构。

5.2. 指令集架构不同且微架构不同

下面两款处理器采用的不同的指令集架构,同时微架构也不同,同样的代码是不能在对方处理器上运行。

左边在上文提到采用的 X86 指令集架构,而右边 IBM POWER7 采用的 Power 指令集架构,同时可以看到下面的指标参数,两者的微架构是不同的。

需要注意的是,采用不同的指令集架构,但是微架构设计有可能相同,但同样不可互相执行对方的代码。

6. 小结

微体系架构更多考虑的是处理器性能和其它的应用指标,而指令集架构更多关心的则是一种软件设计方面的因素。

觉得这篇文章对你有帮助的话,就留下一个赞吧*^v^*
请尊重作者,转载还请注明出处!感谢配合~
[作者]: Imagine Miracle
[版权]: 本作品采用「署名-非商业性使用-相同方式共享 4.0 国际」许可协议进行许可。
[本文链接]: https://blog.csdn.net/qq_36393978/article/details/128647553

【计算机体系结构-01】指令集体系结构、微体系结构简介相关推荐

  1. 【01】 冯·诺依曼体系结构:计算机组成的金字塔

    [计算机组成原理]学习笔记--总目录 [01] 冯·诺依曼体系结构:计算机组成的金字塔 一.计算机的基本硬件组成 CPU: 内存: 主板: 输入/输出设备: 硬盘: 显卡: 补充: 二.冯·诺依曼体系 ...

  2. 【汇编语言与计算机系统结构笔记08】如何实现循环(Loops),gcc历史上经历了多种转换模式(微体系结构角度解释),Switch语句,跳转表

    本次笔记内容: 09.控制流-2 文章目录 练习题:条件转移指令局限性 如何实现循环(Loops) "Do-While"循环实例 "While"循环版本 &qu ...

  3. 【汇编语言与计算机系统结构笔记07】条件码,比较、测试、条件跳转与条件转移指令,结合微体系结构与流水的说明

    本次笔记内容: 08.控制流-1 文章目录 条件码 基于add的CF, ZF, SF, OF 比较(Compare)指令 测试(Test)指令 读取条件码(SetX)指令 例子 拓展:流水设计与微体系 ...

  4. 【学习笔记】微体系结构-单周期、多周期、流水线

    [学习笔记]微体系结构-单周期.多周期.流水线 前言 一.单周期 单周期直通计算机的内核结构 寄存器-寄存器数据通路 1.Load操作 2.Store操作 3.跳转指令 4.条件分支 示例 性能分析 ...

  5. 计算机系统结构结构相关名词解释,体系结构复习题

    名词解释: 1.计算机系统结构:计算机体系结构包括指令集结构.计算机组成和计算机 实现三个方面的内容. 2.CISC:CISC是指采用一整套计算机指令进行操作的计算机.而后又出现 了精简指令集计算机, ...

  6. 2019文都计算机网络百度云,2019计算机考研|计算机网络知识:计算机网络体系结构...

    2019计算机考研|计算机网络知识:计算机网络体系结构 2018-09-14 12:00 | 考研集训营 计算机考研考生需要在强化提升阶段加快复习进度.下面,文都考研集训营为了助力计算机考研学子一臂之 ...

  7. 深入浅出计算机组成原理01:计算机概要与技术

    目录 1. 计算机系统结构中的8个伟大思想 1.1 面向摩尔定律设计 1.2 使用抽象简化设计 1.3 加速大概率时间 1.4 通过并行提高性能 1.5 通过流水线提高性能 1.6 通过预测提高性能 ...

  8. 计算机联锁车务仿真培训系统 casco模式,计算机联锁车务仿真培训系统简介(15页)-原创力文档...

    计算机联锁车务仿真培训系统简介 一.开发说明 本系统采用纯软件技术,把计算机联锁上位机操作平台,底层联锁逻辑和模 拟现场设备的状态及 化过程集合到一台计算机上构成学员机,在一台计算机 上实现了计算机联 ...

  9. 《深入理解 Spring Cloud 与微服务构建》第一章 微服务简介

    <深入理解 Spring Cloud 与微服务构建>第一章 微服务简介 文章目录 <深入理解 Spring Cloud 与微服务构建>第一章 微服务简介 一.单体架构及其存在的 ...

最新文章

  1. Tomcat内存溢出解决方案
  2. activity在屏幕旋转时的生命周期
  3. C++ with STL(五)queuestacklist
  4. 092_元素的几种宽度和高度
  5. Oracle序列的建立以及使用
  6. kubernetes (1)基本概念
  7. 【完结】总结12大CNN主流模型架构设计思想
  8. Android 可以输入的下拉框
  9. 计算机组成原理实验箱连接显示输出,计算机组成原理实验箱介绍.ppt
  10. udp广播收到重复包
  11. 查看linux用户编码,linux查看服务器编码
  12. MatlabR2021b自学笔记一:安装教程(附安装包链接)
  13. web前端进阶教程目录
  14. 分析DuxCms之AdminController
  15. 应用程序无法启动,因为应用程序的并行配置不正确,有关详细信息,请参阅应用程序事件日志,或使用命令行sxstrace.exe工具
  16. gic stream协议
  17. 自己的PHP实践项目:开源电子商城系统
  18. Word上的空白页无法删除,是因为在Word文档中有多种类型的格式标记,很多时候隐藏在页面中,无法看到这些标记,并占用文档区域,导致空白页无法直接删除。
  19. python实现植物大战僵尸_Python开发植物大战僵尸游戏
  20. [Spam]垃圾邮件者纲要(Spammer's Compendium)

热门文章

  1. QQ-----无形的“扫描器”
  2. 英文构词法 —— circum- 前缀
  3. MFC 公用函数和函数指针和动态库
  4. Visual Studio开发环境介绍 及控件属性、事件
  5. 不同等级的UI设计师工作内容有什么区别?
  6. Teamviewer被限制,被怀疑商业用途的解决办法。
  7. 【OpenGL 学习笔记】第 4 篇:绘制四边形
  8. linux 模拟arm,拒绝开发板, 用 SkyEye 就可以模拟 ARM Linux!
  9. python逻辑量是什么意思_python 逻辑术语
  10. 哪些原因会导致头晕头痛,日常应该如何去注意呢?