热门标签 | HotTags
当前位置:  开发笔记 > 后端 > 正文

【寻址方式】基地址与偏移地址的详细解释

一、CPU与内存在介绍基地址与偏移地址之前,首先需要知道CPU和内存之间的关系,我们都知道CPU为中央处理器,其为通用处理器࿰

一、CPU与内存

在介绍基地址与偏移地址之前,首先需要知道 CPU 和内存之间的关系,我们都知道 CPU 为中央处理器,其为通用处理器,主要用于处理数据等,当时其内部的存储空间非常有限,因此需要将数据存到专门存储功能的内存当中。

如图所示,地址总线的作用是:CPU 通过地址找到对应的内存的物理数据的传递工具,CPU 和内存之间是通过 20 根地址总线连接的,由于计算机只能处理 0、1 二进制数据,每一条线可以处理 0、1 两种类型数据,所以20根地址总线总共能访问 2^20 = 1048576 个不相同的地址,也就是能搜索 1048576个地址范围内的内存。

一个地址代表一个存储单元,一个存储单元能够存储 1 字节数据,那么也就是 1048576 个地址 能够找到 1048576 个字节数据 = 1M 的数据,也就是说 20位地址总线总共也就能处理1M的内存数据。

 


二、CPU寻址

但是 CPU 的寻址能力只有16位,也就是能够访问到 2^16 = 65536 个地址,远远不够地址总线的 1048576 个地址,CPU 总共有 65536 个地址可以处理,也就是 64K 的内存空间,这样显然是远远不够的。


三、解决方案

假设外部地址共有 1M 的内存,也就是 1048576 个地址空间,利用 CPU 的 16 位的寻址能力去访问,CPU 内存为 64K,就可以将外部内存分为许多快,每一块的内存大小就为 CPU 的内存大小:64K,通过计算 1048576 / 65536 = 16,也就是需要将1M的内存空间分成 16 块 64K 的空间。


四、基地址与偏移地址

根据上面提出的解决方案,可以提出基地址与偏移地址的概念,将 1M 空间分为 16 块,每一块的空间为 64K,那么就用能表示 64K 空间的地址称为基地址,而分为 16 块,基地址在每加 1 的时候,在外部内存的地址就偏移了 16,我们就用能表示这 16 个偏移量的称为偏移地址。

举个栗子:

假设基地址为 ABCD,偏移地址为:0010

此时寻址的计算方法为:

基地址*16 + 偏移地址,也就是 ABCD * 16 + 0010

基地址转换成二进制为0000 1010 1011 1100 1101( 为了满足20位地址总线传输,所以实际传递的数据是把前四位用0补齐,这样刚好20位,就可以在20位地址总线上传输 )

将基地址乘以16就相当于二进制同时左移4位,也就是相当于在原来的二进制后补上四个0即:1010 1011 1100 1101 0000

最后加上偏移地址0010,为1010 1011 1100 1101 0010,这就是最终CPU访问的地址空间,这样就能在20位地址总线上传输并且访问到想要的地址。


