《深入理解计算机系统》1.3:计算机系统漫游

目录

系统之间利用网络通信

重要主题

Amdahl定律

并发和并行

计算机系统中抽象的重要性


系统之间利用网络通信

现代系统经常通过网络和其他系统连接到一起,从一个单独的系统来看,网络可视为一个IO设备。当系统从主存复制一串字节到网络适配器时,数据流经过网络到达另一台机器,而不是比如说到达本地磁盘驱动器。相似地,系统可以读取从其他机器发送来的数据,并把数据复制到自己的主存。

《深入理解计算机系统》1.3:计算机系统漫游_第1张图片

我们可以使用熟悉的telnet应用在一个远程主机上运行hello程序。

《深入理解计算机系统》1.3:计算机系统漫游_第2张图片

重要主题

系统是硬件和系统软件互相交织的集合体,它们必须共同协作以达到运行应用程序的最终目的。

Amdahl定律

该定律的主要思想是,当我们对系统的某个部分加速时,其对系统整体性能的影响取决于该部分的重要性和加速程度。若系统执行某应用程序需要时间为Told。假设系统某部分所需执行时间与改时间的比例为a,而该部分提升性能的比例为k。即该部分初始所需时间为a*Told,现需时间为(a*Told)/k。因此,总的执行时间为

《深入理解计算机系统》1.3:计算机系统漫游_第3张图片

举个例子,考虑这样一种情况,系统的某个部分初始耗时比例为60%(a=0.6),其加速比例因子为3(k=3)。则我们可以获得的加速比为1/[0.4+0/6/3]=1.67倍。虽然我们对系统的一个主要部分做出了重大改进,但是获得的系统加速度比却明显小于这部分的加速比。这就是Amdahl定律的主要观点----要想显著加速整个系统,必须提升全系统中相当大的部分的速度。

小结:要抓住主要矛盾

并发和并行

数字计算机的整个历史中,有两个需求是驱动进步的持续动力:一个是我们想要计算机做得更多。另一个是我们想要计算机运行得更快。当处理器能够同时做更多的事情时,这两个因素都会改进。我们用的术语并发是一个通用的概念,指一个同时具有多个活动的系统;而术语并行指的是用并发来使一个系统运行得更快。并行可以在计算机系统的多个抽象层次上运用。

1.线程级并发

构建在进程这个抽象之上,我们能够设计出同时有多个程序执行的系统,这就导致了并发。使用线程,我们甚至能够在一个进程中执行多个控制流。单核处理器系统,这种并发执行只是模拟出来的。但随着技术的发展,我们有了多核处理器系统超线程技术

《深入理解计算机系统》1.3:计算机系统漫游_第4张图片

《深入理解计算机系统》1.3:计算机系统漫游_第5张图片

超线程,有时称为同时多线程,是一项允许一个CPU执行多个控制流的技术。举例来说,Intel Core i7处理器可以让每个核执行两个线程,所以一个4核的系统实际上可以并行地执行8个线程。

2.指令级并行

在较低的抽象层次上,现代处理器可以同时执行多条指令的属性称为指令级并行流水线(pipelining)的使用,将执行一条指令所需的活动划分成不同的步骤,将处理器的硬件组织成一系列的阶段,每个阶段执行一个步骤。这些阶段可以并行地操作,用来处理不同指令的不同部分。如果处理器可以达到比一个周期一条指令更快的执行速率,就称之为超标量处理器,大多数现代处理器都支持超标量操作。

3.单指令、多数据并行

在最低层次上,许多现代处理器拥有特殊的硬件,允许一条指令产生多个可以并行执行的操作,这种方式称为单指令、多数据,即SIMD并行。

计算机系统中抽象的重要性

抽象的使用是计算机科学中最为重要的概念之一。例如,为一组函数规定一个简单的应用程序接口(API)就是一个很好的编程习惯,程序员无须了解它内部的工作便可以使用这些代码。

我们已经介绍了计算机系统中使用的几个抽象,在处理器里,指令集架构提供了对实际处理器硬件的抽象。使用这个抽象,机器代码程序表现得就好像运行在一个一次只执行一条指令的处理器上。底层的硬件远比抽象描述的要复杂精细,它并行地执行多条指令,但又总是与那个简单有序的模型保持一致。只要执行模型一样,不同的处理器实现也能执行同样的机器代码,而又提供不同的开销和性能

《深入理解计算机系统》1.3:计算机系统漫游_第6张图片

虚拟机,它是对整个计算机的抽象,包括操作系统、处理器和程序。虚拟机的思想是IBM在20世纪60年代提出来的,但是最近才显示出其管理计算机方式上的优势,因为一些计算机必须能够运行不同的操作系统或同一操作系统的不同版本设计的程序。

你可能感兴趣的:(读书笔记)