计算机体系结构.体系结构简介

什么是计算机体系结构

对于“Computer Architecture”,有些地方译为“计算机系统结构”,有些地方译为“计算机体系结构”。这两种翻译都对,只是经常会被混用。本文将以“体系结构”为主,不过如果偶尔出现了“系统结构”那也不要慌,其实指的都是”Computer Architecture“。

计算机体系结构包含了整个计算机设计与实现的方方面面,是对整个计算机系统的组织、功能、实现的全面考量【1】。值得一提的是,过去(上世纪)的体系结构通常指的是指令集架构(Instruction Set Architecture,简称ISA),彼时摩尔定律的效果十分强劲,只需堆砌更多的晶体管就可以获得性能上的提升,因此并不需要太多的微结构设计。

当然如今已经不仅仅是ISA了,但ISA是仍是体系结构中很重要的一部分,因为ISA设计是关乎软硬件结合的关键:软件通过指令操控硬件,硬件根据指令执行具体功能。ISA设计通常可以被视为系统结构所涵盖范围的上层,而下层是微结构(Microarchitecture)。

有些地方会将“体系结构”和“微结构”所混淆,其实是不准确的。微结构对应的是某一具体ISA在某种特定处理器上的具体实现【2】,对于常见的桌面处理器其微结构设计通常包括但不限于:流水线、存储层次结构、功能单元、乱序结构、片上网络等等,而对于专用的嵌入式处理器常常不采用乱序结构(更肯定一点的话,可以去掉“常常”二字)且流水线也十分简单。相同的ISA可以有不同的微结构实现,比如Intel和AMD的处理器都是x86指令集,但其内部架构千差万别,耳熟能详的有Intel的酷睿系列、至强系列,AMD的推土机和锐龙。

但是,体系结构设计常常不仅仅需要这两部分的知识,或者换句话说,对于体系结构而言,仅仅把视角局限于ISA和微结构是远远不够的:

  • 对于ISA设计,其需要和应用(操作系统、编译器、应用软件等)相结合。

    • 比如在x86指令集发展过程中,其支持的越来越多的扩展指令集,如SSE、AVX、VT-x等等【3】,其主要目的是能够针对某种特定的应用,为其提供更直接的指令,从而使得程序运行更快。当然除了性能方面的考量,也有对应用功能上的支持,比如虚拟化的支持、系统特权级的支持、内存保护的支持等等。
    • 因此ISA设计绝不仅仅是拍脑袋想出来的一堆指令,其设计都是有着广泛考量,要做到对编译器友好、对底层实现友好、对程序运行友好、对操作系统友好等等各方面,设计出一个足够好的ISA的确是不太容易的一件事。
    • (题外话:x86指令集足够好吗?单从设计上看x86称不上好,但Intel实力雄厚,可以背下足够沉重的历史包袱,使得x86指令集的发展中做到了很好的兼容性,而这也是其能够赢得市场的关键原因)
  • 对于微结构设计,其需要和硬件实现相互配合,这就需要微结构设计人员具备电路逻辑设计、芯片封装与测试等广泛的硬件知识。
    • 比如流水线的设计需要与时钟频率相互配合,一般而言每级流水的最佳延迟是6至8个FO4的延迟【4】。此外很重要的一点,或者说是最重要的一点,就是微结构设计与性能、成本和功耗之间的关系。要使微结构设计在这三者之间达到平衡,从而取得最佳的设计效果,进而达到预期的设计目标,是很不容易的一件事。
    • 不十分准确但足以表达这种权衡(tradeoff)的说法是,当专注提升其中某一个指标的时候,往往会影响另外两个指标,比如当以复杂的设计来取得较好的性能时,可能需要付出较大的芯片面积从而增加成本(涉及生产良率、测试成本等等),同时复杂的逻辑也会带来功耗上的压力。

在体系结构领域的经典著作《量化研究方法》(第五版)中,体系结构涵盖了这三个方面:ISA、组成(微结构)、硬件。

  • 计算机的实现包括两方面:组成和硬件。组成即“微结构”,包括存储系统、处理器内部实现等等,与前文所述的概念一致。硬件则指的是具体实现,包括计算机的详尽数字电路逻辑设计和芯片封装技术。可以认为,微结构即描述了计算机逻辑上的设计,而硬件则描述了计算机具体的实现,二者结合来实现了一个具体的计算机。而ISA则可以认为是计算机所表露的接口,所有用该ISA所写的程序,都可以在该计算机上运行。
  • 目前我个人更倾向于把体系结构集中在ISA和微结构这两方面上,而将硬件相关的知识作为微结构设计中所不可缺少的一部分。要设计出一个好的微结构必然需要对硬件有相当的理解,能从逻辑设计上看到真正的硬件实现时所需要的资源,并保证微结构的设计符合硬件的约束。在我看来体系结构最具吸引力的是微结构,而对微结构设计的学习并不需要深入了解硬件,但是在真正实现一个可以流片的芯片时,必然需要与硬件工艺进行对接。

计算机系统层次

