计算机组成与设计——硬件/软件接口-RISC-V版 第一章 计算机抽象及相关技术

1.1引言

1.1.1传统的计算应用分类及其特点

计算机主要被应用在以下三种不同的应用场景中:

  • 个人计算机:包含图形显示器、键盘和鼠标
  • 服务器:用于为多个用户并行运行大型程序的计算机,通常只能通过网络访问,通常高端服务器用超级计算机实现,由上万颗处理器和太字节(240字节,TiB)级别的内存组成
  • 嵌入式计算机:用于运行莫预定应用程序或软件集合的计算机,一般内嵌于其他设备中。如汽车、电视机中的微处理器或计算机。控制飞机或货船的处理器网络。嵌入式计算系统的设计目标是运行单一应用程序或者一组相关的应用程序,并且通常和硬件集成在一起以单一系统的方式一并交付。嵌入式应用常常具有特定的应用程序要求,这需要将最低性能与严格的成本及功耗限制结合在一起考虑。在面向消费者的嵌入式应用如数字家电中,一般通过简单设计来获得可靠性,而在大型嵌入式系统中采用了服务器领域的冗余技术。

1.1.2 欢迎来到后PC时代

  • 个人移动设备(手机、平板电脑)替代个人电脑
  • 云计算接替传统服务器,依赖仓储级计算机的巨型数据中心,公司可租用一部分为个人移动设备提供软件服务而无须建立自己的仓储级计算机,现在的软件开发会将应用的一部分运行在个人移动设备上,将另一部分部署在云上
  • 软件即服务(Saas):通过互联网以服务的方式提供软件和数据,通常是通过一个小型客户端程序(例如运行在本地客户端设备上的浏览器)连接网络以运行程序获取数据,而不是必须在本地安装和运行所有二进制代码,如web搜索和社交网络

读完本书后要能回答以下的问题:

  1. 用C或Java等高级语言编写的程序如何被翻译成机器语言,以及硬件如何执行最终的程序?这些概念是理解软硬件如何影响程序性能的基础。
  2. 软件和硬件之间的接口是什么?软件如何指导硬件执行所需的功能?这些概念对于理解如何编写软件是至关重要的。
  3. 什么因素决定了程序的性能,以及程序员如何改进程序性能?我们将从本书中知道,这取决于原始程序、将程序转换为计算机语言的软件以及硬件执行该程序的有效性。
  4. 硬件设计人员可以使用哪些技术来提高性能?本书将介绍现代计算机设计的基本概念。可以在《计算机体系结构:量化研究方法》中进行深入学习。
  5. 硬件设计人员可以使用哪些技术来改善能效?程序员可以做些什么来改善能效?
  6. 串行处理近年来发展到并行处理的原因和结果是什么?
  7. 自1951年第一台商用计算机以来,计算机架构师提出的哪些伟大思想奠定了现代计算技术的基础?

自我检测:

  1. 每年嵌入式处理器的销售数量远远超过PC处理器和后PC处理器的数量。根据你的经验,你支持还是反对这种看法?尝试列举你家中的嵌入式处理器,它与你家中的传统计算机处理器数量相比如何?                                答:支持这种看法,我家中的嵌入式处理器:洗衣机、空调、电视、冰箱、抽油烟机、热水器、门锁电话、智能玩具。我家传统计算机处理器:手机、电脑,没有嵌入式处理器多。
  2. 如前所述,软件和硬件都会影响程序的性能。请思考以下哪个例子属于性能瓶颈。                                                                                                                                                                                                              a.所选算法 b.编程语言或编译器 c.操作系统 d.处理器 e.I/O系统和设备                                 我觉得针对不同的程序,以上情况都有可能  

