【计算机系统概论Yale.patt】第一章

news2024/11/23 13:25:21

文章目录

  • 1. 计算机是简单部件的系统组合
    • 1.1 计算机组成
      • 1.1.1 编码体系
      • 1.1.2 晶体管构建微处理器
      • 1.1.3 冯·诺依曼机
      • 1.1.4 LC-3机(冯·诺依曼机实现)
      • 1.1.5 LC-3编程
        • 机器语言编程
        • 汇编语言编程
        • 输入输出信息问题
        • 两个重要机制
        • 栈和数据转换
        • 示例:计算器
    • 1.2 两个重要理念
      • 1.2.1 抽象与封装
      • 1.2.2 硬件和软件是等效的
    • 1.3 CPU与计算机系统
        • CPU——计算机
        • 计算机系统
    • 1.4 两个重要思想
      • 1.4.1 通用计算思想
        • 计算机类型
        • 通用计算思想
      • 1.4.2 问题描述到电平
        • 问题
        • 算法
        • 程序
        • 指令集结构
        • 微结构
        • 逻辑电路
        • 元器件
    • 练习题

计算机是非常确定的

对于同样的问题,在任何时候、相同状态下,以相同的方法必然得到相同的结果

1. 计算机是简单部件的系统组合

1.1 计算机组成

1.1.1 编码体系

计算机由许多电子部件组成,这些部件通过导线相连。在任意时刻,导线上要么低电平,要么高电平

只关注“相对于0v,是否足够大

  • 相差小,则定义为 0 V 0V 0V
  • 相差大,定义为 逻辑 1 逻辑1 逻辑1

通过0和1的组合序列,可以表示任何信息。进而可以对这些信息进行算术或逻辑运算,并制成相应的门电路。

1.1.2 晶体管构建微处理器

  • 运算部件
  • 存储部件

1.1.3 冯·诺依曼机

一个描述计算机怎么工作的模型

1.1.4 LC-3机(冯·诺依曼机实现)

Little Computer 3

LC-3 具备现代微处理器(Intel8086,奔腾4)的重要特性,是真实处理器的简化版本,便于学习理解

1.1.5 LC-3编程

机器语言编程

汇编语言编程

输入输出信息问题

两个重要机制

  • TRAP
  • 子程序调用

栈和数据转换

示例:计算器

1.2 两个重要理念

  • 抽象
  • 硬件和软件等效

1.2.1 抽象与封装

抽象:对一些具体的问题进行概括,抽出一类描述这些问题的公共性质的过程

在计算机中,抽象思想体现在:一个系统是由相关联的部件封装而成,这些部件是系统各个方面的本质体现,当系统正常运行时,不需要关注部件的内部细节,只用到部件提供的服务;当系统异常时,才需要关注部件的内部细节

1.2.2 硬件和软件是等效的

硬件和软件是计算机系统的两个组成部分

具体将某个功能划分为哪部分实现,以及软硬之间如何协同工作,原则是:让计算机在特定场景下性能最佳

1.3 CPU与计算机系统

CPU——计算机

Central Processing Unit 中央处理器

控制着信息的处理过程

  • 必须决策下一执行任务是什么

同时也是信息处理过程的具体执行者

  • 必须具备运算能力(加,乘)以及产生执行结果

计算机系统

Computer System

CPU及计算机的外部设备

1.4 两个重要思想

1.4.1 通用计算思想

所有计算机,只要给予足够的时间和内存,能完成的计算任务(所有可计算任务)都是相同的

计算机类型

  • 模拟机:机器产生的结果用可测量的模拟量来表示(如:电压,距离等)
    • 模拟机很难提高精度
  • 数字机:通过一组固定的,有限的数字和字符完成操作
    • 提高精度的方法是增加数字数目

专用机:只能做一种特定的计算任务。如:加法器,只能用于计算加减法,无法进行乘法运算

通用机:给机器提供 任务方法

  • 若新增计算任务,在原来的机器上新增指令(instruction)或程序(program)即可。

通用计算思想

Alan Turing假设:

  • 图灵论题:任何计算都可以通过某种图灵机完成
  • (哲学角度)计算是否具有可定义性质

根据计算时采用的方法和行为:

  • 对计算任务做标记
  • 按照一定的规则记录中间量
  • 得出计算结果
    将这些行为抽象出来,定义了一种能够表达它们的机制——图灵机

在这里插入图片描述

还需证明:任何对图灵机的改进,都需要通过图灵机实现

构建通用图灵机U(这个机器U必须能够仿真所有的图灵机),其所有计算任务都能通过其他图灵机实现

图灵证明…

对于通用图灵机U的描述,阐述了计算机能做什么

