内存单元,CPU对存储器的读写,三大总线
.存储单元
存储器被分成若干个存储单元,每个存储单元从0开始顺序编号。电子计算机的最小信息单位是bit。8个bit组成一个Byte(虽然现在一个字节可能不是8位,有宽字符出现了,但是一般我们的机器都是8位1字节的),也就是通常所说的字节。微型机存储器的存储单元可以存储一个Byte,即8个二进制位。一个存储器如果有128个存储单元,那么它就可以存储128个Byte。
微机存储器的容量是以字节为最小单位来计算的。
对于拥有128个存储单元的存储器,我们可以说,它的容量是128个字节。常见计量容量换算:
1KB=1024B 1MB=1024KB 1GB=1024MB 1TB=1024GB
.CPU对存储器的读写
CPU要想进行数据读写,必须和外部器件(标准说法是芯片)进行下面三类信息的交互:
1.存储单元的地址(地址信息)
2.器件的选择(即选择要对那个一个器件进行操作 ),读或写的命令(控制信息)
3.读或写的数据(数据信息)
但是,CPU是通过上面讲地址、数据和控制信息传到存储芯片中的呢?电子计算机能处理、传输的信息都是电信号,电信号当然要用导线传送。在计算机中专门有链接CPU和其他芯片的导线,通常称为总线。总线从屋里上来讲,就是一根根导线的集合。根据传输信息的不同,总线从逻辑上分为三类,地址总线,数据总线和控制总线。
.地址总线
CPU是通过地址总线来指定存储单元的。一根导线在稳定状态只有两种状态,0或者1。一个CPU有N跟地址总线,则可以说这个CPU的地址总线的宽度为N。这样的CPU最多可以寻找2的N次方个内存单元,即2的N次方Byte。
.数据总线
数据总线的宽度决定了CPU和外界的数据传送速度。8根数据总线一次可以传送一个8位二进制数据,即一个字节。
8088CPU数据总线宽度为8, 8086CPU数据总线宽度为16。如果传输数据89D8H,8088需要分两次传输,而8086只用传输一次。
.控制总线
CPU对外部器件的控制是通过数据总线来进行的。有多少根控制总线,就意味着CPU提供了对外部器件的多少种控制。控制总线的宽度决定了CPU对外部器件的控制能力。
.内存地址空间
什么是内存空间?如果一个CPU地址总线宽度为10,那么可以寻址1024个内存单元,即寻址能力为1KB。这1024个可寻址的内存单元就构成这个CPU的内存地址空间。
.主板
每一台PC机都有一个主板,主板上的器件通过总线相连。这些器件有CPU、存储器、外围芯片组、扩展插槽等。扩展插槽上一般插有RAM内存条和各类接口卡。
.接口卡
CPU对外部设备都不能直接控制,比如显示器、音箱、打印机等。直接控制这些设备工作的是插在扩展插槽上的接口卡。扩展插槽通过总线个CPU相连,所以接口卡也通过总线和CPU相连。CPU可以直接控制接口卡,从而实现对外设的间接控制。
.各类存储器芯片
RAM:随机存储器,可读可写,但必须带电存储,掉电后存储内容丢失。
ROM:只读存储器,只能读取数据不能写入,掉电后内容不丢失。
.内存地址空间
CPU在操控存储器的时候,把它们当做内存来对待。把它们总的看作一个由若干存储单元组成的逻辑存储器,这个逻辑存储器就是我们说说的内存地址空间。在汇编这门课中,我们面对的就是内存地址空间。内存地址空间的大小受CPU地址总线的宽度限制。8086CPU地址总线宽度为20,可以定位2的10次方个内存单元,即内存空间大小为1MB,80386CPU地址总线宽度为32,则内存地址空间最大为4GB。我们基于一个计算机硬件系统编程的时候,必须知道这个系统中的内存地址空间分配情况。这样才能保证读写操作是在预期存储器中进行的。最终运行程序的是CPU,我们用汇编编程的时候,必须从CPU的角度思考问题。
内存单元,CPU对存储器的读写,三大总线的更多相关文章
- DDR3内存详解,存储器结构+时序+初始化过程
DDR3内存详解,存储器结构+时序+初始化过程 标签: DDR3存储器博客 2017-06-17 16:10 1943人阅读 评论(1) 收藏 举报 分类: 硬件开发基础(2) 转自:http:/ ...
- 电脑内存和CPU的关系
http://zhidao.baidu.com/link?url=OmHYd0uUJ3elyOnx1Qpdw1GGhMQBzwbdKSwR62Dn6j0090-sR0sQWR02THP-uPx7cK6 ...
- CPU缓存是位于CPU与内存之间的临时数据交换器,它的容量比内存小的多但是交换速度却比内存要快得多。CPU缓存一般直接跟CPU芯片集成或位于主板总线互连的独立芯片上
一.什么是CPU缓存 1. CPU缓存的来历 众所周知,CPU是计算机的大脑,它负责执行程序的指令,而内存负责存数据, 包括程序自身的数据.在很多年前,CPU的频率与内存总线的频率在同一层面上.内存的 ...
- 基础知识:语言、编程、计算机组成、cpu、存储器
2019年3月18日一. 语言:一种事物与另外一种事物沟通的介质. 编程语言:程序员与计算机沟通的介质. 编程:把要让计算机做的事用一种编程语言表达出来. ...
- java多线程下如何调用一个共同的内存单元(调用同一个对象)
/* * 关于线程下共享相同的内存单元(包括代码与数据) * ,并利用这些共享单元来实现数据交换,实时通信与必要的同步操作. * 对于Thread(Runnable target)构造方法创建的线程, ...
- 转---高并发Web服务的演变——节约系统内存和CPU
[问底]徐汉彬:高并发Web服务的演变——节约系统内存和CPU 发表于22小时前| 4223次阅读| 来源CSDN| 22 条评论| 作者徐汉彬 问底Web服务内存CPU并发徐汉彬 摘要:现在的Web ...
- centos文件/文件夹操作-检查磁盘、内存、cpu使用情况-vi操作命令
Part1:CentOS文件/文件夹操作 1.新建文件夹 即创建目录 mkdir 文件名 新建一个名为test的文件夹在home下 vi source1 mkdir /home/test 注意:当创建 ...
- 计算机支持的最大内存与CPU之间的关系
在使用计算机时,其最大支持的内存是由 操作系统 和 硬件 两方面决定的. 先说一下硬件方面的因素,在计算机中 CPU的地址总线数目 决定了CPU 的 寻址 范围,这种由地址总线对应的地址称作为物理地 ...
- 浅析 Pycharm 内存、cpu 占用率
浅析 Pycharm 内存.cpu 占用率 本机配置参数: ------------------------------------------ Windows 10 专业版 X64 ----- ...
随机推荐
- navicat ora-28547:connection to server failed
navicat ora-28547:connection to server failed CreationTime--2018年8月9日18点47分 Author:Marydon 1.情景还原 ...
- 微信QQ的二维码登录原理js代码解析
这篇文章主要大家详细解析了微信QQ的二维码登录原理js代码,具有一定的参考价值,感兴趣的小伙伴们可以参考一下 在很多地方就是都出现了使用二维码登录,二维码付款,二维码账户等应用(这里的二维码种马,诈骗 ...
- python之函数用法xrange()
# -*- coding: utf-8 -*- #python 27 #xiaodeng #python之函数用法xrange() #xrange() #说明:返回一个生成器 #xrange做循环的性 ...
- 头文件dirent.h
<dirent.h>是POSIX.1标准定义的unix类目录操作的头文件,包含了许多UNIX系统服务的函数原型,例如opendir函数.readdir函数. opendir函数: DI ...
- iOS打包framework - Swift完整项目打包Framework,嵌入OC项目使用
场景说明: -之前做的App,使用Swift框架语言,混合编程,内含少部分OC代码. -需要App整体功能打包成静态库,完整移植到另一个App使用,该App使用OC. -所以涉及到一个语言互转的处理, ...
- Swift内存管理、weak和unowned以及两者区别(如何使用Swift 中的weak与unowned?)
Swift 是自动管理内存的,这也就是说,我们不再需要操心内存的申请和分配. 当我们通过初始化创建一个对象时,Swift 会替我们管理和分配内存.而释放的原则遵循了自动引用计数 (ARC) 的规则:当 ...
- evernote如何笔记共享
首先将你的笔记共享 访问你的共享笔记地址,就可看到共享笔记的内容了 https://www.evernote.com/pub/用户名/笔记名 https://www.evernote.com/ ...
- Linux命令-终止进程命令:pkill
killall是杀死所有进程,而pkill是按照进程名称杀死进程,可以达到杀死所有进程的目的,因为linux里面同名的进程是分主进程和子进程的. pkill - httpd 按名称强制杀死httpd进 ...
- 【ERROR】while loading shared libraries: /u01/app/oracle/product/11.2.0/lib/libclntsh.so.11.1: cannot
问题: [oracle@mydb]$ lsnrctl status lsnrctl: error while loading shared libraries: /u01/app/oracle/pro ...
- Android Fragment之间传递List数据
要说的是在两个Fragment之间传递List数据,比如有个List<User>,以及传递字符串数据,比如testId,该如何从FragmentA传递到FragmentB呢? 下面这个例子 ...