主存中存储单元地址的分配
‘壹’ MCS-51单片机内部程序存储器是如何分配的哪些地址用于保留区有何作用
8051片内有4kB的程序存储单元,其地址为0000H—0FFFH,其中一组特殊是0000H—0002H单元,系统复位后,PC为0000H,单片机从0000H单元开始执行程序 ,另一组特殊单元是0003H—002AH,这40个单元各有用途,它们被均匀地分为五段,它们的定义如下:
0003H—000AH 外部中断0中断地址区。
000BH—0012H 定时/计数器0中断地址区。
0013H—001AH 外部中断1中断地址区。
001BH—0022H 定时/计数器1中断地址区。
0023H—002AH 串行中断地址区。
可见以上的40个单元是专门用于存放中断处理程序的地址单元
二、数据存储器
MCS-51内部RAM有128或256个字节的用户数据存储(不同的型号有分别),它们是用于存放执行的中间结果和过程数据的。MCS-51的数据存储器均可读写,部分单元还可以位寻址。
1、 8051内部RAM共有256个单元,这256个单元共分为两部分。其一是地址从00H—7FH单元(共128个字节)为用户数据RAM。从80H—FFH地址单元(也是128个字节)为特殊寄存器(SFR)单元。从图1中可清楚地看出它们的结构分布。
在00H—1FH共32个单元中被均匀地分为四块,每块包含八个8位寄存器,均以R0—R7来命名,我们常称这些寄存器为通用寄存器。
内部RAM的20H—2FH单元为位寻址区,既可作为一般单元用字节寻址,也可对它们的位进行寻址。位寻址区共有16个字节,128个位,位地址为00H—7FH。。
‘贰’ 计算机的内存中的存储单元的物理地址是怎样排列的
各自排列,但可以映射
通过寻址
方便寻址
‘叁’ 主存中每个存储单元几个字节
一个字节为8位,即1Byte=
8b。
如果是SAM之类的,其上有标识。如
SRAM
芯片6264
的容量为8K×8
bit,其每个存储单元含8b,共有8x1024个存储单元。
Pentium(586)等微处理器构成的计算机,它们的字长是32
位。即4个字节。
现在的64位处理器,字长为64位,即每个存储单元含64b=8Byte,8个字节。
‘肆’ 存储单元的地址的基本定义
单元地址:单元地址简称地址,在存储器中每个存储单元都有唯一的地址编号,称为单元地址。
在计算机中最小的信息单位是bit,也就是一个二进制位,8个bit组成一个Byte,也就是字节。一个存储单元可以存储一个字节,也就是8个二进制位。计算机的存储器容量是以字节为最小单位来计算的,对于一个有128个存储单元的存储器,可以说它的容量为128字节。
(4)主存中存储单元地址的分配扩展阅读:
一般应具有存储数据和读写数据的功能,以8位二进制作为一个存储单元,也就是一个字节。每个单元有一个地址,是一个整数编码,可以表示为二进制整数。
程序中的变量和主存储器的存储单元相对应。变量的名字对应着存储单元的地址,变量内容对应着单元所存储的数据。存储地址一般用十六进制数表示,而每一个存储器地址中又存放着一组二进制(或十六进制)表示的数,通常称为该地址的内容。
‘伍’ cache 可以是看作是主存的延伸,与主存统一编址,接受cpu的访问,但其速度要比主存高得多,这对
cache是高速缓冲存储器存储了频繁访问的主存,直接接受CPU的访问,速度也比主存快?错,错在 并不是所有的数据cache 都比主存快,例如处理器引用某些地址时,先看cache里有没有,他有的化,就直接复制到哪里,速度就提高了,要是没有,一样跟主存一样速度
应该是“接受CPU访问”之前的错了 高速缓存分为多级,有一级缓存,主要用来缓存CPU指令,二级缓存,才是CPU于物理内存之间的缓存,至于三级缓存应该就是二级缓存于内存间的另一个缓存,所以不是统一编址的
传统意义上,我们把memory翻译成内存,这个词在台湾似乎是翻译为记忆体。在pc上一般指的ram。但是在移动设备中还有一个词叫做internal storage,这个词直译就是内存,但跟我们pc时代所说的内存具有完全不同的含义。所以,现在内存确实可以是ram,是内存条,也可能是手机上的flash。在说内存的时候现在倾向于直接使用ram来指代,避免歧义。
概述
存储器分类
存储器的层次结构
主存储器
概述:
半导体芯片简介
随机存取存储器(RAM)
只读存储器(ROM)
存储器与CPU的连接
存储器的校验
汉明码简介:
提高访问速度的措施
高速缓冲存储器
Cache的工作原理:
主存—Cache的地址映射
写操作
Pentium的Cache
辅助存储器
概述
存储器分类
按存储介质分类:
半导体存储器 TTL,MOS
磁表面存储器 磁头,载磁体
磁芯存储器 硬磁材料,环状元件
光盘存储器 激光,磁光材料
按存取方式分类:
1.存取时间与物理地址无关(随机访问)
随机存储器 在程序的执行过程中 读 写
只读存储器 在程序的执行过程中 读
2.存取时间与物理地址有关(串行访问)
顺序存取存储器 磁带
直接存取存储器 磁盘
3.按在计算机中的作用分类
存储器:主存储器,Flash Memory,高速缓冲存储器(Cache),辅助存储器
主存储器:RAM,ROM,
RAM:静态RAM,动态RAM
ROM:MROM,PROM,EPROM,EEPROM
辅助存储器:磁盘,磁带,光盘
存储器的层次结构
存储器三个主要特性的关系:
速度:快--慢
容量:小--大
价格:高--低
缓存—主存层次和主存—辅助层次
缓存—主存:主存储器地址 注重速度 由硬件来处理
主存—辅存:虚拟存储器 注重容量 由软硬件相结合
程序的局部性原理:程序在执行时呈现出局部规律,即在一段时间内,整个程序的执行仅限于程序中的某一部分。相应的,执行所访问的存储空间也局限于某个内存区域。
主存储器
概述:
1.主存的基本组成
2.主存和CPU的联系
3.主存中存储单元地址的分配
高位字节 地址为字地址
地址线24根,按字节寻址范围为224224 =16M;
若字长32位,则一个字有4个字节,所以要留2根地址线指出该字中的哪个字节[00,01,10,11],即寻址范围为 224−2=4M224−2=4M;
若字长16位,则一个字有2个字节,所以要留1根地址线指出该字中的哪个字节[0,1],即寻址范围为 224−1=8M224−1=8M;
‘陆’ 内存中,存储单元有多大,是多少位存储单元有地址的关系不是很明白,想了很久,请大神帮忙解决一下
存储单元一般以八个二进制单位也就是一个字节为单位,字节是最小的存储单位。比如说一个八位二进制数11111111是一个字节,也就是一个存储单位。假如你的手机内存是128个字节(BYTE),也就是128B,但是现在一般用兆(M)或者是(G)作为内存。1G=1024M,1M=1024B。肯定是有逻辑地址的,就像你家的家的地址或者是你的座位号一样,不然cpu在读写数据的怎么知道你要的数据在哪里?假如我们把内存128B看成一个容器的话,分分成128层,单位为字节。cpu会有个映射,记得把酒放在第一层,把水放在第二层了,把可乐放在第三层了。然后你要是要喝酒了,就去第一层给你拿,而不会去第二层给你拿。大致意思就是这样。
‘柒’ 内存中的存储单元的地址结构是几维
内存中的存储单元的地址结构是16位。
大部分16位和32位的CPU不允许将字或者长字存储到内存中的任意地址。比如Motorola68000不允许将16位的字存储到奇数地址中,将一个16位的字写到奇数地址将引发异常。
每一个单元的地址称为字节地址,任何相邻两个单元组成一个字地址,按编址原则约定用其中一个较小的地址来表示字地址。一个字由两个字节组成,则低字节对应低地址,高字节对应高地址。
相关应用:
在计算机中,由控制器解释,运算器执行的指令集是一个精心定义的数目十分有限的简单指令集合。一般可以分为四类:
1)、数据移动 (如:将一个数值从存储单元A拷贝到存储单元B)。
2)、数逻运算(如:计算存储单元A与存储单元B之和,结果返回存储单元C)。
3)、 条件验证(如:如果存储单元A内数值为100,则下一条指令地址为存储单元F)。
4)、指令序列改易(如:下一条指令地址为存储单元F)。
‘捌’ 内存中的物理地址是CPU分配吗
内存单元的物理地址是由其所处的地址总线上的位置决定的,机器安装完成后,其物理地址是固定的、不变的,并不是由CPU分配的。
但要操作哪个单元 是由cpu 中的控制器来完成的。
‘玖’ 什么是字块内地址什么是主存块地址什么是缓存块地址什么是组地址
字块内地址: 一个块含有几个字,数据位于第几个字就是字块内地止。
主存块地址:将主存分块存储,位于第几块就是主存块地址。
缓存块地址:将cache分块存储,位于第几块就是主存块地址。
组地址:将cache的块分组,位于第几组就是组地址。
具体关系如图所示:
(9)主存中存储单元地址的分配扩展阅读:
cache(缓存)与主存映射有三种映射:
全相联映射:主存的一块可以映射到cache的任意一行中。
直接相联映射 :根据cache的大小将主存划分为若干个区,每个区中的块与cache中的行一一对应。主存的一块只能存放到cache的某一特定行中。
组相联映射:
1、首先将cache的划分为若干组(U组),每组有V行(称为V路组相联)。
2、主存按每U块划分为一组,每组有U块。
3、主存的第j块按模U映射到cache的第i组中的任意一行。
4、组间直接映射,组内全相联映射
参考资料:网络-块映射策略
‘拾’ 某机字长为32位,其存储容量是64KB,按字编址其寻址范围是多少若主存以字节编址,试画出主存字地址和字
6.某机字长为32位,其存储容量是64KB,按字编址它的寻址范围是多少?若主存以字节编址,试画出主存字地址和字节地址的分配情况。
解:
按字编址的寻址范围如下:
64K=64*1024*8位,所以64KB/32位=(64*1024*8)/32=16*1024=16K
主存字地址和字节地址的分配情况:如图。
位是计算机来中数据的最小单位。计算机采用二进制表示和存储数据,1位即1个二进制数0或者1;字节也是属于数据的单位,与位的换算公式为1字节=8位;一个字等于多少字节是根据字长决定的,当字长为32位时候,则等于的字节是32/8=4个字节(字长即包含的位数),于是上图一个字对应四个字节。;如果字节编址的话则一个字节为一个存储单元,一个存储单元可以存放一个8位二进制数,这个二进制数就是一个存储字。8K个存储单元(地址)中,可以存放8K×8位。这也就是存储容量。拓展:
(1).此题是按照单字编址的,即单字所包含的基本单元的个数作为一个地址单元。单字所包含的基本单元个数即字长.基本单元指的就是位。
此外若
按照字节编址,即字节所包含的基本单元个数作为一个地址单元,则寻址范围为(64*1024*8位)/8位=8K,且表示又8K个存储单元一个字节永远是8位.
计算机按32位字长半字属编址。即半个字所包含的基本单元个数作为一个地址单元,则半字的位数为16位,范围为(64*1024*8位)/16位=32K
计算机按32位字长双字编址。则双字的位数为64位,范围为(64*1024*8位)/64位=8K
(2).地址线24根,如果地址线有24根,并且每根地址线有0、1两位,我们可以从000…000(24位)一直到111…111(24位)。
按字节寻址范围为=16M,这些地址表示存储单元的位置,所以存储单元也有16M个;
若字长32位,则一个字有4个字节,所以要留2根地址线指出该字中的哪个字节[00,01,10,11],即寻址范围为=4M;
若字长16位,则一个字有2个字节,所以要留1根地址线指出该字中的哪个字节[0,1],即寻址范围为=8M;