一台通用计算机(拥有足够的内存)和一个通用图灵机之间,能完成的任务都是一样的
所有计算机,只要给予足够的时间和内存,能完成的计算任务(所有可计算任务)都是相同的
计算是 可编程的

1.4.2 问题描述到电平

如何将用人类语言描述的问题转换成影响电子运转的电压

在这里插入图片描述

问题

描述问题

采用 “自然语言” 。自然语言有很多二义性

  • 自然语言也可以进行算法描述,前提是每个语句都是确定的,无二义性的

算法

将问题的自然语言描述转换为算法(Algorithm)描述——流程化

  • 确定性:每个操作步骤的描述是清晰的,可定义的(去除语言二义性)
  • 可计算性:算法的每一步都可以通过计算机得出结果
  • 有限性

程序

用编程语言描述,让计算机顺序执行指令序列(去语言二义性)

指令集结构

将程序转换成特定计算机的指令集(instruction set)

指令集结构 (Instruction Set Architecture):程序和计算机硬件之间接口的完整定义

ISA定义:

  • 计算机可以执行的指令集合:计算机能执行的操作,操作码+操作数
  • 数据类型——可接受的操作数表达方式
  • 寻址模式——操作数的定位方法

在设计ISA时,需要折衷考虑计算机内存大小和存储单元的宽度

通过 编译器 (compiler),将高级语言翻译为ISA指令

微结构

将ISA转化为对应的实现——微结构microarchitecture(具体的组织)

对于同一种ISA,不同的处理器有不同的微结构

  • 一整个CPU

ISA描述的是基本功能
微结构,是ISA的具体实现,反映了设计者在成本和性能之间的折衷

  • 具体将某个功能划分为硬件还是软件实现,以及软硬之间如何协同工作,原则是:让计算机在特定场景下性能最佳

逻辑电路

一个逻辑部件的具体实现

  • 部件:加法器,内存,Cache…

元器件

元器件

  • MOS晶体管

练习题

1.2 同汇编语言相比,高级语言是否能相地层计算机表述更多的计算方式
否,高级语言与汇编语言都是对ISA定义的基本功能的具体应用,其所支持的计算方式,由ISA决定,即在统一ISA下,不管何种语言,能够表述的计算方式相同

1.3 模拟计算机为什么难以实现

计算的精度很难提高

1.4 自然语言的二义性,使他不适合直接作为编程语言

1.5

通用图灵机与图灵机

在这里插入图片描述

1.6 自然语言二义性的例子

  • I ate my sandwich on a bed of lettuce.

The sandwich might have been sitting on a bed of lettuce on the plate, or I might have been sitting on a bed of lettuce eating a sandwich.

1.7 对于:底层运行良好,没必要理解这些部件的机制,只有运行不佳,才需要分解部件。这种方法,在什么情况下有效,什么情况下反作用

对抽象的理解

If the taxi driver is honorable, he/she asks you whether time or money is more important to you, and then gets you to the airport as quickly or as cheaply as possible. You are freed from knowing anything about the various ways one can get to the airport.
If the taxi driver is dishonorable, you get to the airport late enough to miss your flight and/or at a taxi fare far in excess of what it should have been, as the taxi driver takes a very circuitous route.

计算机设计过程中有很多的性能与成本的折衷。对于一项任务,可以设计不同的ISA,也可以采用不同的部件实现ISA。只要能够正确运行,都能完成计算任务,但不同的设计方案,其成本与性能不尽相同,只有了解部件的机制,才能在既定成本内完成任务。

1.9 自然语言是否可以表达算法
可以,前提是表述语句都是确定的,无二义性的

1.12

算法特性

在这里插入图片描述

1.13 两台计算机A和B,除了具有减法指令外,其他指令完全相同。两者都具有对一个数求负值的指令。试问:哪一台能解决的问题更多

通用计算思想

A和B能解决一样多的问题。

虽然A的ISA比B多,但B可以通过对加一个数的负值实现减法指令,所以二者的指令集相同,能解决的问题一样多

1.14

在这里插入图片描述

4 × 5 × ( 3 + 3 ) = 120 4\times 5\times (3+3)=120 4×5×(3+3)=120 种转换过程

  • s o r t 1 → C → x 86 → x 86 − m i c r o a r c h i t e c t u r e 1 sort1\rightarrow C\rightarrow x86\rightarrow x86-microarchitecture1 sort1Cx86x86microarchitecture1
  • s o r t 2 → C → → x 86 − m i c r o a r c h i t e c t u r e 2 sort2\rightarrow C\rightarrow \rightarrow x86-microarchitecture2 sort2C→→x86microarchitecture2

4 × 5 × ( 2 + 4 ) = 120 4\times 5\times(2+4)=120 4×5×(2+4)=120 种转换过程

1.15 高级语言与底层语言对比

高级语言:

