计算机组成原理随笔(一)

1 计算机体系结构

计算机革命发展得非常快速,以至于使用老式计算机的很多电影现在看起来十分有年代感,有的电影甚至无法预料后来的计算机是什么样的。

计算机各个组成部分的技术发展非常不均衡,各部分性能差异非常大。在计算机的发展前期,几乎没有人敢想以后居然能用上便捷式计算机。对于计算机来说,老式计算机一般都要接上电源,而现在的笔记本电脑、ipad,基本上都可以利用外部电源来解决电源问题。

除了电源问题外,功耗问题也存在。一个狭小的计算机空间如何解决处理器产生的热量,是非常重要的课题,尽管后来出现了多核处理器,但是计算机的性能依旧上不去,绝大部分原因来源于散热。

1.1 计算机系统体系结构

1.1.1 简单的计算机结构

媒体一直把一个微处理器(microprocessor)或者一块芯片(chip)叫做计算机系统。这实际上是不对的,计算机系统应该包括中央处理单元(cemtral processing unit,CPU),保存程序和数据的存储器,以及将芯片转换为实用系统的其他子系统。这些子系统会使得CPU和其他外部设备的通信变得更加容易。

计算机执行程序的部分叫做CPU,也叫处理器微处理器则是在单个硅片上实现的CPU。围绕着微处理器构建的计算机被称作微机

CPU尽管是核心,但是计算机性能可不仅仅取决于此,如果处理的数据来源慢,处理再快又有什么用,还不是等人送数据进来才能处理。在过去的几十年,处理器性能持续高速增长,而硬盘的性能几乎不变,等到固态硬盘诞生后,这种矛盾才趋于缓和。

下图描述了一个简单的计算机系统的结构:

image-20220130155929264

其中信息保存在存储器,而存储器一般分为多种,如主存、缓存、辅存、寄存器等等。这里图中出现了Cache。Cache一般指的是高速缓存,在以前Cache一般位于CPU之外,而在现在大多数Cache都在CPU内部。

