1.写在前面

前面已经将整个C语言的体系学完了,这个时候开启我们的计算机的组成的学习了,很多优化都是基于硬件来的,所以我们多少要了解下计算机的硬件的部分,计算机的组成。

2.概述

计算机的科学幻想,车载计算机、手机、人类基因组项目、万维网、搜索引擎等等。如今已经成为了现实。

不管是家电还是手机再或者是超级计算机,虽然都是使用了一套通用的硬件技术,但不同的应用具有不同的世界要求,并以不同的方式使用核心硬件技术。主要是下面三种不同的应用场景中:

  • 个人计算机:用于个人使用的计算机,通常包含图形显示器、键盘和鼠标。
  • 服务器:用于为多个用户并行运行大型程序的计算机,通常只能通过网络访问。
  • 嵌入式计算机:用于运行某预订应用程序或软件集合的计算机,一般内嵌于其他设备中。

后PC时代,替代个人电脑的是个人移动设备。个人移动设备是连接到互联网的小型无线设备;它们依靠电池供电,并通过下载APP的方式来安装软件。常见的例子有智能手机和平板电脑。

云计算接替了传统的服务器,它依赖于现在仓储级计算机的巨型数据中心。通过互联网提供服务的大规模服务器集群,一些服务提供商动态将不同数量的服务器作为像水、电一样的公用资源进行租用。提供软件即服务,通过互联网以服务的方式提供软件和数据,通常是通过一个小型客户端程序连接网络以运行程序或获取数据,而不是必须完全在本地设备上安装和运行所有二进制代码。具体的例子包括web搜索和社交网络。

3.计算机体系结构中的8个伟大思想

3.1面向摩尔定律的设计

计算机设计者面临的一个永恒的问题就是摩尔定律驱动的快速变化。摩尔定律指出单芯片上所集成的晶体管资源每18至24个月翻一番。

3.2使用抽象简化设计

抽象来表示不同的设计层次,隐藏低层细节以提供给高层一个更简单的模型。

3.3加速经常性事件

对常用的指令、热指令,进行加速,常用的指令的也是经常用的,所以要加速。

3.4通过并行提高性能

通过并行计算操作来获得更高性能。

3.5通过流水线提高性能

并行性的一种特殊场景在计算机体系结构中非常普遍,因此它有着专有名称:流水线。

3.6通过预测提高性能

在某些情况下,假设从预测错误中恢复的代价并不高,且预测相对准确,则平均来说进行预测并开始工作可能会比等到明确结果后再执行更快。

3.7存储层次

在存储层次中,速度最快、容量最小并且每位价格最昂贵的存储器处于顶层,而速度最慢、容量最大且每位价格最便宜的存储器处于底层。

3.8通过冗余提高可靠性

计算机不仅要速度快,更需要工作可靠。由于任何物理设备都可能发生故障,因此我们通过引入冗余组件来使系统可靠,该组件在系统发生故障时可以替代失效组件并帮组检测故障。

4.程序表象之下

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

外层是应用软件,中心是硬件,系统软件位于两者之间。系统软件中最重要的就是操作系统和编译器。操作系统是用户程序和硬件之间的接口,为用户提供各种服务和监控的功能。主要的作用如下:

  • 处理基本的输入和输出操作。
  • 分配外存和内存。
  • 为多个应用程序提供共享计算机资源的服务。

编译器完成另外一项重要的功能:把高级语言编写的程序编译成硬件能执行的指令。

从高级语言到硬件语言,对于计算机来说,最简单的信号就是通和断。就直接可以用0、1表示,我们称为二进制位。计算机服从我们的命令,即计算机术语中的指令。指令是能被计算机识别并执行的位串,可以将其视为数字。

第一代程序员是直接使用二进制数与计算机通信的,不便于记忆,所以后来他们发明了助记符。最初助记符是手工翻译成二进制的,其过程显然过于烦琐。随后就发明了一种称为汇编器的软件。即汇编语言。而机器可以理解的二进制语言是机器语言。认识到可以编写一个程序来将更强大的高级语言翻译成计算机指令死计算机早期的一个重大突破。高级编程语言及其编译器大大地提高了软件的生产率。有如下几个好处:

  • 可以使程序员用更自然的语言来思考,用英文和代数符号来表示,形成的程序看起来更像文字而不是密码表。
  • 高级语言提高了程序员的生产率
  • 采用高级语言编写程序提高了程序相对于计算机的独立性,因为编译器和汇编程序能够把高级语言翻译成任何计算机的二进制指令。