优点:

  • 完成同样规模的任务,需要更少的指令。程序员可以节省时间
  • 通常易读性强,通过读代码可以知道要完成什么样的任务

缺点:

  • 程序经常调用的指令与硬件关联小,导致计算的执行效率较低。

1.16 列举三个ISA定义所包含的内容

  • 操作类型
  • 数据类型
  • 寻址模式

1.17 ISA和微结构的区别

ISA是程序和计算机硬件之间接口的完整定义。它描述了一台机器支持的基本功能,一个程序员能在特定机器上使用。

微结构,是ISA的物理实现,反映了设计者在成本和性能之间的折衷

1.18 一种微结构可以实现多少种ISA,一种ISA可以在多少种微结构上实现

一个微结构只能实现一种ISA(指令集架构),一种指令集架构(ISA)可以有很多种实现

1.19 列出自然语言到电子器件的所有转化过程,并在每一层找出一个例子

在这里插入图片描述

1.20 转换层次又被称为不同的抽象层次,说法是否合理

将转换层次称为抽象层次是合理的。

每个转换层次本质上是一个抽象层次,上一层是其下所有层的抽象

举例:

  • 问题:找两个数的平均数
  • 算法: a + b 2 \frac{a+b}{2} 2a+b
  • 编程语言:C

只需要使用C语言 printf("%lf",(a+b)/2); 即可,更低层次已经被抽象,在写下这行代码时候,我们无需关注用到ISA哪些指令实现,以及更低层是怎样实现这行代码的。

1.21 假设你去商店购买字处理软件。请问该软件通常以什么方式存在,是高级语言或是汇编语言,还是与你计算机ISA兼容的格式

与计算机ISA兼容的格式。

对于高级语言或者低级的汇编语言,需要对源程序进行编译或链接才可以运行。而字节级显然是汇编程序的输出,所以字处理软件必然是ISA兼容的格式或者机器语言,用于将字转换为机器语言。

1.22 假如给你一项任务,完成转化层次中的某一层,且只允许转换为相邻一层,哪一层转化难度最大

问题描述到算法是最困难的一层

针对具有二义性的问题描述生成相应的算法是比较困难的,这需要理解问题的真正含义。其他层的转换可以通过一个程序来完成,而问题描述到算法至今无法编程实现。

1.23 为什么不断改变微结构但不改变ISA

为了兼容现有系统软件和应用软件,ISA需要向下兼容

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/418251.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Linux基础篇(三)常见指令

目录 一、创建文件和目录 二、命令详解 0. 命令和选项 1. ls命令 2. cd命令 3. touch命令 4. mkdir命令 5. tree命令 6. rmdir命令 7. rm命令 8. man 9. nano 10. cat命令 11. cp 命令 12. mv 命令 13. echo命令 14. more命令 15. less命令 16. Ctrl C 17. head 命令 18. tail…

台灯的种类有哪些?国内热门护眼灯品牌推荐

台灯是我们日常生活中常见的电器之一,台灯不仅可以为人们照明,还可以用来家居装饰,根据人们不用的需求,台灯的种类也很多,有书房台灯、读写台灯、工艺台灯。 书房台灯:灯光的局部照明效果,以书写…

禅道OpenAI更新至1.2版本,超多实用功能惊喜上线!

广受欢迎的禅道OpenAI插件近日成功发布,截至目前已更新至1.2版本。 截至本版本发布,禅道OpenAI已经拥有了神奇海螺(ChatGPT聊天)、需求润色、任务润色、Bug润色及本次的需求一键生成用例功能,仍有更多实用的新功能正在…

Sentinel 工作主流程

