独立编址,统一编址,IO端口,IO内存,冯·诺伊曼,哈佛结构

原创 2012年08月21日 13:58:01

独立编址,统一编址: I/O地址空间与内存地址空间编址方式是否统一?例如51为统一编址,I/O和存储器总计64K地址空间;X86为独立编址,分为I/O地址空间和存储器地址空间。 IO空间,内存空间

X86:支持内存空间,IO空间,独立编址。 ARM,MIPS,PowerPC只支持内存空间,即统一编址。

IO端口和IO内存:对于X86系统区别很大,例如,网卡接口,可以连接在IO的这一组地址总线上,也可以连接在内存的这一组地址总线上,就可分别出现IO端口和IO内存的区别。

IO端口:当一个寄存器或内存位于IO空间时,称之为IO端口。

IO端口的操作:申请,访问,释放

申请:struct resource * __request_region(struct resource *parent, resource_size_t start, resource_size_t n, const char *name, int flags)

申请完以后,可以在/proc/ioports下面看到端口的占用情况。

访问:static inline int inb(unsigned long i) //读字节端口(8位) static inline void outb(char c, unsigned long i)//写字节端口(8位)其余访问16位,32位IO端口的函数为:inw,outw,inl,outl。

IO内存:当一个寄存器或内存位于内存空间时,称之为IO内存。

IO内存的操作:申请,映射,访问,释放

申请:request_mem_region(start, n, name)//start:申请的起始地址,n:申请的长度,name:申请使用区域的名字。

申请完以后,同样可以在/proc/iomem中查看iomem的使用情况。

映射:由于linux系统中不能直接使用物理地址,必须使用虚拟虚拟地址,所以对IO内存的操作,必须有一个映射的过程。

映射函数:ioremap(cookie, size)//cookie:物理地址,size :映射大小。

访问:访问IO内存,最好不要直接用*addr直接赋值的方式来完成,在某些情况下易出错,推荐使用内核已经提供的函数来完成。内核提供的函数有:ioread8,iowrite8,ioread16,iowrite16,ioread32,iowrite32等函数。而老版本的内核中也提供了例如:readb,writeb,readw,writew,readl,writel等函数

释放:iounmap()和release_mem_region()

冯·诺伊曼,哈佛结构: 

        哈佛结构是一种将程序指令存储和数据存储分开的存储器结构。中央处理器首先到程序指令存储器中读取程序指令内容,解码后得到数据地址,再到相应的数据存储器中读取数据,并进行下一步的操作(通常是执行)。程序指令存储和数据存储分开,可以使指令和数据有不同的数据宽度,如Microchip公司的 PIC16芯片的程序指令是14位宽度,而数据是8位宽度。目前使用哈佛结构的中央处理器和微控制器有很多,除了上面提到的Microchip公司的PIC系列芯片,还有摩托罗拉公司的MC68系列、Zilog公司的Z8系列、ATMEL公司的AVR系列和安谋公司的ARM9、ARM10和ARM11,51单片机也属于哈佛结构。

       冯·诺伊曼结构也称普林斯顿结构,是一种将程序指令存储器和数据存储器合并在一起的存储器结构。程序指令存储地址和数据存储地址指向同一个存储器的不同物理位置,因此程序指令和数据的宽度相同,如英特尔公司的8086中央处理器的程序指令和数据都是16位宽。目前使用冯·诺伊曼结构的中央处理器和微控制器有很多。除了上面提到的英特尔公司的8086,英特尔公司的其他中央处理器、安谋公司的ARM7、MIPS公司的MIPS处理器也采用了冯·诺伊曼结构。

理解“统一编址,独立编址,IO端口IO内存”

引言:         从CPU连出来一把线:数据总线、地址总线、控制总线,这把线上挂着N个接口,有相同的,有不同的,名字叫做存储器接口、中断控制接口、DMA接口、并行接口、串行接口、AD接口……一个...
  • liuzijiang1123
  • liuzijiang1123
  • 2015年03月24日 20:09
  • 916

理解“统一编址与独立编址”,“I/O端口与I/O内

从CPU连出来一把线:数据总线、地址总线、控制总线,这把线上挂着N个接口,有相同的,有不同的,名字叫做存储器接口、中断控制接口、DMA接口、并行接口、串行接口、AD接口……一个设备要想接入,就用自己的...
  • farmwang
  • farmwang
  • 2015年11月28日 22:04
  • 971

统一编址和独立编址

编址方式 1)外设都是通过读写设备上的寄存器来进行的,外设寄存器也称为“I/O端口”,而IO端口有两种编址方式:独立编 址和统一编制。         统一编址:外设接口中的IO寄存器(即IO端口...
  • chunlovenan
  • chunlovenan
  • 2014年03月22日 15:58
  • 1686

统一编址与独立编址

IO 与 内存 统一编址与独立编址
  • QCZTZSWT357
  • QCZTZSWT357
  • 2016年10月27日 23:01
  • 1192

统一编址&独立编址

首先,CPU和内存是通过总线相连的(?为什么CPU要与内存直接相连,而不与硬盘(flash)直接相连,因为内存访问频繁,通过总线直接相连可以实现效率高访问快,缺点则是可拓展性差,资源有限。)    ...
  • BadAyase
  • BadAyase
  • 2016年05月15日 15:06
  • 1490

统一编址和独立编址以及I/O端口与内存

1、编址方式 1)外设都是通过读写设备上的寄存器来进行的,外设寄存器也称为“I/O端口”,而IO端口有两种编址方式:独立编址和统一编址。 统一编址:外设接口中的IO寄存器(即IO端口)与主...
  • bv1315008634
  • bv1315008634
  • 2016年11月23日 20:35
  • 378

BIOS(ROM)和RAM统一编址or独立编址?

计算机启动时,执行的第一条指令的地址是固定的,这个地址是内存地址吗?但内存这时候是没有内容的,bios和内存是统一编址吗? [/quote] 以下只是个人见解,不一定完全准确,只供参考。 1.“...
  • u011839461
  • u011839461
  • 2013年09月29日 09:37
  • 1488

微机原理--第二章(4)8086的存储器编址和I/O编址

1)存储器编址 由于微处理器内部的寄存器和ALU都是16位的,为了方便20位的地址管理,在8086对存储器管理的设计中,采用了分段管理的技术。 采用分段方法进行编址的优点: 减少指令长度,提高指令执行...
  • jxm_96
  • jxm_96
  • 2016年09月25日 13:10
  • 1579

独立编址,统一编址,IO端口,IO内存,冯·诺伊曼,哈佛结构

独立编址,统一编址: I/O地址空间与内存地址空间编址方式是否统一?例如51为统一编址,I/O和存储器总计64K地址空间;X86为独立编址,分为I/O地址空间和存储器地址空间。 IO空间,内存空间 ...
  • caiqi1123
  • caiqi1123
  • 2016年05月26日 09:48
  • 627

统一编址与独立编址 IO端口与IO内存

引言:          从CPU连出来一把线:数据总线、地址总线、控制总线,这把线上挂着N个接口,有相同的,有不同的,名字叫做存储器接口、中断控制接口、DMA接口、并行 接口、串行接口、AD接口„„...
  • jinchijixiaofeng
  • jinchijixiaofeng
  • 2013年05月05日 20:51
  • 454
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:独立编址,统一编址,IO端口,IO内存,冯·诺伊曼,哈佛结构
举报原因:
原因补充:

(最多只允许输入30个字)