热门标签 | 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位地址总线上传输并且访问到想要的地址。


推荐阅读
  • 掌握远程执行Linux脚本和命令的技巧
    本文将详细介绍如何利用Python的Paramiko库实现远程执行Linux脚本和命令,帮助读者快速掌握这一实用技能。通过具体的示例和详尽的解释,让初学者也能轻松上手。 ... [详细]
  • 本文将介绍如何编写一些有趣的VBScript脚本,这些脚本可以在朋友之间进行无害的恶作剧。通过简单的代码示例,帮助您了解VBScript的基本语法和功能。 ... [详细]
  • 近期遇到电脑网络不稳定和游戏时频繁重启的问题,寻求专业建议。网络环境为ADSL调制解调器通过路由器共享给两台电脑使用,怀疑存在ARP攻击或硬件配置问题。希望获得详细的故障排查和解决方案。 ... [详细]
  • 优化联通光猫DNS服务器设置
    本文详细介绍了如何为联通光猫配置DNS服务器地址,以提高网络解析效率和访问体验。通过智能线路解析功能,域名解析可以根据访问者的IP来源和类型进行差异化处理,从而实现更优的网络性能。 ... [详细]
  • PHP 5.2.5 安装与配置指南
    本文详细介绍了 PHP 5.2.5 的安装和配置步骤,帮助开发者解决常见的环境配置问题,特别是上传图片时遇到的错误。通过本教程,您可以顺利搭建并优化 PHP 运行环境。 ... [详细]
  • 如何配置Unturned服务器及其消息设置
    本文详细介绍了Unturned服务器的配置方法和消息设置技巧,帮助用户了解并优化服务器管理。同时,提供了关于云服务资源操作记录、远程登录设置以及文件传输的相关补充信息。 ... [详细]
  • 网络攻防实战:从HTTP到HTTPS的演变
    本文通过一系列日记记录了从发现漏洞到逐步加强安全措施的过程,探讨了如何应对网络攻击并最终实现全面的安全防护。 ... [详细]
  • 邮件(带附件,模拟文件上传,跨服务器)发送核心代码1.测试邮件发送附件接口***测试邮件发送附件*@parammultipartFile*@return*@RequestMappi ... [详细]
  • Android LED 数字字体的应用与实现
    本文介绍了一种适用于 Android 应用的 LED 数字字体(digital font),并详细描述了其在 UI 设计中的应用场景及其实现方法。这种字体常用于视频、广告倒计时等场景,能够增强视觉效果。 ... [详细]
  • 本文深入探讨了Linux系统中网卡绑定(bonding)的七种工作模式。网卡绑定技术通过将多个物理网卡组合成一个逻辑网卡,实现网络冗余、带宽聚合和负载均衡,在生产环境中广泛应用。文章详细介绍了每种模式的特点、适用场景及配置方法。 ... [详细]
  • 本文将详细介绍在Windows 7环境下,检查U盘启动盘是否制作成功的多种方法,包括通过BIOS设置和使用模拟启动工具。 ... [详细]
  • 深入理解 H5C3 和 JavaScript 核心问题
    本文详细探讨了 H5C3 和 JavaScript 中的一些核心编程问题,通过实例解析和代码示例,帮助开发者更好地理解和应用这些技术。 ... [详细]
  • 本文详细介绍了macOS系统的核心组件,包括如何管理其安全特性——系统完整性保护(SIP),并探讨了不同版本的更新亮点。对于使用macOS系统的用户来说,了解这些信息有助于更好地管理和优化系统性能。 ... [详细]
  • 使用Vultr云服务器和Namesilo域名搭建个人网站
    本文详细介绍了如何通过Vultr云服务器和Namesilo域名搭建一个功能齐全的个人网站,包括购买、配置服务器以及绑定域名的具体步骤。文章还提供了详细的命令行操作指南,帮助读者顺利完成建站过程。 ... [详细]
  • 百度服务再次遭遇技术问题,疑似DNS解析故障
    近日晚间,百度多项在线服务出现加载异常,包括移动端搜索在内的多个功能受到影响。初步迹象表明,问题可能与DNS服务器解析有关。 ... [详细]
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社区 版权所有