1.2 计算机体系结构中的8个伟大构想

  1. 面向摩尔定律的设计:计算机架构师必须预测其设计完成时的工艺水平而不是设计开始时的工艺水平
  2. 使用抽象简化设计:使用抽象(abstraction)来表示不同的设计层次——隐藏低层细节而提供给高层一个更简单的模型
  3. 加速经常性事件:设计者需要通过仔细的实验和测量来得知经常性事件是什么(1.6节)
  4. 通过并行提高性能
  5. 通过流水线(pipelining)提高性能
  6. 通过预测提高性能:假设从预测错误中恢复的代价并不高,且预测相对准确,则平均来说进行预测并开始工作可能比等到明确结果后再执行更快
  7. 存储层次:由于存储器的速度通常会影响性能,存储器的容量限制了可被解决问题的规模,当今的内存成本常常是计算机成本的主要部分,因此程序员希望存储器速度更快、容量更大、价格更便宜。架构师发现可以通过存储层次来处理这些冲突的需求。在存储层次中,速度最快、容量最小且每位价格最昂贵的存储器处于顶层,而速度最慢、容量最大且每位价格最便宜的存储器处于底层
  8. 通过冗余提高可靠性:通过引入冗余组件来使系统可靠,该组件在系统发生故障时可以替代失效组件并帮助检测故障。

1.3 程序表象之下

一个典型的应用程序,如字处理程序或大型数据库系统,可以由数百万行代码构成,并依靠软件库来实现异常复杂的功能,计算机中的硬件只能执行极为简单的低级指令。从复杂的应用程序到原始的指令涉及若干软件层次来将高层次操作解释或翻译成简单的计算机指令。这可以作为伟大的抽象思想的一个例子。

  • 系统软件:提供常用服务的软件,包括操作系统、编译器、加载程序和汇编器等。
  • 操作系统:用户程序和硬件之间的接口,为用户提供各种服务和监控功能。如Linux、iOS、Windows.最为重要的作用:处理基本的输入和输出操作;分配外存和内存;为多个应用程序提供共享计算机资源的服务
  • 编译器:把C、C++、Java、VB之类的高级语言编写的程序翻译成硬件能执行的指令
  • 汇编器:将指令由助记符形式翻译成二进制形式的程序

从高级语言到硬件语言

计算机中的指令:能被计算机识别并执行的位串,可以视为数字,如位串100010100010

1.4 箱盖后的硬件

组成计算机的五个经典部件是输入、输出、存储器、数据通路(运算器)和控制器,运算器和控制器合称为处理器。

  • 内存:程序运行时的存储空间,用于保存程序运行时所使用的数据,由DRAM芯片组成,用来承载程序的指令和数据
  • 高速缓存:处理器内部使用的存储器,小而快,由SRAM组成
  • 计算机指令系统体系结构:包含了程序员正确编写二进制机器语言所需的全部信息,如指令、I/O设备。操作系统需要封装I/O操作、存储器分配和其他低级的系统功能细节,以使得应用程序员无须关注这些细节。提供给应用程序员的基本指令系统和操作系统接口合称为应用二进制接口(ABI)。计算机体系结构可以让计算机设计者独立讨论功能而不必考虑具体硬件。

无论硬件还是软件都可以使用抽象分成多个层次。每个较低的层次把细节对上层隐藏起来。抽象层次中的一个关键接口是指令系统体系结构——硬件和底层软件之间的接口。这一抽象接口使得同一软件可以由成本不同、性能也不同的实现方法来完成。

  • 主存储:易失性存储,保持运行中的程序,由DRAM组成
  • 辅助存储:非易失存储,用来保存两次运行之间的程序和数据,在个人移动设备中一般由闪存组成,在服务器中一般由磁盘组成。
  • 磁盘:也叫硬盘,使用磁介质材料构成的以旋转盘片为基础的非易失性二级存储设备。
  • 闪存:在个人移动设备中替代了磁盘,比DRAM慢,便宜。

  

posted @ 2022-12-29 18:04  million_yh  阅读(759)  评论(0)    收藏  举报