zoukankan      html  css  js  c++  java
  • IO端口和IO内存

    为什么会有IO端口和IO内存

      这主要原因是因为处理器的架构不同,这里我们使用arm来代表典型的使用IO内存架构,intel 80x86代表典型的使用IO端口架构。简单来说arm把所有寄存器(包括外部设备的)、内存等所有需要寻址才能访问的东东全部丢到了一个地址空间中,而80x86则是分为了两个地址空间,一个专门给内存用的内存地址空间,一个专门给寄存器(包括外部的寄存器)使用的IO地址空间。

     

    IO内存

      我们先看看arm的地址空间分布图

      

      很清楚的可以看出,在ARM架构的地址空间中,即包含有内部的存储器地址空间,也包含有外部的存储器地址空间,其实简单的一句话就是:ARM把外部内存、外部设备的寄存器、内部的寄存器和内存全部都放到了一个内存地址空间中。在这里0~4G的内存地址空间包括了片内Flash存储器空间,片内静态RAM空间,外部存储器空间等等。举个例子,如果ARM有4G的地址空间,并且外部连接有4G的内存,实际上分配地址空间时ARM是没办法完全把外部全部的4G内存全部映射到ARM的地址空间的,因为ARM还需要把一些地址分给寄存器和其他设备。而x86架构就可以,请往下看。

    IO端口

      在上面的例子中为什么X86即使只有4G的地址空间也能够完全把外部内存映射到自己的地址空间中而不需要向寄存器分配地址,原因就在于X86架构不是像ARM一样统一编址的,它实际上有两个地址空间,一个专门用于外部内存映射的,而另一个用于寄存器和外部设备的称为IO地址空间。

  • 相关阅读:
    存储过程参数不能使用函数
    .gitignore git已跟踪文件不生效
    Css选择器-层次选择器(关系选择器)
    Mysql自定义变量的作用
    jQuery 鼠标滑过Div变色
    DataTable导出excel 设置单元格格式
    layui table 详细讲解
    npm 常用命令详解
    SQL Server 2008下轻松调试T-SQL语句和存储过程
    帆软报表常用功能
  • 原文地址:https://www.cnblogs.com/tolimit/p/4224034.html
Copyright © 2011-2022 走看看