本章的第一个概念是计算机系统(computer system)。
计算机系统包括读取并执行程序的 中央处理单元(CPU,
保存程序和数据的存储器以及将芯片转换为实用系统的 其他子系统。
这些子系统会使CPU与显示器、打印机、Internet等外部设备之间的通信变得更加容易。
计算机的性能既取决于CPU;也取决于其他子系统。如果不能高效进行数据传输,
仅仅提高CPU的性能是毫无意义的。
Figure :
Figure :
可编程计算机接收两种类型的输入: 它将要处理的 数据,
以及准确描述要如何处理输入数据的程序。
程序 不过是计算机所执行的完成给定任务的 操作序列。
Figure :
计算机从存储器中读出指令并执行这些指令(即完成或执行指令定义的动作)。
执行指令时,可能要从存储器中读出数据,对数据进行操作,将数据写回存储器。
寄存器是CPU内部用来存放数据的存储单元。时钟提供了脉冲流,
所有内部操作都在 时钟脉冲 的触发下进行。时钟频率是决定计算机速度的一个因素
Figure :
CPU先读取一条指令;在CPU分析或解码指令;从存储器中读出这条指令所需的所有数据。
###计算机指令
尽管计算机能够执行上百种不同指令,但下面的6条 基本指令 可以将所有计算机指令进行分类:
体系结构: 描述了一些与计算机组成方式有关的内容;因为不同的用户会从完全不同的角度看待计算机。
寄存器
计算机体系结构通常被认为是程序员视角中的计算机
计算机 组成表示其体系结构的具体实现
机器码 汇编语言 高级语言
计算机上执行的代码表示为二进制1和0组成的串,被称作机器码(machine code)。
每种计算机都只能执行一种特定的机器码。
人类可读的机器码(例如 ADD R0 ,Time)叫作汇编语言。
能够在类型完全不同的计算机上运行,与底层计算机体系结构几乎没有关系的代码叫作高级语言
(比如C或Java)。在执行之前,高级语言程序必须首先被编译为计算机的本地机器码。
体系结构与组成是不能完全分离的。例如;微处理器内的32位寄存器可以按照
与16位计算机相同的方式实现,如使用16位数据总线,以16位为单位传输数据,
功能单元也是16位的。如果程序员指示计算机将寄存器A中的32位数据复制到寄存器B中,
他将要执行一个32位操作,但16位计算机将执行两个16位操作,
这对程序员来说是完全不可见的。
按照这个例子,我们可以说一台计算机的体系结构是32位的,但它的组成却是16位的。
指令集体系结构包括: 数据类型(每个字的位数以及各个位的含义),
用来保存临时结果的寄存器,指令的类型和格式,以及寻址方式
(表示数据在存储器中存放位置的方法)。
不同层次的程序员看到的计算机是不一样的。汇编语言程序员看到的计算机与C或Java
等高级语言程序员看到的有很大的区别。
即使都是高级语言程序员,C程序员所看到的也与Prolog或LISP程序员看到的有很大的不同。
微代码(Microcode)与微处理器无关。微代码定义了一组基本操作(微指令),
通过执行这些操作可以解释执行机器码。ADD P,Q,R是一条典型的机器指令,
而微指令可能像“将数据从寄存器X移到总线Y上”那么简单。
如何定义微指令是芯片设计者的职责。
Figure :
最先进的计算机使用了最新的制造技术。
Figure :
时钟
时钟是用于生成 连续 的 间隔固定 的电脉冲流。
之所以被称作时钟,是因为可用这些电脉冲来计时或确定计算机内所有事件的顺序
时钟可用它的 重复速率 或 频率 来定义。
时钟也可以用 时钟脉冲的宽度 或 持续时间 来定义,即频率的倒数
事件由时钟信号触发的数字电路被称作同步的,因为它们由时钟信号来同步。
计算机的发展历史丰富而复杂,远比许多人想象得久远。
人类是会计算的生物。
穴居人发明数学也许不是为了在湿冷的天气里玩数独游戏,而是为了丈量土地、建造房屋和报税。
罗马人将鹅卵石放在小托盘上表示数字。后来,他们沿着线滑动鹅卵石辅助进行加法或减法,从而完成计算。
中亚的一些商店,那里的人们用算盘快速地进行计算。
这些设备都不能称作现代意义上的计算机,因为它们都是不可编程的。
可编程这个概念产生于 工业革命 时期,出于工业化控制的需要。
机电( electromechanical)指那些有 活动件 但却 由电控制 的零件。
到20世纪70年代,Intel公司和摩托罗拉公司都发布了8位微处理器。
第一台可用的微机Altair 8800是由MITS公司于1975年推向市场的。
基于Intel的技术和微软的操作系统软件,IBM 在20世纪80年代推出了个人电脑(PC机)。
由于它的开放式体系结构,PC机在第三方软、硬件开发者中流行起来。
Intel将8080微处理器扩展为包括16位80286(1982年)和32位80386(1985年),
以及含有64位数据总线的Pentium(1990年)。
“摩尔定律”一词是卡沃·米德(Carver Mead)于1975年根据戈登·摩尔(GordonMoore)
所 观察 到集成电路的集成度 每两年 翻一番的现象而创造的。
摩尔定律当然是一个 经验性 的观测结果,但在过去的40年里,
技术的进步的确导致芯片内晶体管数量呈指数式增长。这一增长还伴随着集成电路速度的相应提升。
集成电路内晶体管数量的增加还导致体系结构复杂度的急剧增加以及一些极其聪明的性能提升方法的出现。
RISC(精简指令集)与CISC(复杂指令集)
计算是无所不在的。
多媒体处理能力是现代计算机(包括普适的和传统的个人计算机)的一个重要特征。
多媒体处理(处理和存储音频/视频数据)需要很大的存储容量以及完成大量简单
重复操作的实时处理声音样本和图像像素的能力。
Figure :
求最大游程,即 同一个数字连续出现的最大次数
如果我们从数串的左边开始逐个检查数字,在任何一个位置,我们都会得到以下两个结果之一:
Figure :
算法的一些符号
算法
尽管这个问题相对简单,它却含有解决任一问题所需的全部元素
Figure :
下图描述了程序怎样找出保存在一个 假想存储器 中的数串的最大序列长度。
必须强调的是,这个程序是概念上的而不是实际的,因为真正的计算机指令比其更加基础。
这幅图叫作 存储器映射,它展示了信息在存储器中的存放位置。
它是存储器的一幅快照,因为它表示存储器在某个特定时刻的状态。
存储器映射也包含程序使用的变量和数字串。
存储程序计算机会将指令、变量和常量全部保存在同一个存储器内。
Figure :
寄存器传输语言(RTL): 描述性的语言,不能被执行
RTL符号 | 描述 |
---|
存储系统
存储程序计算机的基本操作
执行指令
在这台机器上执行一条指令需要至少两次访存。
存储程序计算机的一种直观合理的指令格式可以用下面的形式表示
operation Address1 ,Address2 ,Address3
Figure :
指令的4个字段、cpu、存储器和指令执行方式之间关系: 解释执行指令
Figure :
指令格式如下
Operation Address1, Address2
实际的计算机中,一般都 不允许同一条指令中使用两个存储地址;
大多数计算机规定一个地址是存储器地址,另一个地址是寄存器。
指令格式如下
operation address
操作结果将一直保存在寄存器中,直到另一条指令将它送入存储器。
Figure :
CPU变成计算机系统的存储系统和总线系统。存储器被视作一个巨大的通过 地址访问的数组。
例如,如果用数组M表示存储器,那么它的第i个元素可以表示为M[i];
存储器非常重要,因为它的大小(即存储容量)决定了程序能够存储的数据量,
它的速度(访问时间)决定了程序的数据处理速率。
程序体积不断增加,程序所使用的数据总量增加得更快。
计算机技术正在飞速进步,而存储技术从某些方面来说却严重地滞后了。
处理器速度的增加速率远远超过了存储器的。
由于CPU与存储器的性能之间的差距不断加大,设计者们试图通过在使用数据之前将它们
从存储器中取出来消除相对慢速的存储器的影响,以 隐藏等待时间(也叫作 延迟)
上图给出了经典的存储层次图,展示了计算机中存储部件的类型、速度(访问时间)
以及它们在PC机中的典型容量。
总线 将计算机的 两个或多个 功能单元连接在一起并允许它们相互交换数据;
总线还将计算机与外设连接在一起
没有总线的情况
有公共总线情况
总线相关术语
多总线系统: 包括片内总线、功能单元间(如CPU和存储器间)的总线以及总线间的总线。
Figure :
文章浏览阅读2.5w次,点赞6次,收藏50次。官方解释是,docker 容器是机器上的沙盒进程,它与主机上的所有其他进程隔离。所以容器只是操作系统中被隔离开来的一个进程,所谓的容器化,其实也只是对操作系统进行欺骗的一种语法糖。_docker菜鸟教程
文章浏览阅读5.7k次,点赞3次,收藏14次。该如何避免的,今天小编给大家推荐两个下载Windows系统官方软件的资源网站,可以杜绝软件捆绑等行为。该站提供了丰富的Windows官方技术资源,比较重要的有MSDN技术资源文档库、官方工具和资源、应用程序、开发人员工具(Visual Studio 、SQLServer等等)、系统镜像、设计人员工具等。总的来说,这两个都是非常优秀的Windows系统镜像资源站,提供了丰富的Windows系统镜像资源,并且保证了资源的纯净和安全性,有需要的朋友可以去了解一下。这个非常实用的资源网站的创建者是国内的一个网友。_msdn我告诉你
文章浏览阅读1.2k次。vue2封装对话框el-dialog组件_
文章浏览阅读4.7k次,点赞5次,收藏6次。MFC 文本框换行 标签: it mfc 文本框1.将Multiline属性设置为True2.换行是使用"\r\n" (宽字符串为L"\r\n")3.如果需要编辑并且按Enter键换行,还要将 Want Return 设置为 True4.如果需要垂直滚动条的话将Vertical Scroll属性设置为True,需要水平滚动条的话将Horizontal Scroll属性设_c++ mfc同一框内输入二行怎么换行
文章浏览阅读832次。检查Linux是否是否开启所需端口,默认为6379,若未打开,将其开启:以root用户执行iptables -I INPUT -p tcp --dport 6379 -j ACCEPT如果还是未能解决,修改redis.conf,修改主机地址:bind 192.168.85.**;然后使用该配置文件,重新启动Redis服务./redis-server redis.conf..._redis-server doesn't support auth command or ismisconfigured. try
文章浏览阅读4.9k次。济大数电实验报告_数据选择器及其应用
文章浏览阅读236次。1研究内容消费在生产中占据十分重要的地位,是生产的最终目的和动力,是保持省内经济稳定快速发展的核心要素。预测河南省社会消费品零售总额,是进行宏观经济调控和消费体制改变创新的基础,是河南省内人民对美好的全面和谐社会的追求的要求,保持河南省经济稳定和可持续发展具有重要意义。本文建立灰色预测模型,利用MATLAB软件,预测出2019年~2023年河南省社会消费品零售总额预测值分别为21881...._灰色预测模型用什么软件
文章浏览阅读1.2k次。12.4-在Qt中使用Log4Qt输出Log文件,看这一篇就足够了一、为啥要使用第三方Log库,而不用平台自带的Log库二、Log4j系列库的功能介绍与基本概念三、Log4Qt库的基本介绍四、将Log4qt组装成为一个单独模块五、使用配置文件的方式配置Log4Qt六、使用代码的方式配置Log4Qt七、在Qt工程中引入Log4Qt库模块的方法八、获取示例中的源代码一、为啥要使用第三方Log库,而不用平台自带的Log库首先要说明的是,在平时开发和调试中开发平台自带的“打印输出”已经足够了。但_log4qt
文章浏览阅读786次。全局观思维模型,一个教我们由点到线,由线到面,再由面到体,不断的放大格局去思考问题的思维模型。_计算机中对于全局观的
文章浏览阅读330次。一、CountDownLatch介绍CountDownLatch采用减法计算;是一个同步辅助工具类和CyclicBarrier类功能类似,允许一个或多个线程等待,直到在其他线程中执行的一组操作完成。二、CountDownLatch俩种应用场景: 场景一:所有线程在等待开始信号(startSignal.await()),主流程发出开始信号通知,既执行startSignal.countDown()方法后;所有线程才开始执行;每个线程执行完发出做完信号,既执行do..._countdownluach于cyclicbarrier的用法
文章浏览阅读508次。Prometheus 算是一个全能型选手,原生支持容器监控,当然监控传统应用也不是吃干饭的,所以就是容器和非容器他都支持,所有的监控系统都具备这个流程,_-自动化监控系统prometheus&grafana实战
文章浏览阅读4.7k次。输入关键字,可以通过键盘的搜索按钮完成搜索功能。_react search