从上至下来看到整个计算机系统,可以大致分成这样几个层次:

  1. Problem
  2. Algorithm
  3. Program
  4. ISA
  5. Microarchitecture
  6. Circuits/Gates
  7. Electrons

前三层是对所有软件的一个划分:首先我们有了某个问题(比如人们需要一个程序来管理各种硬件资源),然后设计一个算法(如何管理呢,划分成内存管理、进程管理等),最后编成程序(就是操作系统啦)。

对于Program这一级通常可以分为三个层次,即编程语言(Programming Language)、汇编语言(AssemblyLanguage)和机器码(Machine Code)。如果进一步划分下去,编程语言又分为高级编程语言(如Java、Python)和低级编程语言(如C、BASIC)。低级编程语言并不是格调上更low,而是更接近底层,可以直接与硬件进行交互,需要具备一定的计算机知识才能比较好的学习和使用,比如C的指针其实就是内存地址。而高级语言则进行了一定的抽象,屏蔽的硬件细节,使得人们可以不需要了解硬件的组织和运行就可以编写程序,就像写数学公式一样来完成编程工作,比如Matlib。

再向下就到了体系结构所涵盖的范围了,即ISA和微结构。再下层的Circuits/Gates即电路。微结构设计通常使用HDL(Hardware Description Language)语言来完成。以verilog为例,其包含若干抽象层次,比如你可以使用“+”来完成一个加法操作,也可以亲自上手使用逻辑门来设计出一个加法器。

而要设计出一个满足需求的结构,数字电路的知识是必不可少的。至少需要对电路运行的时钟有所了解,才能开始上手HDL的学习。更进一步,当需要更好的设计时,那就更不能缺少对电路的了解了。比如相同功能的实现常常有若干种不同的电路组成可以完成,通常使用更少的门电路可以减少面积、降低延迟,但也有可能面临稳定性的问题。而面对复杂的功能需求,则需要设计出一个足够高效的电路结构,否则则会拖慢整个流水线,从而降低芯片的执行效率。尽管微结构设计人员不需要亲自上手设计出电路上的每一个逻辑门,但也要时刻明白不能把过重的任务压在电路设计上,要避免设计太过复杂使得电路难以实现。此外也需要注意到电路的功耗等等其他因素。

而Electrons则更加底层,这一层通常不关心微结构是如何设计的,更不关心程序要如何运行,而是专注于把逻辑设计(HDL)实现成真正的数字电路,并且满足各种物理上的约束。比如晶体管尺寸不断降低,相同面积的芯片上可以集成越来越多的晶体管,但要如何保证尺寸这么小的晶体管能够正常运行,比如晶体管中越来越薄的绝缘层所面临的漏电问题,这些就是电子所需要关注的。

后续目录

目录

  1. 体系结构简介 introduction
    1.1 概念
    1.2 计算机的层次结构
  2. 计算机简史 brief history
    2.1 两大定律与两大结构
    2.2 历史上的计算机
    2.3 北桥和南桥
  3. 微结构系列 microarchitecture
    3.1 流水线设计 pipeline design
    3.2 缓存层次 cache hierarchy
    3.3 乱序结构 out of order execution
    3.4 多发射结构 multiple instruction issue
    3.5 分支预测 branch prediction
    3.6 数据预取 data prefetching
    3.7 快表 TLB translation lookaside buffer
    3.8 缓存一致性 cache coherence
    3.9 内存一致性 memory consistency
    3.10 向量计算 vector execution
    3.11 图形计算 graph process unit
    3.12 片上网络 network on chip
  4. ISA设计 instruction set architecture
    4.1 CISC vs RISC
    4.2 现有指令集 x86 ARM POWER MIPS Alpha
    4.3 指令集架构设计原则 design rules
  5. 性能工程 & 功耗管理 & 成本控制
  6. Domain Specific Architecture

参考资料

[1] WiKiPedia.Computer architecture[EB/OL].(2019-03-02)[2019-04-29]
https://en.wikipedia.org/wiki/Computer_architecture

[2] WiKiPedia.Microarchitecture[EB/OL].(2019-03-03)[2019-04-29]
https://en.wikipedia.org/wiki/Microarchitecture

[3] WiKiChip.Core i5-8400[EB/OL].(2019-01-16)[2019-04-29]
https://en.wikichip.org/wiki/intel/core_i5/i5-8400

[4] M. S. Hrishikesh, Doug Burger, Stephen W. Keckler, Premkishore Shivakumar, Norman P. Jouppi, Keith I. Farkas: The Optimal Logic Depth Per Pipeline Stage is 6 to 8 FO4 Inverter Delays. ISCA 2002: 14-24