5.箱盖后的硬件

任何一台计算机的基础硬件都要完成相同的基本功能:输入数据、输出数据、处理数据和存储数据。

输入为计算机提供数据,输出将计算结构送给用户。

组成计算机的五个经典的部件是输入、输出、存储器、数据通路和控制器。其中后两个部件通常合称为处理器。

5.1显示器

大多数个人移动设备都用液晶显示(LCD)来获得轻巧、低功耗的显示效果。大多数LCD显示器采用动态矩阵显示技术,其每个像素都由一个晶体管精确地控制电流,使图像更清晰。在彩色动态矩阵LCD中,还有一个红-绿-蓝屏决定三种颜色分量的强度,每个点需要三个晶体管开关。

图像由像素矩阵组成,可以表示成二进制位的矩阵,称为位图。

计算机硬件采用光栅刷新缓冲区来保存位图以支持图像。要显示的图像保存在帧缓冲区中,每个像素的二进制值以刷新频率读出到显示设备。

5.2触摸屏

触摸屏可采用多种方式实现,许多平板电脑采用电容感应实现。如果绝缘玻璃上覆盖一层透明的导体,人的手指接触到平铺范围时,由于人是导体,将会使屏幕的电场发生变化,进而导致电容的变化。这种技术允许同时接触多个点,可提供非常好的用户界面。

5.3打开机箱

处理器是计算机中最活跃的部分。它严格按照程序中的指令运行,完成数据相加、数据测试、按结果发出控制信号使I/O设备做出动作等操作。

主要包括两个主要部件:数据通路和控制器,分别相当于处理器的身体和大脑。数据通路负责完成算术运算,控制器负责指导数据通路、存储器和I/O设备按照程序的指令正确执行。

内存是程序运行时存储空间,它同时也用于保存运行时所使用的数据。内存由DRAM芯片组成。动态随机访问存储器的缩写。还有一种是高速缓存是一种小而快的存储器,一般作为DRAM的缓冲。高速缓存采用的是另一种存储技术,称为静态随机访问存储器。

我们前面最重要的就是抽象,最重要的抽象之一是硬件和底层软件之间的接口。该抽象被命名为计算机指令系统体系结构或简称体系结构。计算机体系结构包含了程序员正确编写二进制机器语言程序所需要的全部信息。一般来说,操作系统需要封装I/O操作、存储器分配和其他低级的系统功能细节,以使得应用程序员无须关注这些细节。提供给应用程序员的基本指令系统和操作系统接口合称为应用二进制接口。

无论硬件还是软件都可以商用抽象分成多个层次,每个较低的层次把细节对上层隐藏起来。抽象层次中的一个关键接口是指令系统体系结构,硬件和底层软件之间的接口。

5.4数据安全

我们已经知道如何输入数据,如何使用这些数据,但是这些数据一旦断电,所有的数据就丢失了,这些内存是易失性存储。与之对立是非非易失性存储。为了更好的区分,我们将前者称为主存储或主要存储,后者称为辅助存储。辅助存储形成了存储层次中更低的一层。主要是硬盘这种,以及就是固态硬盘。

5.5与其他计算机通信

通过网络,一台计算机可以与其他计算机通信,从而扩展计算机能力。联网的计算机主要优点如下:

  • 通信:信息可在计算机之间高速交换
  • 资源共享:I/O设备可以通过网络共享,不必每台计算机都配备。
  • 远距离访问:用户无须在要使用的计算机旁边,可远距离连接计算机。

6.处理器和存储制造技术

晶体管仅仅是一种受电流控制的开关。集成电路是由成千上万个晶体管组成的芯片。

芯片的制造从硅开始,硅是沙子中的一种物质。由于硅的导电能力不强,因此称为半导体。可以通过一些特殊的手段将其转为以下三种类型之一:

  • 优秀的导电体(细微的铜线或铝线)
  • 优秀的绝缘体(类似于塑料或玻璃瓶)
  • 可在特殊条件下导电或绝缘的区域(作为开关)

硅锭经过切片机切成厚度不超过0.1英寸的晶圆,这些晶圆经过一系列化学加工最宠生成晶体管、导体、绝缘体。

通过切分,可以只淘汰哪些有瑕疵的晶片,而不必淘汰整个晶圆。对这一过程的量化描述可以用工艺良率来表示,其定义为合格晶片数占总晶片数的百分比。