推荐阅读
  • 阿,里,云,物,联网,net,core,客户端,czgl,aliiotclient, ... [详细]
  • 本文介绍了解决Netty拆包粘包问题的一种方法——使用特殊结束符。在通讯过程中,客户端和服务器协商定义一个特殊的分隔符号,只要没有发送分隔符号,就代表一条数据没有结束。文章还提供了服务端的示例代码。 ... [详细]
  • sklearn数据集库中的常用数据集类型介绍
    本文介绍了sklearn数据集库中常用的数据集类型,包括玩具数据集和样本生成器。其中详细介绍了波士顿房价数据集,包含了波士顿506处房屋的13种不同特征以及房屋价格,适用于回归任务。 ... [详细]
  • Pycharm编辑器取消双击shift弹出搜索框的方法
    在使用Pycharm编辑器时,双击shift会弹出搜索框界面,导致输入失去焦点,给用户带来不便。本文介绍了取消双击shift弹出搜索框的方法:在Pycharm中双击shift,输入registry并回车,找到“ide.suppress.double.click.handler”并勾选后,关闭即可解决该问题。通过这个方法,你再也不会被shift问题困扰了。 ... [详细]
  • 本文介绍了一些好用的搜索引擎的替代品,包括网盘搜索工具、百度网盘搜索引擎等。同时还介绍了一些笑话大全、GIF笑话图片、动态图等资源的搜索引擎。此外,还推荐了一些迅雷快传搜索和360云盘资源搜索的网盘搜索引擎。 ... [详细]
  • d3dx9_26.dll极品飞车9修复工具下载及修复教程
    本文介绍了d3dx9_26.dll文件的修复工具下载和修复教程,解释了该dll文件的作用和安装方法,同时提供了其他dll文件下载安装的方法。文章涵盖了3d、windows、p2p、dll、visual studio等知识点,并由未来可期1212投稿。希望该技术和经验能帮到你解决dll文件相关技术问题。 ... [详细]
  • 【MicroServices】【Arduino】装修甲醛检测,ArduinoDart甲醛、PM2.5、温湿度、光照传感器等,数据记录于SD卡,Python数据显示,UI5前台,微服务后台……
    这篇文章介绍了一个基于Arduino的装修甲醛检测项目,使用了ArduinoDart甲醛、PM2.5、温湿度、光照传感器等硬件,并将数据记录于SD卡,使用Python进行数据显示,使用UI5进行前台设计,使用微服务进行后台开发。该项目还在不断更新中,有兴趣的可以关注作者的博客和GitHub。 ... [详细]
  • 本文详细介绍了Java中vector的使用方法和相关知识,包括vector类的功能、构造方法和使用注意事项。通过使用vector类,可以方便地实现动态数组的功能,并且可以随意插入不同类型的对象,进行查找、插入和删除操作。这篇文章对于需要频繁进行查找、插入和删除操作的情况下,使用vector类是一个很好的选择。 ... [详细]
  • 本文介绍了在Vue项目中如何结合Element UI解决连续上传多张图片及图片编辑的问题。作者强调了在编码前要明确需求和所需要的结果,并详细描述了自己的代码实现过程。 ... [详细]
  • 如何在服务器主机上实现文件共享的方法和工具
    本文介绍了在服务器主机上实现文件共享的方法和工具,包括Linux主机和Windows主机的文件传输方式,Web运维和FTP/SFTP客户端运维两种方式,以及使用WinSCP工具将文件上传至Linux云服务器的操作方法。此外,还介绍了在迁移过程中需要安装迁移Agent并输入目的端服务器所在华为云的AK/SK,以及主机迁移服务会收集的源端服务器信息。 ... [详细]
  • 本文介绍了如何使用python从列表中删除所有的零,并将结果以列表形式输出,同时提供了示例格式。 ... [详细]
  • 索引库类似于查字典的检索表或图书馆的书目检索,是搜索引擎将抓取的网页放入的地方。索引库通过词语来分类,利用固定数量的词语进行分类,方便搜索引擎匹配用户查询的词语。本文介绍了索引库的分类方式及其好处。 ... [详细]
  • 本文介绍了在使用Python中的aiohttp模块模拟服务器时出现的连接失败问题,并提供了相应的解决方法。文章中详细说明了出错的代码以及相关的软件版本和环境信息,同时也提到了相关的警告信息和函数的替代方案。通过阅读本文,读者可以了解到如何解决Python连接服务器失败的问题,并对aiohttp模块有更深入的了解。 ... [详细]
  • github上_idea上传本地项目到github上(图解)
    本文由编程笔记#小编为大家整理,主要介绍了idea上传本地项目到github上(图解)相关的知识,希望对你有一定的参考价值。 ... [详细]
  • 006_Redis的List数据类型
    1.List类型是一个链表结构的集合,主要功能有push,pop,获取元素等。List类型是一个双端链表的结构,我们可以通过相关操作进行集合的头部或者尾部添加删除元素,List的设 ... [详细]
author-avatar
寒时凝结公寓_264
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有