Overview 在 Sentinel 里面,所有的资源都对应一个资源名称以及一个 Entry。Entry 可以通过对主流框架的适配自动创建,也可以通过注解的方式或调用 API 显式创建;每一个 Entry 创建的时候,同时也会创建一系列功能插槽(…

2023年第1季社区Task挑战赛开启,等你来战!

社区Task挑战赛是面向社区开发者开展的代码或教程征集活动。该挑战赛为社区中热爱FISCO BCOS及周边组件的开发者提供了探索区块链技术、挑战技术难题的舞台。该挑战赛去年在社区成功举办了3季,共吸引了数百名开发者报名。 前3季都有哪些有趣的作品? 在…

【图数据挖掘】— 子图同构问题、单射函数和双射函数、同构(isomorphic)和同态(homomorphism)

子图同构问题 子图同构(Subgraph Isomorphism)是指在图论中,两个图之间是否存在一种关系,使得其中一个图的顶点集合和边集合可以通过对应的方式映射到另一个图的顶点集合和边集合上,且保持原来的边和顶点的关系不变。…

如何设计一个安全的对外接口?

对外接口安全措施的作用主要体现在两个方面,一方面是如何保证数据在传输过程中的安全性,另一方面是数据已经到达服务器端,服务器端如何识别数据。 1. 数据加密 数据在传输过程中是很容易被抓包的,如果直接传输,数据可…

elasticsearch 核心概念

1.近实时(Near Real Time,NRT) elasticsearch 是一个近实时的搜索和分析平台,这意味着从索引文档到可搜索文档都会有一段微小的延迟(通常是1s以内)。这种延迟主要是因为 elasticsearch 需要进行数据刷新和索引更新。 …

远程代码执行渗透与防御

远程代码执行渗透与防御1.简介2.PHP RCE常见函数3.靶场练习4.防御姿势1.简介 远程代码执行漏洞又叫命令注入漏洞 命令注入是一种攻击,其目标是通过易受攻击的应用程序在主机操作系统上执行任意命令。 当应用程序将不安全的用户提供的数据(表单、cookie…

jQuery 基础入门速成上篇

jQuery 是目前使用最广泛的 javascript 函数库。提到 jQuery 你可能知道这句英文 : ———— Write Less,Do More ( 写的少,做的多 ) 引入jQuery jQuery是一个函数库,一个 js 文件,页面可以使用 script标签 引入使用&a…

JVM 类加载器

文章目录1 类加载器1.1 类加载器介绍1.2 类加载器的加载规则1.2 类加载器类型总结2 双亲委派模型2.1 双亲委派模型介绍2.2 双亲委派模型的执行流程2.3 双亲委派模型的好处回顾一下类加载过程:加载->连接->初始化。 其中连接又分为:验证->准备-&…

指针太难?手把手教你理解指针(传参、函数指针)

目录 前言 一、数组和指针的参数 1.一维数组传参 2.二维数组传参 3.一级指针传参 4.二级指针传参 二、函数指针 1.函数的地址 2.函数指针的形式 3.函数指针的使用 三、加深理解,两段有趣的代码 前言 之前的一篇文章讲到了指针的概念、指针和数组的关系&am…

【机器学习】随机森林预测泰坦尼克号生还概率

目录 前言: 【一】数据清洗及可视化 介绍 知识点 环境准备 数据特征介绍 检查数据 相关系数 缺失值 偏态分布 数值化和标准化 离群点 实验总结一 【二】分类模型训练及评价 介绍 环境准备 模型评估 模型选择 性能度量 实验总结二 【三】随机森…

机器学习入门(全连接神经网络-1)

机器学习入门(全连接神经网络-1) 目录 机器学习入门(全连接神经网络-1)一、神经元简介1.概念2.例子二、常见的激活函数从神经元开始进行讲述,从零开始搭建全连接神经网络。 一、神经元简介 1.概念 神经元是神经网络的基本组成单位。 神经元接受输入,对它们进行一些数学运…

自主机器人运动规划|地图相关概念总结

自主机器人运动规划|地图相关概念总结地图表示占用栅格地图八叉树地图(Octo-map)Voxel hashing(哈希表地图)点云地图TSDF mapESDF map地图表示 地图分成两个模块: 地图装在数据的数据结构地图信息融合方法 占用栅格地图 使用最为广范的是 …

用PyTorch训练模型识别captcha库生成的验证码

目录 制作训练数据集 用Dataloader加载自定义的Dataset 训练模型 识别验证码 总结与提高 源码下载 在本节,我们将使用深度学习框架PyTorch来训练模型去识别一种难度稍大一点的数字字母混合验证码(我们可以使用第三方库captcha生成这种验证码&#…

4.2 换元积分法

思维导图: 学习目标: 学习换元积分法时,可以遵循以下几个步骤: 理解换元积分法的基本思想:将一个复杂的积分变成一个简单的积分,通过引入一个新的变量来实现。 掌握换元积分法的基本公式:如果…

reviewSpringBoot

1.springboot简介说明 Springboot简化新Spring应用的初始搭建以及开发过程 SpringBoot是基于Spring的框架,该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置。 SpringBoot集成了绝大部分目前流行的开发框架,就像…

FISCO-BCOS链节点黑名单对共识的影响

目录一、前言二、测试过程三、PBFT一、前言 目的:在fisco-bcos(v2.8.0)环境下,测试黑名单对节点共识的影响。 部署搭建四节点的链,并部署console: https://fisco-bcos-documentation.readthedocs.io/zh_…

3 个自定义防抖 Hooks 的实现原理

前言— 本文通过实现 useDebounceFn、useDebounce、useDebounceEffect 3 种自定义防抖 Hooks,来介绍在日常开发过程中自定义 Hooks 的思路及实现,帮助大家完成通用 Hooks 来提高开发效率。 防抖— 防抖的概念已经司空见惯了,这里稍作简单介…