合格晶片要连接到I/O引脚上,使用压焊工艺形成封装。由于封装过程也可能出错,因此在封装之后必须进行最后一次测试再交付给用户。
每晶片的价格=每晶圆的价格/每晶圆的晶片数∗良率每晶片的价格=每晶圆的价格/每晶圆的晶片数*良率 每晶片的价格=每晶圆的价格/每晶圆的晶片数∗良率

每晶圆的晶片数=晶圆面积/晶片面积每晶圆的晶片数=晶圆面积/晶片面积 每晶圆的晶片数=晶圆面积/晶片面积

工艺良率=(1/(1+单位面积的缺陷数∗芯片的面积/2))2工艺良率=(1/(1+单位面积的缺陷数*芯片的面积/2))^2 工艺良率=(1/(1+单位面积的缺陷数∗芯片的面积/2))2

7.性能

7.1性能的定义

如果你在两台不同的桌面计算机上运行同一个程序,那么可以说首先完成作业的那台计算机更快。这儿引入一个概念,响应时间是指从开始一个任务到该任务完成的事件,又被称为执行时间。

如果你运行的是一个数据中心,有好几台服务器供很多用户投放作业,那么应该说在一天之内完成作业最多的那台计算机更快。这儿引入两个概念,提高吞吐率和带宽。在给定的时间内完成的任务数。因此在大多数情况下,我们需要对个人移动设备采用不同的应用程序作为评测基准,并采用不同的性能度量标准。个人移动设备更关注响应时间,而服务器则更关注吞吐率。

7.2性能的度量

时间是计算机性能的衡量标准:完成同样的计算任务,需要时间最少的计算机是最快的。程序的执行时间一般以秒为单位。然而,时间可以用不同的方式来定义,这取决于我们所计数的内容。对时间最直接的定义是挂钟时间,也叫响应时间、运行时间。这些术语均表示完成某项任务所需的总时间,包括了磁盘访问、内存访问、I/O活动和操作系统开销等一切时间。

由于计算机一个处理可能同时运行多个程序。所以,我们往往要将运行自己任务的事件与一般的运行时间区分开来,这里叫CPU执行时间。还可以继续区分,用于用户程序的时间和操作系统为用户程序执行相关任务所花去的CPU时间,前者称为用户CPU时间,后者称为系统CPU时间。

那我们如何去计量这些时间呢?几乎所有计算机的构建都需要基于时钟,该时钟确定各类时间在硬件中何时发生。这些离散时间间隔被称为时钟周期数。

7.3CPU性能极其度量因素

由前面的计算公式,我们得出如下的公式
程序的CPU执行时间=程序的CPU时钟周期数∗时钟周期长度程序的CPU执行时间 = 程序的CPU时钟周期数 * 时钟周期长度 程序的CPU执行时间=程序的CPU时钟周期数∗时钟周期长度
由于时钟频率和时钟周期长度互为倒数,所以可以得出下面的公式
程序的CPU执行时间=程序的CPU时钟周期数/时钟频率程序的CPU执行时间=程序的CPU时钟周期数/时钟频率 程序的CPU执行时间=程序的CPU时钟周期数/时钟频率
这个公式清楚的地表明,硬件设计者减少程序执行所需的CPU时钟周期数或缩短时钟周期长度,就能改善性能。

7.4指令性能

上述性能公式并未涉及程序所需的指令数。然而,由于编译器明确了要执行的指令,且计算机必须要通过执行指令来运行程序,因此执行时间必然依赖于程序中的指令数。于是得到如下的公式
CPU时钟周期数=程序的指令数∗指令平均时钟周期数CPU时钟周期数=程序的指令数*指令平均时钟周期数 CPU时钟周期数=程序的指令数∗指令平均时钟周期数
指令平均时钟周期数表示执行每条指令所需的时钟的周期平均数,缩写为CPI。根据锁完成的任务的不同,不同的指令需要的时间可能不同,CPI是程序的所有指令所用时钟的周期的平均数。CPI提供了一种相同指令系统在不同实现下比较性能的方法,因为在指令系统不变的情况下,一个程序执行的指令数是不变的。

7.5经典的CPU性能公式

现在我们可以使用指令数、CPI和时钟周期长度来写出基本的性能公式:
CPU时间=指令数∗CPI∗时钟周期长度CPU时间=指令数*CPI*时钟周期长度 CPU时间=指令数∗CPI∗时钟周期长度
由于时钟频率和市州周期长度互为倒数,于是有了下面的公式:
CPU时间=指令数∗CPI/时钟频率CPU时间=指令数*CPI/时钟频率 CPU时间=指令数∗CPI/时钟频率
需要铭记于心的是,时间是唯一对计算机性能进行测量的完整而可靠的指标。

