.存储单元

存储器被分成若干个存储单元,每个存储单元从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对存储器的读写,三大总线的更多相关文章

  1. DDR3内存详解,存储器结构+时序+初始化过程

    DDR3内存详解,存储器结构+时序+初始化过程 标签: DDR3存储器博客 2017-06-17 16:10 1943人阅读 评论(1) 收藏 举报  分类: 硬件开发基础(2)  转自:http:/ ...

  2. 电脑内存和CPU的关系

    http://zhidao.baidu.com/link?url=OmHYd0uUJ3elyOnx1Qpdw1GGhMQBzwbdKSwR62Dn6j0090-sR0sQWR02THP-uPx7cK6 ...

  3. CPU缓存是位于CPU与内存之间的临时数据交换器,它的容量比内存小的多但是交换速度却比内存要快得多。CPU缓存一般直接跟CPU芯片集成或位于主板总线互连的独立芯片上

    一.什么是CPU缓存 1. CPU缓存的来历 众所周知,CPU是计算机的大脑,它负责执行程序的指令,而内存负责存数据, 包括程序自身的数据.在很多年前,CPU的频率与内存总线的频率在同一层面上.内存的 ...

  4. 基础知识:语言、编程、计算机组成、cpu、存储器

    2019年3月18日一.    语言:一种事物与另外一种事物沟通的介质.              编程语言:程序员与计算机沟通的介质.    编程:把要让计算机做的事用一种编程语言表达出来.    ...

  5. java多线程下如何调用一个共同的内存单元(调用同一个对象)

    /* * 关于线程下共享相同的内存单元(包括代码与数据) * ,并利用这些共享单元来实现数据交换,实时通信与必要的同步操作. * 对于Thread(Runnable target)构造方法创建的线程, ...

  6. 转---高并发Web服务的演变——节约系统内存和CPU

    [问底]徐汉彬:高并发Web服务的演变——节约系统内存和CPU 发表于22小时前| 4223次阅读| 来源CSDN| 22 条评论| 作者徐汉彬 问底Web服务内存CPU并发徐汉彬 摘要:现在的Web ...

  7. centos文件/文件夹操作-检查磁盘、内存、cpu使用情况-vi操作命令

    Part1:CentOS文件/文件夹操作 1.新建文件夹 即创建目录 mkdir 文件名 新建一个名为test的文件夹在home下 vi source1 mkdir /home/test 注意:当创建 ...

  8. 计算机支持的最大内存与CPU之间的关系

    在使用计算机时,其最大支持的内存是由  操作系统 和 硬件 两方面决定的. 先说一下硬件方面的因素,在计算机中 CPU的地址总线数目 决定了CPU 的 寻址 范围,这种由地址总线对应的地址称作为物理地 ...

  9. 浅析 Pycharm 内存、cpu 占用率

    浅析 Pycharm  内存.cpu 占用率 本机配置参数: ------------------------------------------ Windows 10 专业版   X64 ----- ...

随机推荐

  1. navicat ora-28547:connection to server failed

      navicat ora-28547:connection to server failed CreationTime--2018年8月9日18点47分 Author:Marydon 1.情景还原 ...

  2. 微信QQ的二维码登录原理js代码解析

    这篇文章主要大家详细解析了微信QQ的二维码登录原理js代码,具有一定的参考价值,感兴趣的小伙伴们可以参考一下 在很多地方就是都出现了使用二维码登录,二维码付款,二维码账户等应用(这里的二维码种马,诈骗 ...

  3. python之函数用法xrange()

    # -*- coding: utf-8 -*- #python 27 #xiaodeng #python之函数用法xrange() #xrange() #说明:返回一个生成器 #xrange做循环的性 ...

  4. 头文件dirent.h

    <dirent.h>是POSIX.1标准定义的unix类目录操作的头文件,包含了许多UNIX系统服务的函数原型,例如opendir函数.readdir函数. opendir函数:   DI ...

  5. iOS打包framework - Swift完整项目打包Framework,嵌入OC项目使用

    场景说明: -之前做的App,使用Swift框架语言,混合编程,内含少部分OC代码. -需要App整体功能打包成静态库,完整移植到另一个App使用,该App使用OC. -所以涉及到一个语言互转的处理, ...

  6. Swift内存管理、weak和unowned以及两者区别(如何使用Swift 中的weak与unowned?)

    Swift 是自动管理内存的,这也就是说,我们不再需要操心内存的申请和分配. 当我们通过初始化创建一个对象时,Swift 会替我们管理和分配内存.而释放的原则遵循了自动引用计数 (ARC) 的规则:当 ...

  7. evernote如何笔记共享

    首先将你的笔记共享     访问你的共享笔记地址,就可看到共享笔记的内容了 https://www.evernote.com/pub/用户名/笔记名 https://www.evernote.com/ ...

  8. Linux命令-终止进程命令:pkill

    killall是杀死所有进程,而pkill是按照进程名称杀死进程,可以达到杀死所有进程的目的,因为linux里面同名的进程是分主进程和子进程的. pkill - httpd 按名称强制杀死httpd进 ...

  9. 【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 ...

  10. Android Fragment之间传递List数据

    要说的是在两个Fragment之间传递List数据,比如有个List<User>,以及传递字符串数据,比如testId,该如何从FragmentA传递到FragmentB呢? 下面这个例子 ...