按字编址与按字节编址


要清楚按字编址和按字节编址的区别,先要知道 比特(bit),字节(byte),字(word) 之间的关系。

在计算机系统中,总线以固定大小的一块数据进行传输,这一块的数据也称为字(word),如今的计算机一般是32位和64位的,这里的位数则是指总线进行数据传输时一块数据的内存大小,也就是前面字的大小。

32位的计算机中:32位(bit)=4字节(byte)=1字(word)
64位的计算机中:64位(bit)=8字节(byte)=1字(word)

由此可见,在不同位数的计算机中,一个字的大小也是不同的,所以一个字等于多少字节,是多少位,与计算机的系统硬件有关,不可以错误的对一个字是几字节下固定的判断。

关于字节,也叫做byte,是用于计算机存储容量的一种单位(b代表位bit,B代表字节byte),也用来表示计算机编程语言中数据类型的单位,例如在Java中:

  • 整数类型:
    byte:1字节
    short:2字节
    int:4字节
    long:8字节
  • 浮点类型:
    float:4字节
    double:8字节
  • 字符型:
    char:2字节
  • 布尔型:
    boolean:1字节

在不同编码方式中,英文字符和中文汉字所占的字节也不同:
ASCII:英文字符(1字节)、中文汉字(2字节)
UTF-8:英文字符(1字节)、中文汉字(3字节)
Unicode:英文字符(2字节)、中文汉字(2字节)

1byte=8bit,1024byte=1KB,1024KB=1MB,1024MB=1GB,1024GB=1TB
一般在做题过程中,单位的转换以二进制表示:1KB=2的10次方B,然后依次类推,1MB=2的20次方B…

在计算机组成原理存储器章节中讲到,一个双稳态半导体电路或一个CMOS晶体管或磁性材料的存储元,均可以存储一位二进制代码。这个二进制代码位,是存储器中最小的存储单位,称为存储位元。由若干个存储位元组成一个存储单元,然后再由许多存储单元组成一个存储器。

存放一个机器字的存储单元,通常称为字存储单元,相应的单元地址叫字地址
存放一个字节的存储单元,称为字节存储单元,相应的地址称为字节地址
如果计算机中可编程的最小单位是字存储单元,则该计算机称为按字寻址的计算机
如果计算机中可编程的最小单位是字节,则该计算机称为按字节寻址的计算机
一个机器字可以包含数个字节,所以一个存储单元也可以包含数个能够单独编制的字节地址。

例如,一个16位二进制的字存储单元可存放两个字节,可以按字编址,也可以按字节编址。当用字节编址时,16位的存储单元占两个字节地址。


例题

例题1.某存储器按字节编址,容量为1MB,cache为256B,块大小为4个字,一个字为4个字节。
(1)cache地址为几位?有多少块?
(2)主存地址为几位?有多少块?

例题中又出现了另外的一个单位:块
说到块,就不得不提到cache高速缓冲存储器,cache的引入也是为了解决CPU与主存之间速度的不匹配问题,CPU访问数据的速度远大于主存。cache与主存之间数据交换以块为单位,CPU与cache之间的数据交换以字为单位。一个块由若干个字组成,是定长的。当CPU读取内存中的一个字时,便发出此字的内存地址到cache和主存中,块的大小要通过实验的方式来决定。

这里说一下程序访问的局部性原理:

(1)程序执行时,除了少部分的转移和过程调用指令外,在大多数情况下仍然是顺序执行的。
(2)过程调用将会使程序的执行轨迹由一部分区域转移至另一部分区域,但是经研究发现,过程调用的深度在大多数情况下小于等于5。
(3)程序中存在许多循环结构,这些虽然只由少数指令构成,但是它们将多次被执行。
(4)程序中还包括许多对数据结构的处理,它们往往局限于很少的范围。

局部性原理体现的方面:

  1. 时间局部性:一条指令被执行了,则不久后可能再次被执行。
  2. 空间局部性:某一存储单元被调用,在一定时间内,与它相邻的单元可能被使用。

存储系统中专Cache-主存层次属和主存-辅存层次均采用了程序访问的局部性原理。
在计算机操作系统中,非连续分配的基本分页存储管理中,快表的引入就是以局部性原理为原理支持。页表放在内存中,先从内存中访问页表,再根据页表访问内存中的物理地址,把页号,页表项放入高速cache中,这样就形成了快表(TLB)。

回到正题,块的大小,先把主存和缓存按照大小相等的块进行划分。主存分成M个块,缓存分成C个块,其中M远大于C

具体的解答过程:
某存储器按字节编址,容量为1MB,cache为256B,块大小为4个字,一个字为4个字节。
(1)cache地址为几位?有多少块?
(2)主存地址为几位?有多少块?
解:
存储器即主存,容量为1MB=2的20次方B,块大小为4个字,一个字4个字节。一个块=16个字节=2的4次方个字节。

按字节编址,主存容量为2的20次方个字节,即主存地址的位数为20
2的20次方/2的4次方=2的16次方=64K(块数=主存的字节数/一个块的字节数),即主存有64K个块

按字节编址,cache容量为256B=2的8次方个字节,即cache的位数为8
2的8次方/2的4次方=2的4次方=16,即cache有16个块

总结:

  1. 先要明白块的意义:cache与主存之间数据交换的单位
  2. 关于二进制数的转换,B、KB、MB…
  3. 明确cache的工作原理