计算机体系结构.是系统结构还是体系结构相关推荐

  1. 什么是计算机的网络体系结构,什么是网络体系结构 网络体系结构介绍【详解】...

    网络体系结构,什么是网络体系结构 通过通信信道和设备互连起来的多个不同地理位置的计算机系统,要使其能协同工作实现信息交换和资源共享,它们之间必须具有共同的语言.交流什么.怎样交流及何时交流,都必须遵循 ...

  2. 冯诺依曼设计的计算机局限性,计算机智能化中冯·诺依曼体系结构的局限性

    计算机智能化中冯·诺依曼体系结构的局限性 董晶晖 [摘要]摘要 [期刊名称]中国科技信息 [年(卷),期]2012(000)023 [总页数]2 [关键词]关键词 计算机经过了半个多世纪的发展,依旧无 ...

  3. 计算机组成原理基于mips结构pdf,计算机组成原理_L12-MIPS系统结构-V1.pdf

    计算机组成原理_L12-MIPS系统结构-V1.pdf (8页) 本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦! 14.90 积分 1计算机组成MIPS体系结构 ...

  4. 计算机组成原理与系统结构 出版社,计算机组成原理与系统结构

    本书主要提供 计算机组成和体系结构 课程的教学内容,包括计算机组成的原理知识,计算机硬件的设计技术,以及简单的实例计算机系统的工程实现,重点强调计算机硬件系统的组成原理.设计技术.工程实现三个方面的内 ...

  5. 计算机组成原理与系统结构习题集

    计算机组成原理与系统结构 一.选择题: 冯·诺依曼机工作的基本方式的特点是( B ). A.多指令流单数据流 B.按地址访问并顺序执行指令 C.堆栈操作 D.存贮器按内容选择地址 完整的计算机应包括( ...

  6. 计算机组成原理与系统结构原理,计算机组成原理与系统结构

    <计算机组成原理与系统结构>由会员分享,可在线阅读,更多相关<计算机组成原理与系统结构(25页珍藏版)>请在人人文库网上搜索. 1.计算机组成原理与系统结构,教学重点:计算机的 ...

  7. 计算机组成与系统结构课程设计

    计算机组成与系统结构课程设计   一.本课程设计的性质.目的.任务 <计算机组成与系统结构课程设计>**计算机组成与系统结构课程设计** 一.本课程设计的性质.目的.任务 <计算机组 ...

  8. 计算机组成与系统结构第六单元答案,计算机组成与系统结构习题答案

    <计算机组成与系统结构习题答案>由会员分享,可在线阅读,更多相关<计算机组成与系统结构习题答案(9页珍藏版)>请在人人文库网上搜索. 1.计算机组成与系统结构 习题答案,上海交 ...

  9. 计算机结构原理与组成ppt,计算机组成原理与系统结构课件.ppt

    <计算机组成原理与系统结构课件.ppt>由会员分享,提供在线免费全文阅读可下载,此文档格式为ppt,更多相关<计算机组成原理与系统结构课件.ppt>文档请在天天文库搜索. 1. ...

  10. 计算机系统结构组成原理图,计算机组成原理 与系统结构.ppt

    <计算机组成原理 与系统结构.ppt>由会员分享,可在线阅读,更多相关<计算机组成原理 与系统结构.ppt(32页珍藏版)>请在人人文库网上搜索. 1.主讲:,数字逻辑与计算机 ...

最新文章

  1. Microbiome:16S扩增子测序研究中定量变异和生物量影响
  2. 冬眠动物克服肌肉萎缩,靠的居然是“肠子”|Science
  3. 方法传递java_Java 程序将方法作为参数传递给其他方法
  4. 解决zip包安装python pip的安装问题
  5. html 地球大气,地球大气层为什么永远不会消失?
  6. 计算机应用技术自我分析,计算机应用*个人自我鉴定
  7. Rosserial实现Windows-ROS交互操作
  8. python作用域排序_11道Python常见面试题,80%的人不会
  9. 【Leetcode_easy】1078. Occurrences After Bigram
  10. MySQL · 源码分析 · MySQL 半同步复制数据一致性分析
  11. JSP基础(5)-JSP标准动作
  12. 由一条微博引发的 — Xcode LLDB 调试断点总结
  13. c语言交通灯程序闪烁,单片机交通灯闪烁程序
  14. 车间调度问题总结笔记一
  15. 软件升级 防火墙 飞塔_FortiGate软件版本升级
  16. 泰坦尼克号乘客生存情况分析之第二部分特征工程
  17. android电话录音没有声音,Android通话录音未录制来电语音(示例代码)
  18. 微信公众号的开发和使用注意事项有哪些?
  19. GB28181设备接入实现web无插件多屏直播
  20. Android .9

热门文章

  1. 完美黑苹果clover EFI BigSur11.2 神舟K580c i5 BCM94360HMB WIFI蓝牙二合一网卡
  2. oracle awr 定期,Oracle 每天自动生成AWR报告
  3. font-family:中文字体的英文名称
  4. 常见笔顺错误的字_容易出错的汉字|汉字中哪些字笔顺容易错
  5. vivado修改下载器下载速率
  6. 安装zabbix步骤
  7. powerdesigner、ERstudio、PDManER工具比较
  8. 四阶段法——城市交通需求预测
  9. matlab巴特沃斯滤波器算法解释,巴特沃斯滤波器原理.doc
  10. mysql嵌套查询效率低_mysql的嵌套查询效率很低