当前位置: 首页 > news >正文

C语言内存编址

文章目录

  • 一、总线
    • 1.总线的含义
    • 2.总线的分类
      • **地址总线**
      • **数据总线**
      • **控制总线**
  • 二、内存编址
    • 2.1 内存按什么进行编址?
    • 2.2 内存编址的意义?

一、总线

1.总线的含义

总线是计算机各种功能部件之间传送信息的公共通信干线,它是由导线组成的传输线束。总线是一种内部结构,它是CPU、内存、输入、输出设备传递信息的公共通道。主机的各个部件通过总线相连接,外部设备通过相应的接口电路再与总线相连接,从而形成了计算机硬件系统。在计算机系统中,各个部件之间传送信息的公共通路叫总线

总线的特点[引用]:
共享性
总线是供所有部件通信共享的,任何两个部件之间的数据传输都是通过共享的公共总线进行的。
独占性
当一个部件占用总线与另一个部件进行数据通信时,其他部件就不能再占用总线。

2.总线的分类

按总线上传输信号的不同,总线可分为:[参考]:

地址总线

地址总线是用于传递地址信息的总线。CPU(中央处理器)是通过地址总线来指定存储单元的,而内存是通过地址来管理的。CPU想从内存中的某个地址空间上存储一个数据,CPU就需要在地址总线上输出这个存储单元的地址。地址总线的宽度(地址总线根数)决定了CPU的寻址能力,也就是CPU能达到的最大地址范围。如果CPU有32根地址总线,每根地址总线上只能传输0(低电平)和1(高电平)两种电信号(计算机中数据是以二进制的形式存储),所以32根地址总线总共能传输232种信息,即CPU的寻址能力能达到232,CPU可以对232个存储单元进行寻址。所以如果一个CPU有N根地址线,那么就说这个CPU的地址总线的宽度就为N,CPU的寻址范围为0~2N,即CPU最多可以寻找232个内存单元[参考]。

数据总线

CPU与内存或与其他器件之间的数据传输是通过数据总线来进行的。数据总线的宽度(数据总线的根数)决定了CPU与外界数据的传输速度。例如:8根数据总线一次即可传送8位(bit)二进制数据(一个字节);16根数据总线一次可传送16位二进制数据(两个字节)。

如8位数据总线:
CPU分两次传送数据89D8,第一次传送D8,第二次传送89:(89D8是16进制数,转换为二进制数为1000100100011011)

16位数据总线一次即可传送完上面的数据89D8:

控制总线

CPU对外部器件的控制是通过控制总线进行的。控制总线用于传输控制信号和指令信息。它负责将指令和控制信号从CPU发送到各个计算机组件,协调和控制计算机的操作。这里的控制总线是一些不同控制线的集合。有多少根控制总线,就意味着CPU提供了对外部器件的多少控制。如CPU对存储器的读、写控制信号等。

🎯总结三种总线的功能:

地址总线:用来传递地址信息
数据总线:用来传递数据信息
控制总线:用来发送各种控制信号

二、内存编址

2.1 内存按什么进行编址?

如何理解计算机中内存是按照字节来进行编址的这句话[引用]?
内存是按字节进行编址的,每个字节的存储单元可以存放8bit的数据。我们也知道CPU通过内存地址获取一条指令和数据,而他们存在存储单元当中。我们的数据和指令可能刚好是8bit(1字节),也可能小于8位,顶多浪费几位(或许按照字节编址是为了节省内存空间考虑)。但当数据或指令的长度大于8bit,我们就需要使用多个存储单元来存放数据或指令。读取数据的时候,一次就可以读取多个内存单元。

2.2 内存编址的意义?

CPU访问内存中的某个字节空间,必须知道这个空间在内存的什么位置,而内存中的空间很大,所以需要给内存空间进行编址(就如同宿舍很多,需要给宿舍编号一样)。

http://www.jsqmd.com/news/1120955/

相关文章:

  • Ubuntu遭DDoS攻击事件剖析:漏洞修复受阻与基础设施韧性思考
  • Mermaid Live Editor:告别拖拽,用代码思维重塑图表创作体验
  • HsMod:基于BepInEx的炉石传说终极增强插件完全指南
  • Runbook:革命性Ruby自动化框架 - 10分钟快速上手指南
  • ClusterIP、NodePort、LoadBalancer 和 ExternalName
  • StatefulLayout核心API解析:showLoading/showEmpty/showError等方法全攻略
  • Turnilo性能优化:提升大数据集探索效率的8个方法
  • 终极Mac清理工具Mole:用一行命令释放数十GB存储空间
  • Windows Research Kernel (WRK) 缓存管理器分析:Windows文件系统性能优化的秘密
  • LV30条码扫描器与PIC18F47Q10微控制器硬件设计与优化
  • Gradle Docker插件实战:从零开始构建Java应用Docker镜像
  • 如何让AI告别平庸设计:Taste-Skill完整使用指南与实战技巧
  • 静态网站SEO检查:Instatic内容分析与优化建议终极指南
  • NCSN预训练模型使用指南:快速生成MNIST/CelebA/CIFAR-10样本
  • Context安全指南:保护你的MCP服务器认证与数据隐私
  • VINS-Mono:如何快速构建高精度单目视觉惯性里程计系统
  • HsMod深度解析:炉石传说终极游戏体验增强框架完全指南
  • 3PEAK思瑞浦 LM2903-VS1R MSOP8 比较器
  • 从零构建CobaltStrike流量解密工具:实战AES与RSA密钥提取
  • 静态网站评论系统集成:Instatic与Commento、Utterances全攻略
  • Mermaid在线编辑器:让技术图表从负担变为乐趣的创作工具
  • Boss Show Time招聘神器:四大平台时间魔法,让你不再错过最新机会
  • 自动扶梯主传动轴装配图与零件图绘制要点解析
  • 【免费下载】 E-Hentai Downloader 安装和配置指南
  • 计算机Java毕设实战-基于 SpringBoot 的医疗器械设备台账管理系统的设计与实现 医院医疗器械采购入库运维管理系统【完整源码+LW+部署说明+演示视频,全bao一条龙等】
  • 3分钟搞定分布式AI集群:用闲置设备打造你的专属AI算力工厂
  • 【Autosar从入门到精通到进阶实战篇】03 RTE配置实战——如何让你的SWC“活”起来(含多核通信避坑)
  • Mermaid Live Editor终极指南:用代码绘制专业图表的完整教程
  • 为什么你用Chunking却仍丢失关键条款?ChatGPT长文档处理的3层语义锚点分段法(附真实法律文书对比测试数据)
  • StudioPlugins代码美化:RainbowBrackets彩虹括号插件提升代码可读性