例题2. 某存储器按字编址,容量位为2MB,cache为512B,块大小为8个字,一个字为4个字节,n,m,b,c分别为多少位?


存储器容量2MB=2的21次方B
按字编址,1字=4B=2的2次方B,所以存储器的位数=2的21次方B/2的2次方B=2的19次方B,即n=19
存储器的块内地址与缓存的块内地址相等,就是求一个块的大小。
记住cache与主存之间数据交换的单位就是块,就明白了为什么存储器的块内地址与缓存的块内地址相等
1块=8字=2的3次方,即块内地址b=3
所以求得:m=n-b=19-3=16
缓存cache的容量为512B,512B/4B=128=2的7次方,即b+c=7
求得c=7-b=4

按字编址与按字节编址相关推荐

  1. 按字节编址与按字编址

    我们先从一道简单的问题说起! 设有一个1MB容量的存储器,字长32位,问:按字节编址,字编址的寻址范围以及各自的寻址范围大小? 如果按字节编址,则 1MB = 2^20B (ps:1MB=1024kb ...

  2. 关于按字寻址和按字节寻址的理解

    设有一个1MB容量的存储器,字长32位,问:按字节编址,字编址的寻址范围以及各自的寻址范围大小?       如果按字节编址,则                       1MB = 2^20B  ...

  3. 计组 | 字长大杂烩——字、位、字节等基本概念、按字寻址与按字节寻址

    一.基本概念 助记一下: 位b:一粒花生米,每一粒=一个二进制位 0/1 一个字节B:拥有8粒花生米的一勺花生米 字:我(CPU)一次能吃下(能处理)一勺或几勺花生米(一个字节或几个字节) 字长:我( ...

  4. 假定主存地址位数为32位,按字节编址,主存和cache之间采用直接映射方式,主存块大小为1个字,每字32位,写操作时采用直写(Write Throght)方式,则能存放32K字数据的cache的总容量

    5单选(1分) 假定主存地址位数为32位,按字节编址,主存和cache之间采用直接映射方式,主存块大小为1个字,每字32位,写操作时采用直写(Write Throght)方式,则能存放32K字数据的c ...

  5. 字编址与字节编址的计算方法

    对于字节编址的计算机,以字节数来表示存储容量:对于字编址的计算机,以字数与其字长的乘积来表示存储容量.例如,某计算机的主存容量为64K×16,表示它有64K个存储单元,每个存储单元的字长为16位,若改 ...

  6. 谈字节编址字访问的地址信息浪费问题

    谈字节编址字访问的地址信息浪费问题 有个问题一直困扰着我,以32位ARM微处理器来说,他是按字节编址(8bits)然后按字访问(32bits)的,可是为什么会造成地址信息的浪费?为什么地址的最低两位始 ...

  7. 按字/字节编址与按字/字节访问的理解

    纯字节编址的计算机如何按字(16位)访问? 我的理解:不存在纯字节编址,因为存储字长为16位,但是却能按字节访问,可见必然是位扩展过的芯片,这样靠连线方式的选择,就能既按字节访问,又按字访问 纯字编址 ...

  8. 按字节编址,一字节等于多少比特?

    主存容量为16M字节,按字节编址,最少要多少位? 解析: 先转换成b 16MB=161024KB=(161024)1024B=16777216 B 因为: 10241024=2^(10+10); 16 ...

  9. 按字节编址,求地址间的存储容量方法

    例题: 内存按字节编址,从B3000H到DABFFH的区域,其存储容量为() A.123KB B.159KB C.163KB D.194KB 计算方法步骤: 说明:按字节编址每一个存储单元可以存放8b ...

最新文章

  1. oracle中的exists 和not exists 用法详解
  2. 面试官:聊聊微信和淘宝扫码登录背后的实现原理?
  3. Web Socket 性能对比——Spring Boot vs Tomcat vs Netty
  4. Python爬虫开发:中文字符编码问题quote解决
  5. 并行和并发有什么区别?
  6. 手游server之数据IO进化
  7. 电子工程可以报考二建_二建报考要求是工程类专业怎么办?非工程类专业可以报名吗?...
  8. android 源码打patch
  9. Unity3D 资源加载 Resources.Load
  10. 仿宋小二在html中怎么设置,HTML简短设置字体
  11. 页面滚动到指定位置的方法
  12. 短视频SDK接入(2)---环境搭建
  13. 差异化地推手段,让营销效果翻十倍!
  14. 商汤科技徐立:AI 将在10 年内创造一个印度和中国的总产值
  15. 机器学习之选择小样本交叉验证训练模型并使用精确率、召回率、F1分数和AUC值、画出ROC曲线评估
  16. Android lunch分析以及产品分支构建
  17. POI使用详解 java 复杂excel导出
  18. Hive第二代客户端远程连接
  19. ZZULIOJ 2505: 建国的嘱咐(本场签到题)
  20. 【动画演示软件】Focusky教程 | Focusky中超链接基础运用

热门文章

  1. Unity开门效果——铰链关节_苏祁风_新浪博客
  2. C语言符号-取余\取模运算
  3. ARMv8之arm64架构汇编知识
  4. 过桥问题(Java递归)
  5. 评选你最喜欢的阿加莎.克里斯蒂的作品
  6. 清理 C 盘空间最简单的方法
  7. 数字图像处理 图像对比度增强算法概览
  8. Vue项目实战 —— 后台管理系统( pc端 ) 第三篇
  9. python最小二乘法代码
  10. Tomcat的介绍与使用