其中指令数量取决于计算机体系结构,并不依赖于计算机的具体实现,因而我们可以在不知道计算机全部实现细节的情况下对指令数进行测量。但是,CPI与计算机的各种设计细节密切相关,包括存储系统和处理器结构,以及应用程序中不同类型的指令所占的比例。因此,CPI对于不同应用应用程序是不同的,对于相同指令系统的不同实现方式也是不同的。

如果某个因素相同,则必须考虑不同的因素才能确定性能的优劣。因为CPI根据指令分布的不同而变化,所以即时时钟频率是相同的,也必须比较指令总数和CPI。指令分布:在一个或多个程序中,对指令的动态使用频度的评价指标。

8.功耗墙

当前在集成电路技术中占统治地位的是CMOS(互补型金属氧化半导体),其主要的能耗来源是动态能耗,即在晶体管开关过程中产生的能耗,即晶体的状态从0翻转到1或从1翻转到0消耗的能量。每个晶体管需要的功耗是一次翻转需要的能耗和开关频率的乘积。开关频率是时钟频率的函数负载电容是连接到输出上的晶体管的数量和工艺的函数,该阿含糊决定了导线和晶体管的电容。

目前的问题是如果电压继续下降会使晶体管的泄露电流过大,就想水龙头不能被完全关闭一样。

虽然动态能耗是CMOS能好的主要来源,但静态能耗也是存在的,因为即使在晶体管关闭的情况加,也有泄露电流的存在。

功耗成为继承电路设计的挑战的两个原因。首先,电源必须由外部输入并且分布到芯片的每个角落。其次,功耗作为热量形式散发,因此必须进行散热处理。

9.沧海巨变:从单处理器向多处理器转变

功耗的极限迫使微处理器的设计产生了巨变,从2002年起,其每年的增长速率从1.5下降到1.2。所以多核的处理器出来了。多核处理器意味着写并行程序,才能提高性能。那么为什么编写并行的程序这么难?

原因一:并行编程以提高性能为目的,这必然增加编程的难度。

原因二:为了发挥并行硬件的速度,程序员必须将应用划分为每个核上又大致向塘的数量的任务,并同时完成。

任务分配必须平衡才能得到预期的加速。必须尽量减少通信和同步的开销。主要有两种方法来解决:共享内存通信和显示消息传输。

10.谬误与陷阱

谬误是说明我们在实际中经常遇到的误解。陷阱通常是指仅在有限的上下文中才正确的一般原理。

陷阱:在改进计算机的某个方面时期总性能的提高与改进大小成正比。

陷阱:用性能公式的一个子集去度量性能。

谬误:低利用率的计算机具有更低功耗。

谬误:面向性能的设计和面向能效的设计具有不相关的目标。

11.小结

硬件和软件设计者都采用分层的方法构建计算机系统,每个下层都对其上层隐藏本层的细节。抽象思想是理解当今计算机系统的基础,但这并不意味着设计者只要懂得抽象原理就足够了。也许最重要的抽象层次是硬件和底层软件之间的接口,称为指令系统体系结构。保持指令系统体系结构衡定,使得基于该指令系统体系结构的不同实现能够运行相同的软件。这种方法的一个可能不足是,会阻止某些需要修改该接口的创新。

计算机组织中新思想:

  • 第一,开发程序中的并行性,当前的典型方法是借助多处理器。
  • 第二,开发存储器层次结构的访问局部性,当前的典型方法是使用高速缓存。

12.写在最后

本篇博客主要介绍了下计算机组成的一些东西,大概的了解了下计算机组成的一些宏观的概念,后面的博客会分章节慢慢的介绍。