Cache存储器,电脑中为高速缓冲存储器),是位于CPU和主存储器DRAM(Dynamic Random Access Memory)之间,规模较小,但速度很高的存储器,通常由SRAM(Static Random Access Memory 静态存储器组成。它是位于CPU与内存间的一种容量较小但速度很高的存储器。CPU的速度远高于内存,当CPU直接从内存中存取数据时要等待一定时间周期,而Cache则可以保存CPU刚用过或循环使用的一部分数据,如果CPU需要再次使用该部分数据时可从Cache中直接调用,这样就避免了重复存取数据,减少了CPU的等待时间,因而提高了系统的效率。Cache又分为L1Cache(一级缓存)和L2Cache(二级缓存),L1Cache主要是集成在CPU内部,而L2Cache集成在主板上或是CPU上。

需要注意的是,对应的信息在适当的时刻存放在适当的存储器,这点十分重要,如果存放不当,即使CPU再快也只能干等。

图中主存一般指的是内存、寄存器,而辅存一般指外存(如磁盘、CD-ROM等)。而总线一般是用来传输各个子系统之间的通信,确保数据能够从计算机的一个位置传输到另外一个位置。

寄存器一般处于CPU内部,用来存放数据。对于常用的数据,一般先放在存储器,放不下了就放到高速缓冲去,再放不下就转移到磁盘。

1.1.2 计算机

定义计算机时必须指明计算机的类型。冯诺依曼是最早界定计算机结构的人之一。计算机有很多种,常见的有个人计算机、手机、模拟计算机、神经计算机、量子计算机等。

通用的数字计算机一般分为两部分:CPU存储器系统。CPU读程序来完成程序指定的操作。存储器系统保存两类信息:程序程序产生的数据

程序和程序产生的数据不一定要放在同一个存储器系统内,但是现在大多数计算机系统都是放在同一个存储器系统。这种计算机叫做存储程序计算机

计算机可以看做是一个黑盒子,它将信息从一个位置转移到另外一个位置并且处理,这个转移的过程通常是由总线来完成,CPU通过总线传来的信息读取出其中的指令,然后进行处理。需要注意的是,处理数据完成后,可能要把数据传回存储器。

一个简单的处理数据的过程如下所示:

对两个数X和Y做加法。最开始CPU会从存储器读取一条指令,这条指令通过CPU的分析和解码后,就获得了这条指令所需的数据。此时X和Y会从存储器中取出,然后分别放于不同寄存器中,当读取相加指令的时候,就把两个寄存器内部的内容相加,并把结果保存在第三个寄存器中,最后再根据指令把数据写回存储单元。

image-20220130161924318

一般来说,传数据和传指令的总线只有一条,数据和指令轮流使用;当然也有个例,比如哈佛体系结构计算机。

1.2 体系结构的构成

1.2.1 概述

在上面我们曾经提到寄存器。一般来说寄存器用来存放一个单位的数据或字数据。由于其处于CPU内部,在计算机内,它的访问速度远远快于CPU外的存储器。

对于体系结构的构成来说,有时候体系结构组成两个术语会交差使用,但是实际上体系结构构成是有区别的,举个例子,时钟的体系结构是定义在有刻度的表盘上转动指针,而它的组成可以是机械钟,石英钟,电子钟。

上述的例子说明了组成是体系结构的子集,给定的体系结构可以有不同的组成方式。

对于程序员来说,计算机底层原理实际上都被屏蔽掉了,我们并不关心X+Y是什么底层逻辑在相加,而在意其结果。计算机体系结构的这个抽象视图现在通常被叫做指令集体系结构

计算机是由二进制的0和1组成的串,这串也被叫做机器码。人类可读的机器码叫做汇编语言。而能够在类型完全不同的计算机上运行,和底层计算机体系结构没有关系的代码叫做高级语言。任何代码写完之后,运行前都需要先通过编译器的编译,转换为本地机器码之后才能运行。

指令集体系结构包括了数据类型、保存临时结果的寄存器、指令的类型和格式以及寻址方式。术语微代码是定义在芯片上的一组执行基本操作(微指令)的代码,执行这些操作可以解释机器码。

在这门知识结构体系中,我们用体系结构来代表计算机的抽象指令集体系结构,而用组成来代表计算机的硬件实现。而后会用术语微体系结构来描述CPU的实现。

1.2.2 计算机系统和技术

下图的分类表明了设计计算机所要考虑的要素。

image-20220130164412198

1.2.2.1 技术

20世纪70年代以来,半导体技术一直遵循着摩尔定律的预测而发展。摩尔定律表明了芯片的集成度每18个月翻一番。有时候意味着处理器的性能每18月翻一番。

1.2.2.2 应用

有些计算机用于嵌入式、有些计算机用于个人工作、有些计算机用于电视、游戏机,对于不同的应用场景计算机的设计也会有所不同。

1.2.2.3 工具

计算机硬件的设计软件也会影响计算机的设计,你要用什么样的软件去设计硬件,这取决于软件产品做的好不好,精度高不高。

1.2.3 计算机体系结构在计算机科学的地位

工欲善其事必先利其器,对于想要学习计算机的人,不知道计算机组成原理怎么行;对于想优化代码的,在了解了计算机体系结构后就会思考到对应的优化方案,进而付出实践。

时钟

也许你听到这个术语,你第一个想到的是我们现实的时钟;实际上在计算机操作系统、计算机组成原理、数字电路设计都会涉及到这个术语。在绝大多数数字电路中都带有一个时钟,用来生成连续的间隔固定的电脉冲流。之所以叫做时钟,无非是因为可以利用它来确定计算机的一些事件的顺序。

事件由时钟信号触发的数字电路被称作同步。有些事件则是异步的,比如移动鼠标,移动了他才会向计算机发送信号,这是个先动后发的过程,属于异步事件。然而,计算机在每个时钟脉冲都会去检查一下鼠标在干嘛,这是一个同步事件

例如我们说的时钟中断,在所有外部中断中,时钟中断起着特殊的作用。因为计算机是以精确的时间进行数值运算的数据处理的,最基本的时间单元是时钟周期。例如取指令,执行指令,存取内存等都依靠时钟进行时间的确定。

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

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

相关文章

Mongo读书笔记1 -- GridFS

一个Mongo文档最大4M. GridFS不依赖于MongoDB, 其他符合规范的驱动都可以访问它。 GridFS包含两部分:一部分存储文件名和其他metadata; 另一部分存储实际的文件,通常分成一个个大小为256k的小块。 这两个部分通常被命名为files和chunks,在fs命名空间下&a…

简单搭建一个SSM项目(一)

简单搭建一个用户管理的SSM项目框架,虽然也能用servletjdbc搭建更简单的,不过个人感觉工作中更多用的ssm框架项目,这里就简单用ssm来搭建需要的项目吧。 准备工具:eclipse、jdk1.7、Mysql、maven、tomcat。(请先确定计…

android wp主题,WP桌面:win10系统的最佳替代安卓应用

WP桌面是信壹网络继刷机大师、ROOT大师和安卓清理大师后重点开发的一款仿windows phone风格的手机桌面应用,从2012年推出至今已获得海内外千万粉丝的好评。这个基于Android开发的手机桌面,这不仅仅体现了WP桌面良好的用户体验,同时也从侧面反…

数据结构杂谈(三)

本文的所有代码均由C编写 如果你已经看完这篇杂谈,你可以前往上一篇杂谈→数据结构杂谈(二)_尘鱼好美的小屋-CSDN博客 3 单链表 文章目录3 单链表[toc]3.1 单链表的定义3.1.1 引入2.1.2 单链表和顺序表的优劣2.1.3 单链表的代码定义3.2 单链表的初始化3.…

Mac Book Pro不能识别移动硬盘

2019独角兽企业重金招聘Python工程师标准>>> 今天把一台Mac Book Pro重装了一下系统,然后想把移动硬盘上的资料考入电脑,发现插上移动硬盘电脑没有反映。马上搜索解决办法,众说纷纭。因为没重装之前是好的,所以判断为软…

数据库杂谈(四)——关系演算和E-R数据模型

文章目录3 形式化关系查询语言3.2 关系演算和E-R数据模型3.2.1 概述3.2.2 元组关系演算3.2.2.1 概述3.2.2.2 形式化定义3.2.2.3 表达式的安全性3.2.3 域关系演算3.2.4 关于关系演算的习题3.2.5 对传统数据模型的评价3.2.6 E-R数据模型3.2.6.1 基本概念3.2.6.2 E-R图3.2.7 题型总…

小程序获取微信用户绑定的手机号

小程序API内提供getPhoneNumber借口来获取用户已经绑定到微信的手机号,但需要用户主动触发才能发起获取手机号接口&#xff0c;所以该功能不由 API 来调用; 基本流程如下: 使用方法 需要将 <button> 组件 open-type 的值设置为 getPhoneNumber&#xff0c;当用户点击并同…

华为正式发布鸿蒙多久可以用,华为正式发布鸿蒙OS,手机随时能用

8月9日下午&#xff0c;华为在松山湖召开了HDC2019开发者大会&#xff0c;而在此次大会上华为正式发布了传说中的华为鸿蒙系统&#xff0c;也就是Harmony OS。鸿蒙系统它是一个基于微内核的全新全长近分布式的操作系统&#xff0c;它不仅仅局限于某一个设备使用而是可以在其智慧…

WCF rest 的帮助页面和缓存机制

打开vs2010 在工具选项中选择扩展管理器——联机库 安装WCF REST Service Template 40(CS)模板 安装后新建wcf服务应用程序&#xff0c;删除默认建立的文件。 新建RestWcf4HelpPage.svc&#xff0c;代码如下 using System; using System.Collections.Generic; using System.Lin…

数据结构杂谈番外篇——时间复杂度计算

我们先给出推导的方法&#xff0c;然后下面一步一步来推导。 推导大O阶 用常数1取代运行时间中的所有加法常数在修改后的运行次数函数中&#xff0c;只保留最高阶项如果最高阶存在且不是1&#xff0c;则去除这个项相乘的常数所得结果即为大O阶 示例 int sum 0&#xff0c;…

Java学习笔记(二):String

String 在Java中String是作为引用对象存在的一种数据类型&#xff0c;用来保存字符串。 实例化和赋值 //直接声明 String s1 "Hello world!"; //通过构造函数创建, 提供了 11 种不同参数创建的方法 char[] c { h, e, l, l, o, .}; String s2 new String(c); Strin…

数据结构杂谈(一)

在你点进来这里的一瞬间&#xff0c;欢迎你找到了宝藏 这是一些关于数据结构和算法里最详细的阐述和学习心得&#xff0c;我十分乐意和你分享这些知识。 如果你已经看完这篇杂谈&#xff0c;可以前往下一篇→数据结构杂谈&#xff08;二&#xff09;_尘鱼好美的小屋-CSDN博客 1…

计算器排html页面,htmltest~计算器界面的实现

通过divcss和部分布局的作用&#xff0c;实现了&#xff0c;如下效果的计算器展示页面![C%]R$IGDK4J(%3LJXD3]SY.png&#xff0c;废话不多说&#xff0c;最主要的还是分享代码&#xff1a;html&#xff1a;Title.计算器-口 X编辑(E)查看(V)帮助(H)BackspaceCECMC789/sqrtMR456*…

win7 git 添加 ssh key

分两步走&#xff0c;借助git bash客户端&#xff1a;第一步&#xff1a;生成秘钥创建SSH key. 在用户主目录下&#xff0c; 看看有没有.ssh目录&#xff0c; 如果有&#xff0c; 再看看这个目录下有没有id_rsa 和 id_rsa.pub 这两个文件&#xff0c; 如果已经有了&#xff0c;…

解决三星手机EditText背景色的问题

问题描述android:background"#ffffff"其他手机手机背景都是白色&#xff0c;三星却是黑色的。怎么办 解决方案1写个主题测试下 解决方案2检查是三星的手机换背景色解决方案3你自己设置下edittext的背景就好了 解决方案4三星手机没这bug&#xff0c;你的固件不是正常的…

操作系统随笔(二)

如果你还没有读过第一篇随笔&#xff0c;请点击这里→操作系统随笔&#xff08;一&#xff09; 文章目录[toc]2 进程和线程2.1 进程2.1.1 进程模型2.1.2 进程的创建2.1.3 进程的终止2.1.4 进程的层次结构2.1.5 进程的状态2.1.6 进程的实现2.2 线程2.2.1 进程的使用2.2.2 经典的…

golang实现常用数据结构

2019独角兽企业重金招聘Python工程师标准>>> 1.数组栈的实现 package mainimport ( "fmt")type ItemType inttype Stack struct { node [10]ItemType maxsize int top int}func StackInit(p *Stack) { p.top -1}func StackCheckFull(p *Stack) bo…

【问题解决】无法创建新的堆栈防护页面

【问题发现】 项目中需要几个自定义的控件,菜鸟D定义了一个接口,打算使用多态来统一调用。在完成两个自定义控件后&#xff0c;项目都能正常运行。但是在第三个控件使用的时候就出了问题&#xff1a;将控件拖到界面上以后&#xff0c;不能拖动改变控件的宽度&#xff0c;一拖动…

java及python调用RabbitMQ

1,python调用MQ发送消息(生产者),话不多说,直接上干货 import pika 如下图 2.java调用MQ发送消息(生产者) 具体代码如下: python 的代码如下 connection pika.BlockingConnection(pika.ConnectionParameters(IP,端口,/))channel connection.channel()msg_props pika.Bas…

html知识收集(一)

1.页内跳转iframe <ul> <li><a href"1.html" target"iframe1">1</a></li> <li><a href"2.html" target"iframe1">2</a></li> </ul> </ul> <iframe name"i…