计算机抽象及相关技术相关推荐

  1. 与计算机图形学相关的研究论文,计算机图形学相关论文范文数据库,与计算机图形学的相关技术与相关专科毕业论文范文...

    计算机图形学相关论文范文数据库,与计算机图形学的相关技术与相关专科毕业论文范文 关于计算机图形学及计算机及计算机动画方面的免费优秀学术论文范文,计算机图形学相关本科毕业论文,关于计算机图形学的相关技术 ...

  2. 浅谈大数据及相关技术在计算机专业的应用

    信息时代,各种高新科技高速发展,现代科学技术发展进入了"快车道",科学技术的实践化应用改变了人们的生活,其中就包括人工智能技术的应用,如智能家居系统.智能汽车.智慧城市等. 所谓人 ...

  3. 计算机的三种语言及相关技术2019.7.1

    三种语言(统称为编程语言) 机器语言 计算机的硬件作为一种电路元件,它的输出和输入只能是有电或者没电,也就是所说的高电平和低电平,所以计算机传递的数据是由"0" 和"1& ...

  4. 计算机语言有许多种其中与硬件直接相关的是,16春季福师《计算机原理与接口技术》在线作业二...

    福师<计算机原理与接口技术>在线作业二 一.单选题(共 30 道试题,共 60 分.) 1. M数据传送控制的周期挪用方式主要适用的情况是( ) . I/O设备周期大于内存存储周期 . I ...

  5. 计算机系统结构相关技术,计算机系统结构第1章技术总结.pptx

    1 计算机系统结构 主讲:任国林 Email:renguolin@seu.edu.cn 2 引 言 一.计算机系统的性能与结构 1.计算机系统性能 *系统性能:指在计算机硬件上运行的计算机软件的性能 ...

  6. 网络蛋白质组学在计算机中应用,蛋白质组学及其相关技术在运动人体科学中的应用...

    摘要: 目的:对蛋白组学及蛋白芯片技术发展现状进行综述,为该技术在运动医学中的应用提供参考资料.资料来源:应用计算机检索PubMed2003-01/2006-12期间相关蛋白组学及蛋白芯片技术方面的文 ...

  7. 计算机相关技术在医院应用,计算机管理相关技术在医院中的应用分析

    医学科技 计算机管理相关技术在医院中的应用分析 伍毅强(江门市新会区中医院,广东江门 5 2 9 0 0 0 ) 摘要:随着信息化的快速发展,计算机技术在医院临床管理中已经得到广泛的应用,并成为现代化 ...

  8. 计算机在中职教育中的运用论文,中职计算机教育的相关论文(2)

    中职计算机教育的相关论文篇二 <中职计算机教育中实践能力的培养> [摘要]本文以中职计算机教育中实践能力的培养为题展开论述.首先,分析了当前在中职计算机实践能力培养方面存在的问题.然后,结 ...

  9. 计算机算法对程序设计的作用,算法计算机论文,关于数学算法对计算机编程优化相关参考文献资料-免费论文范文...

    导读:本论文主要论述了算法计算机论文范文相关的参考文献,对您的论文写作有参考作用. (重庆人文科技学院 理工学院数学系,重庆 401572) 摘 要:数学算法是一种将很多问题进行归纳总结,然后采用统一 ...

最新文章

  1. 飞书面向所有企业和组织免费开放,2020我们一起拥抱线上协作新方式
  2. linux 内核 THIS_MODULE宏定义详解
  3. [云炬python3玩转机器学习笔记] 2-1机器学习基础概念
  4. 广东东软学院计算机系主任罗,广东东软学院副校长朱爱红一行来访我校
  5. 深度学习技术在机器阅读理解应用的研究进展
  6. JMeter实现web接口测试实践举例
  7. C语言深入理解系列 - 关键字:auto和register
  8. automake的使用1
  9. Fragment中添加ListView而不使用ListFragment
  10. Shiro框架的搭建与使用
  11. 体育专业国培计算机感言,计算机国培心得体会.doc
  12. VS2019 配色_OPPO Enco M31颜值太顶了,斩获 A'设计大奖赛金奖,引领时尚潮流|oppo|大奖赛|无线耳机|配色|时尚|卡特...
  13. centos6 yum安装nginx
  14. 《06》个人博客不完整版
  15. QQ登录显示无法访问个人文件夹解决办法
  16. luogu P3642 [APIO2016]烟火表演
  17. springboot+小程序老年人健康保障管理系统毕业设计源码302303
  18. element 表格显示图片
  19. 第十四、十五章NFS和FTP的搭建与配置
  20. 剪辑技巧,简单几步骤即可混剪出多段视频素材

热门文章

  1. 计算机什么ups又称在线式ups,UPS与逆变器各有什么种类?
  2. 计算机是小端模式,计算机内的大小端模式
  3. rt3070驱动移植到fsl imx51上
  4. windows.onload()
  5. IDL接口定义语言教程
  6. PVB分散体的全球与中国市场2022-2028年:技术、参与者、趋势、市场规模及占有率研究报告
  7. 给小米/红米手机刷机(工具,刷机包等都是官方的)——手把手教会你
  8. 办公常用的计算机excel公式,Excel办公常用的12个神公式 职场必备
  9. cma盲均衡matlab,qam信号cma盲均衡(CMA_MMA_16QAM.asv)
  10. 【教育】世界上最伟大的25个教育法则