我要投搞

标签云

收藏小站

爱尚经典语录、名言、句子、散文、日志、唯美图片

当前位置:六合特肖 > 访问局部性 >

存储器与IO设备

归档日期:06-27       文本归类:访问局部性      文章编辑:爱尚语录

  前一篇文章介绍了冯诺依曼体系结构的计算机的基本工作原理,其中主要介绍了CPU的结构和工作原理。这一篇主要来介绍存储区,总线,以及IO设备等其他几大组件,来了解整个计算机是如何工作的。 这些东西都是看得见摸得着的硬件,平时我们买电脑时最关注的就是CPU的速度,内存的大小,主板芯片等等的参数。

  前面我们以一个简单通用的计算机模型来介绍了CPU的工作方式,CPU执行指令,而存储器为CPU提供指令和数据。 在这个简单的模型中,存储器是一个线性的字节数组。CPU可以在一个常数的时间内访问每个存储器的位置,虽然这个模型是有效的,但是并不能完全反应现代计算机实际的工作方式。

  在前面介绍中,我们一直把存储器等同于了内存,但是实际上在现代计算机中,存储器系统是一个具有不同容量,不同访问速度的存储设备的层次结构。整个存储器系统中包括了寄存器、Cache、内部存储器、外部存储。下图展示了一个计算机存储系统的层次图。层次越高速度越快,但是价格越高,而层次越低,速度越慢,价格越低。

  相对于CPU来说,存储器的速度是相对比较慢的。无论CPU如何发展,速度多块,对于计算机来说CPU总是一个稀缺的资源,所以我们应该最大程度的去利用CPU。其面我们提到过CPU周期,一个CPU周期是取1条指令的最短的时间。由此可见,CPU周期在很大程度上决定了计算机的整体性能。你想想如果当CPU去取一条指令需要2s,而执行一个指令只需要2ms,对于计算机来说性能是多么大的损失。所以存储器的速度对于计算机的速度影响是很大的。

  对于我们来说,总是希望存储器的速度能和CPU一样或尽量的块,这样一个CPU周期需要的时钟周期就越少。但是现实是,这样的计算机可能相当的昂贵。所以在计算机的存储系统中,采用了一种分层的结构。速度越快的存储器容量越小,这样就能做到在性能和价格之间的一个很好的平衡。

  计算机的发展离不开存储器的发展,早起的计算机没用硬盘,只有几千字节的RAM可用。而我们现在4G,8G的内存已经随处可见,1T的大硬盘以及上百G的固态硬盘,而价格也比10年,20年前便宜的很多很多。所以我先大概了解下各种存储技术。目前存储技术大致分为SRAM存储器、DRAM存储器、ROM存储器和磁盘。

  在上一篇文章的图中我们有看得CPU内部有很多寄存器,而上一张图也显示,寄存器在存储层次结构的顶端。它也叫触发器,它往往和CPU同时钟频率,所以速度非常快。但是一个寄存器需要20多个晶体管,所以如果大量使用,CPU的体积会非常大。所以在CPU中只有少量的寄存器。而每个寄存器的大小都是8-64字节。

  静态RAM: SRAM将每个位存储在一个双稳态的存储单元中,每个存储单元是用一个六晶体管电路实现的。它的特点是可以无限期(只要有电)的保持在两个稳定状态中的一个(正好可以存放0或1),而其他任何状态都是不稳定的会马上切换到这两个状态中的一个。

  动态RAM: DRAM是利用电容内储存电荷的多寡来代表一个二进制位元(bit)是1还是0,每一bit由一个晶体管和电容组成。由于在现实中电容会有漏电的现象,导致电位差不足而使记忆消失,因此除非电容经常周期性地充电,否则无法确保记忆长存。由于这种需要定时刷新的特性,因此被称为“动态”记忆体。

  SRAM相比DRAM速度更快功耗更低,而由于结构相对复杂占用面积较大,所以一般少量在CPU内部用作Cache,而不适合大规模的集成使用,如内存。而DRAM主要用来作为计算机的内部主存。

  Cache: 目前我们CPU中一般集成了2到3级的Cache,容量从128K到4M。对于CPU总的Cache来说,它们的也是和CPU同频率的,所以理论上执行速度和寄存器应该是相同的,但是Cache往往用来存储一些指令和数据,这样就存在一个命中的问题。当没有命中的时候,需要向下一集的存储器获取新的数据,这时Cache会被lock,所以导致实际的执行速度要比寄存器慢。同样对于L1,L2,L3来说,速度也是越来越慢的。

  主存: 也就是我们说的内存,使用DRAM来实现。但是我们目前听的内存一般叫DDR SDRAM,还有早期的SDRAM。这是一种同步的DRAM技术,我们不需要了解他的详情,只需要知道它能有效的提高DRAM的传输带宽。而DDR表示双倍的速率,而现在又有了DDR2,DDR3,DDR4,他们的带宽也是越来越大。

  前面的RAM在断电后都会丢失数据,所以他们是易失的。另一方面非易失的存储器即便在断点后也能保存数据。一般我们称之为ROM(Read-Only Memory)。虽然这么说,但是ROM在特殊的情况下还是可以写入数据的,否则就不能叫存储器了。

  PROM: 可编程ROM,只能被编程一次,PROM包含一种熔丝,每个存储单元只能用高电流烧断一次。

  EPROM:可擦写可编程ROM,有一个透明的石英窗口,紫外线通过窗口照射到存储单元就被清除为0,而对它编程是使用一种特殊的设备来写入1。写入次数1K次。

  EEPROM:: 电子可擦除可编程ROM,不需要特殊设备而可以直接在印制的电路板上编程。写入次数10万次。

  Flash Memory: 这是我们见到最多的闪存,有NOR Flash、NAND Flash、V-NAND Flash、SLC、MLC、TLC。虽然是基于EEPROM,但是速度上却要快很多。其中NOR 、NANA Flash大量的使用在U盘,SD卡、手机存储上。

  ROM在计算机中应用也比较多,比如我们的BIOS芯片,最开始采用PROM,后来使用EPROM,如果损坏计算机就无法启动了。而目前手机中也采用ROM来烧入系统,而RAM作为内存,使用Flash Memory作为机身存储。

  也就是我们最常见的硬盘。目前硬盘主流已经是500G,1T。转速也在7200转左右。相对于8G的内存,一个500G的硬盘可以说是相当的便宜。但是问题在于他的速度非常的慢,从磁盘读取数据需要几个毫秒,而CPU时钟周期是以纳秒计算。磁盘读取操作要比DRAM慢10万倍,比SRAM慢百万倍。

  相对于CPU,内部存储的电子结构,磁盘存储是一种机械结构。数据都通过电磁流来改变极性的方式被电磁流写到磁盘上,而通过相反的方式读回。一个硬盘由多个盘片组成,每个盘片被划分为磁道,扇区和最小的单位簇。而每个盘面都有一个磁头用来读取和写入数据。而硬盘的马达装置则控制了磁头的运动。

  随着计算机的发展,缓慢的磁盘速度已经成为计算机速度的障碍了。大多数情况下,你的CPU够快,内存够大,可是打开一个程序或游戏时,加载的速度总还是很慢。(关于程序加载的过程后面的文章会讲到)。原因就是磁盘读写速度太慢,所以一度出现了虚拟硬盘。就是把一部分内存虚拟成硬盘,这样一些缓存文件直接放到内存中,这样就加快了程序访问这些数据的速度。但是他的问题是易失的。当然你可以保存到磁盘,但是加载和回写的速度会随着数据量加大而加大。所以这个适用于一些临时数据的情况,比如浏览器缓存文件。

  而固态硬盘是最近几年出来的,而且随着技术的发展,价格也越来越便宜,越来越多的人采用SSD+HHD的方式来搭建系统,提高系统的速度。其实SSD在上世纪80年代就有基于DRAM的产品,但是因为易失性和价格而无法推广开来。而现在的SSD则是使用Flash Memory。目前市面上最常见的是SLC,MLC,TLC存储介质的固态硬盘。我们知道Flash都是与写入次数限制的。而SLCMLCTLC。目前主流的SSD都是使用MLC,比如Intel 520,三星830系列。当然目前三星也退出了基于TLC的固态硬盘,价格相对要便宜一些。

  简单可以理解为是将数据指令存储在其他机器上,比如分布式系统,WebService Server,HTTP Server以及现在炒的火热的云端存储。计算机通过网络相互连接。比较起磁盘,远程存储的速度是以秒来计算。

  通过上面介绍我们对计算机存储器有了一个了解,并且知道了存储器层次越高速度越快。那么为什么我们要对存储器分层呢? 分成是为了弥补CPU和存储器直接速度的差距。这种方式之所有有效,是因为应用程序的一个特性:局部性。

  我们知道计算机的体系是存储程序,顺序执行。所以在执行一个程序的指令时,它后面的指令有很大的可能在下一个指令周期被执行。而一个存储区被访问后,也可能在接下来的操作中再次被访问。这就是局部性的两种形式:

  对于现代计算机来说,无论是应用程序,操作系统,硬件的各个层次我们都是用了局部性。

  以上2段代码差别只有for循环的顺序,但是局部性却相差了很多。我们知道数组在内存中是按照行的顺序来存储的。但是CODE1确实按列去访问,这可能就导致缓存不命中(需要的数据并不在Cache中,因为Cache存储的是连续的内存数据,而CODE1访问的是不联系的),也就降低了程序运行的速度。

  前面介绍了存储器的存储技术和分层,也一直提到CPU从存储器中获取数据和指令,这一节就介绍一下CPU和存储器之间是如何通信的。

  所谓总线是各种功能部件之间传送信息的公共通信干线,它是由导线组成的传输线束。我们知道计算机有运算器,控制器,存储器,输入输出设备这五大组件,所以总线就是用来连接这些组件的导线。

  数据总线: 数据总线DB是双向三态形式的总线,即它既可以把CPU的数据传送到存储器或输入输出接口等其它部件,也可以将其它部件的数据传送到CPU。数据总线的位数是微型计算机的一个重要指标,通常与微处理的字长相一致。我们说的32位,64位计算机指的就是数据总线。

  地址总线: 地址总线AB是专门用来传送地址的,由于地址只能从CPU传向外部存储器或I/O端口,所以地址总线总是单向三态的,这与数据总线不同。地址总线的位数决定了CPU可直接寻址的内存空间大小。

  控制总线:控制总线主要用来传送控制信号和时序信号。控制总线的传送方向由具体控制信号而定,一般是双向的,控制总线的位数要根据系统的实际控制需要而定。其实数据总线和控制总线可以共用。

  前面我面介绍了总线的分类,在我们的简单模型中。CPU通过总线和存储器之间直接进行通信。实际上在现代的计算机中,存在一个控制芯片的模块。CPU需要和存储器,I/O设备等进行交互,会有多种不同功能的控制芯片,我们称之为控制芯片组(Chipset)。

  对于目前的计算机结构来说,控制芯片集成在主板上,典型的有南北桥结构和单芯片结构。与芯片相连接的总线可以分为前端总线(FSB)、存储总线、IQ总线,扩展总线等。

  北桥芯片,它控制着CPU的类型,主板的总线频率,内存控制器,显示核心等。它直接与CPU、内存、显卡、南桥相连,所以它数据量非常大。

  前端总线:是将CPU连接到北桥芯片的总线。FSB的频率是指CPU和北桥之间的数据交换速度。速度越快,数据带宽越高,计算机性能越好。

  显卡总线:是将显卡连接到北桥芯片的总新。目前有AGP,PCI-E等接口。其实并没有显卡总线一说,一般认为属于I/O总线。

  I/O总线:连接外部I/O设备连接到南桥的总线, 比如USB设备,ATA,SATA设备,以及一些扩展接口。

  单芯片结构: 单芯片组主要是是取消了北桥,因为现在CPU中内置了内存控制器,不需要再通过北桥来控制,这样就能提高内存控制器的频率,减少延迟。而现在一些CPU还集成了显示单元。也使得显示芯片的频率更高,延迟更低。

  在计算机刚开始的时候,CPU和内存还有I/O设置是直接通过总线连接的而没有控制芯片。所有设备都同步的工作在同一个总线频率下。

  但是随着CPU的发展,CPU速度越来越块。但受限于I/O设备。于是就出现了芯片。他使得I/O总线不在直接和CPU的系统总线个不同频率的总线,这个芯片实际起到了一个降频的作用,也就相对于系统总线的分频技术。

  但CPU速度发展相当快,CPU的速度已经高于内存运行的速度,于是引入了倍频的概念。CPU在不改变外频和系统总线频率的情况下运行在更高的频率。

  发展到后来,就出现了北桥芯片,而CPU和北桥之前的总线称为了FSB总线,而内存与北桥之前称为内存总线 分频和倍频

  分频:使得I/O设备可以和较高的外频协同工作。比如AGP,PCI总线MHZ的外频来说,采用2/3或1/3分频的方式就能使得CPU和外设同步的工作了。否则设备可能无法正常工作。

  倍频: 为了提高CPU频率又正常的和内存进行工作,所以产生了倍频。所以对于CPU来说他实际的频率是外频*倍频。

  前面我们现在已经知道CPU和北桥芯片连接是通过FSB。而FSB频率表示CPU和北桥芯片之间的工作速度。但是从前面我们就知道FSB的实际频率是和外频一样的。但是随着技术的发展,Intel的QDR技术和AMD的HT技术,使得CPU在一个时钟周期可以传送4次数据,所以对于FSB涞说虽然工作早外频的频率下,但是等效的频率是外频的4倍。所以我们说的FSB频率是等效频率,而不是实际的工作频率。随着技术的发展,Intel芯片的FSB有800MHz,1600HMz等等。但随着北桥芯片的消失,FSB的概率也慢慢远去。

  从下表我们就能看出。所以我们常说的DDR3 1600,DDR2 800指的是内存的传输频率。相同的技术还有显卡的AGP4X,8X,PCIE-8X,16X等技术。

  而随着FSB速度不断加快,内存的总线频率组建成为了瓶颈,于是出现了DDR双通道,双通道是指芯片拥有2个内存控制器,所以可以使得传输速率翻倍。

  从前面我们知道了FSB对整个系统的性能影响很大,1600MHZ的FSB能提供的数据带宽也只有12.8GB/s,所以随着技术的发展,现在最新的计算机基本都采用了单芯片设计,北桥的功能被集成到了CPU内部。于是我们前面说的FSB也就不存在了。对于Intel和AMD这2大芯片厂商,分别有自己的技术来提高CPU和存储器以及其他设备之间的传输速率,满足更高的计算要求。

  QPI: Intel的QuickPath Interconnect技术缩写为QPI,译为快速通道互联。用来实现芯片之间的直接互联,而不是在通过FSB连接到北桥。早期20位宽的QPI连接其带宽可达惊人的每秒25.6GB,远非FSB可比。而随着技术发展,在高端安腾处理中峰值可以达到96GB/s。

  HT:HyperTransport本质是一种为主板上的集成电路互连而设计的端到端总线技术,目的是加快芯片间的数据传输速度。HyperTransport技术在AMD平台上使用后,是指AMD CPU到主板芯片之间的连接总线(如果主板芯片组是南北桥架构,则指CPU到北桥)即HT总线GB/s。

  这一结介绍了计算机总线系统以及CPU和各个设备之间的交互。我们可以看到除了CPU自身的速度之外,总线的速度也影响这计算机的整体性能。从发展的过程来看,总线也是一个分分合合的过程。从最初的一条总线,到后来的单独出来的I/O总线,内存总线,就是为了提高CPU的效率。而当CPU和内存速度都发展到一定阶段后,又出现了DDR,双通道等技术,在不提高核心频率的情况下提高了传输率。于是又出现了CPU和内存间直接总线通信降低延迟的情况。 (从2000年开始接触电脑DIY,一直到07年毕业,都对DIY很有兴趣,但是随着电脑越来越快,目前以及弄不太清楚了,复习这些知识也费了我好多时间。)

  前面主要介绍了系统总线和CPU与内存之间的通信,最后一部分简单介绍一下CPU和I/O设备是如何通信的。对于计算机来说输入输出设备也是五大组件。我们知道相对于CPU,I/O设备的工作频率要慢的很多。比如早期的PCI接口工作频率只有33MHz,硬盘的IDE-ATA6的传输速率也只有133MB/s。而现在的 SATA3接口速率能达到600MB/s。

  符号设备:字符设备以字符为单位接收或发送一个字符流,字符设备不可以寻址。列入打印机、网卡、鼠标键盘等。

  I/O设备一般由机械部件和电子部件两部分组成。电子设备一般称为设备控制器,在计算机上一般以芯片的形式出现,比如我们前面介绍的南桥芯片。不同的控制器可以控制不同的设备。所以南桥芯片中包含了多种设备的控制器,比如硬盘控制器,USB控制器,网卡、声卡控制器等等。而通过总线以及卡槽提供和设备本身的连接。比如PCI,PCI-E,SATA,USB等。

  对于不同的设备控制器,进行的操作控制也是不同的。所以需要专门的软件对他进行控制。这个软件的作用就是用来专门和设别控制器对话,这种软件称为

  。一般来说驱动程序由硬件设别厂商提供。所以我们有时会碰到一些设备因为没有安装驱动程序而无法使用的情况。 而目前的OS总都包含了大量的通用驱动程序,使得我们在安装完系统后不需要在额外的安装驱动。但是通用的驱动只能使用设备的基本功能。

  驱动程序因为是非操作系统厂商开发,并且需要被安装到操作系统并调用,所以需要有一个统一的模型来开发驱动程序。否则操作系统是无法操作各式各样的设备的。前面我们知道设备非为两大类,所以一般操作系统都定义了这两类设备的标准接口。

  每个控制器都有几个寄存器和CPU进行通信。通过写入这些寄存器,可以命令设备发送或接受数据,开启或关闭。而通过读这些寄存器就能知道设备的状态。因为寄存器数量和大小是有限的,所以设备一般会有一个RAM的缓冲区,来存放一些数据。比如硬盘的读写缓存,显卡的显存等。一方面提供数据存放,一方面也是提高I/O操作的速度。

  另一种方式是两种的结合,寄存器拥有I/O端口,而数据缓冲区则映射到内存空间。Pentinum就是使用这种方式,所以在IBM-PC兼容机中,内存的0-640K是I/O端口地址,640K-1M的地址是保留给设备数据缓冲区的。(关于内存分布后面文章会介绍)

  对于第一种方式需要使用汇编语言来操作,而第2种方式则可以使用C语言来编程,因为他不需要特殊的指令控制,对待I/O设备和其他普通数据访问方式是相同的。

  对于I/O映射方式,不需要特殊的保护机制来组织对I/O的访问,因为OS已经完成了这部分工作,不会把这一段内存地址分配给其他程序。

  另一个问题是,因为发送指令后需要判断是内存还是I/O操作,所以它们需要能够检查全部的内存空间。以前CPU,内存和I/O设备在同一个总线上,所以检查很方便。但是后来为了提高CPU和内存效率,CPU和内存之间有一条高速的总线(比如QPI)。这样I/O设备就无法查看内存地址,因为内存地址总线旁落到了内存和CPU的高速总线上,所以需要一个额外的芯片来处理(北桥芯片,内存控制器的作用),增大了系统的复杂度。

  前面已经知道CPU通过内存映射的方式和I/O设备交换数据,但是对于CPU来说,无论是从内存还是I/O设备读取数据,都需要把地址放到地址总线上,然后在向控制总线传递一个READ信号,还要用一条信号线来表示是从内存还是I/O读取数据。因为I/O映射的内存区域是特定的,所以不存在无法区分是内存还是I/O操作。目前一共有3种方式进行操作:

  程序控制I/O: CPU在向I/O设备发出指令后,通过程序查询方式检查I/O设备是否完成工作,如果完成就读取数据,这种方式缺点是CPU在I/O设备工作时被占用。

  中断驱动I/O: CPU是稀缺资源,所以为了提高利用率,减少I/O等待。在I/O设备工作时CPU不再等待,而是进行其他的操作,当I/O设备完成后,通过一个硬件中断信号通知CPU。CPU在来处理接下来的工作,比如读取数据存放到内存。但是每次只能请求一个字节,效率很低。

  DMA: Direct Memory Access利用一种特性的芯片存在于CPU和I/O设备之间。CPU需要操作I/O设备时只需要发送消息给DMA芯片,后面的事情全部内又DMA来完成,当把所需要数据放入内存后在通知CPU进行操作,整个过程DMA直接和内存总线打交道,而CPU也只需要和DMA芯片和内存交互,大大提高了速度。

  这一篇文章介绍了计算机组件中的存储器的分类和工作原理,以及I/O设别的工作方式。通过总线将各个部件连接起来。我们可以看到计算机的发展不光是CPU,存储器以及I/O设备的发展,总线也是起了非常关键的作用。通过前2章的介绍,应该对计算机硬件的工作原理有了大概的了解。后面开始将主要偏向计算机操作系统软件的工作方式。当然这些也是和一些硬件的特性分不开的。

  本章知识点Linux系统提供复杂的内存管理功能,内存的概念在Linux系统中相对复杂,有常规内存、高端内存、虚拟地址、逻辑地址、总线地址、物理地址、I/O内存、设备内存、预留内存等概念。1、内存和I/...

  阅读数 5498一、3种汉字字模存储和提取的方法1、字模存放在程序存储器中;    这种方法较为常用,针对程序不大或单片机无外部扩展数据存储区功能的情况。2、通过外扩的EEPROM存储汉字字模数据,将其作为外部数据存...

  SRAMDRAM前者用来实现cache较多,后者则用来实现主存也就是内存。局部性:时间局部性和空间局部性。存储器访问和总线总线:数据总线(DB双向三态)、地址总线(AB单向三态)、控制总线(CB双向三...博文来自:

  PCIE的三种事务读写:存储器读写、配置读写、I/O读写配置读写:配置读写请求TLP是使用“基于ID路由”的一组重要报文,其主要作用是读写PCIE总线的EP、switch以及PCIE桥片的配置寄存器以...博文来自:IC小鸽的博客

  1.独立编址(专用的I/O端口编址)----存储器和I/O端口在两个独立的地址空间中(1)优点:I/O端口的地址码较短,译码电路简单,存储器同I/O端口的操作指令不同,程序比较清晰;存储器和I/O端口...博文来自:咕唧咕唧shubo.lk的专栏

  PCIe的内存地址空间、I/O地址空间和配置地址空间pci设备与其它接口的设备(如i2c设备)最大的不同是存在内存地址空间和配置地址空间,本文分析一下它们的用途。首先区分一下IO空间和内存空间cpu会...博文来自:Radia的专栏

  在不同的系统中,I/O端口的地址编排有两种形式:存储器统一编址和I/O独立编址。 存储器统一编址(存储器映像编址):在这种编址方式中,I/O端口和内存单元统一编址,即把I/O端口当作内存单元对待,从整...博文来自:yanfengt的专栏

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

  1)存储器编址由于微处理器内部的寄存器和ALU都是16位的,为了方便20位的地址管理,在8086对存储器管理的设计中,采用了分段管理的技术。采用分段方法进行编址的优点:减少指令长度,提高指令执行速度。...博文来自:jxm_96的博客

  CPU地址空间CPU地址空间(一)地址的概念1)物理地址:CPU地址总线传来的地址,由硬件电路控制其具体含义。物理地址中很大一部分是留给内存条中的内存的,但也常被映射到其他存储器上(如显存、BIOS等...博文来自:

  计算机的IO设备非常多,键盘、鼠标、感应屏幕、显示器、网卡、U盘、打印机。提前需要说明的一点就是,IO设备中最核心的一点就是中断处理。这在单片机中也是最核心的一块内容。具体开辟一章blog来写控制,这...博文来自:

  PCI总线发展历史       PCI总线是计算机的I/O总线年代时替代了ISA总线,成为计算机中的局部总线一直使用至今。PCI总线在发展的过程中,不断自我革新,满足时代的需求。在短短10多年...博文来自:cgm88s的专栏

  从CPU连出来一把线:数据总线、地址总线、控制总线,这把线上挂着N个接口,有相同的,有不同的,名字叫做存储器接口、中断控制接口、DMA接口、并行接口、串行接口、AD接口……一个设备要想接入,就用自己的...博文来自:可乐虎博客

  1)存储器编址由于微处理器内部的寄存器和ALU都是16位的,为了方便20位的地址管理,在8086对存储器管理的设计中,采用了分段管理的技术。采用分段方法进行编址的优点:减少指令长度,提高指令执行速度。...博文来自:Little devil

  计算机控制系统中,存储器和I/O接口都接到CPU的同一数据总线上。当CPU与存储器和I/O接口进行数据交换时,就涉及到CPU与哪一个I/O接口芯片的哪一个端口联系,还是从存储器的哪一个单元联系的地址选...博文来自:zhubo的学习笔记

  1 内存访问      (1)内存通过CPU的地址总线来寻址定位,然后通过CPU数据总线来读写。        (2)CPU的地址总线的位数是CPU设计时确定的,因此一款CPU所能寻址的范围是一定的,...博文来自:的博客

  1)物理地址:CPU地址总线传来的地址,由硬件电路控制其具体含义。物理地址中很大一部分是留给内存条中的内存的,但也常被映射到其他存储器上(如显存、BIOS等)。在程序指令中的虚拟地址经过段映射和页面映...博文来自:

  欧姆龙plc的I/O存储器区详解IO存储区域是指通过指令的操作作数可以进入的区域。它由I/O继电器区(CIO)、内部辅助继电器区(WR)、保持继电器区(HR)、特殊辅助继电器区(AR)、暂存区(TR)...博文来自:

  一、外设都是通过读写设备上的寄存器来进行访问的,外设寄存器也成为“”I/O端口“”,而IO端口有两种编址方式:独立编址和统一编址。1)统一编址:寄存器参与内存统一编址。外设接口中的IO寄存器(即IO端...博文来自:

  RAM:由字面意思就可以理解,SDRAMSRAMDRAM(下面蓝色字体的这几种)都可以统称RAM,randomaccessmemory(随机存取存储器)的缩写,SRAM:静态随机存储器,就是它不需要刷...博文来自:坚持

  本节讲述PCIe总线定义的各类TLP,并详细介绍这些TLP的格式。在这些TLP中,有些格式对于初学者来说较难理解。读者需要建立PCIe总线中与TLP相关的一些基本概念,特别是存储器读写相关的报文格式。...博文来自:sailing_w的专栏

  答:有两种:独立编址和统一编址。1.独立编址(专用的I/O端口编址)----存储器和I/O端口在两个独立的地址空间中(1)优点:I/O端口的地址码较短,译码电路简单,存储器同I/O端口的操作指令不...博文来自:此博客已不用

  原文链接:的处理机制类似Windows应用程序中的“消息处理”机制,驱动程序接受到不同的I...博文来自:

  引言:       从CPU连出来一把线:数据总线、地址总线、控制总线,这把线上挂着N个接口,有相同的,有不同的,名字叫做存储器接口、中断控制接口、DMA接口、并行接口、串行接口、AD接口……一个设备...博文来自:

  存储器简介1.  RAM随机存取存储器(Random-AccessMemory,RAM),又称作“随机存储器”,是与CPU直接交换数据的内部存储器,也叫主存(内存)。所谓“随机存取”,是指RAM存储单...博文来自:玉双龙

  在计算机硬件当中,主要有运算器,控制器,存储器,输入输出设备几种。存储器大致有高速缓存(cache),内存,辅存这样的体系架构.而cpu在工作时,主要从内存中获取指令或数据进行操作,而缓存存在...博文来自:的博客

  1、norflash:NOR采用的并行接口,其特点读取的速度比之NAND快乐很多倍,其程序可以直接在NOR里面运行。但是它的擦除速度比较慢,集成度低,成本高的。现在的NOR的容量一般在2M左右,一般是...博文来自:郭老二

  (一)8086/8088存储器组织一,8086/8088存储空间8086/8088有20根地址线M个存储单元进行访问。每个存储单元都有1个20位的地址。这1M个存储单元对应的地址为0000...博文来自:Leonards Blog

  DMA(DirectMemoryAccess),即直接存储器存取,是一种快速传送数据的机制。数据传递可以从适配卡到内存,从内存到适配卡或从一段内存到另一段内存。利用它进行数据传送时不需要CPU...博文来自:Clarence

  在不同的系统中,I/O端口的地址编排有两种形式:存储器统一编址和I/O独立编址。 存储器统一编址(存储器映像编址):在这种编址方式中,I/O端口和内存单元统一编址,即把I/O端口当作内存单元对待,从整...博文来自:

  操作系统—IO设备IO设备IO控制方式1、程序中断控制方法2、中断驱动方法3、DMA4、通道控制方法举例子分析IO子系统的层次结构举个例子操作系统—IO设备IO设备按使用特性分类人机交互类外设:键盘、...博文来自:

  内存、寄存器、GPIO地址、存储器之间的关系1、如上图,0x00000000表示第一个地址字节,代码使用这个16进制时,指针会指向这个物理地址,对4字节的GPIO控制单元来说,这4个字节的物理地址就叫...博文来自:

  一直对ARM外设FLASH和SDRAM的连接方式和地址的确定有很大疑问,今天总算是明白了一些。就对这发表发表我的理解吧。       一般s3c2410或s3c2440与norflash相连时,地址线...博文来自:zfx277266940的专栏

  1)存储器编址由于微处理器内部的寄存器和ALU都是16位的,为了方便20位的地址管理,在8086对存储器管理的设计中,采用了分段管理的技术。采用分段方法进行编址的优点:减少指令长度,提高指令执行速度。...博文来自:

  可以从多方面对I/O设备进行分类: a) 按使用特性分类,可以划分为: 1) 存储设备,如磁盘、磁带、光盘等。 2) 输入/输出设备,如打印机、键盘、显示器、音声输入/输出设备等等。 3) 终端设备,...博文来自:

  地址空间、内核空间、IO地址空间(转)(2011-03-1721:30:06)转载标签:地址空间内核空间io地址空间杂谈分类:操作系统有这么一系列的问题,是否在困扰着你:用户程序编译连接形成的地址空间...博文来自:DriverMonkey的专栏

  参考书籍:《计算机操作系统》IO设备的类型:1按照设备的使用特性分类:1)存储设备也称为外存或者后备存储器、辅助存储器,。是计算机系统用以存储信息的主要设备。该类设备存取速度较内存慢,但容量比内存大得...博文来自:

  I/O设备是人们使用计算机的途径,无意相当于计算机的五官,不同的使用方式需要配备不同的设备,如输入文字一般用键盘,但在某些应用场合,需要扫描仪,输入声音需要话筒,打印信息需要打印机,实时控制RT领域需...博文来自:

  一、IO端口和IO内存的区分及联系这两者如何区分就涉及到硬件知识,X86体系中,具有两个地址空间:IO空间和内存空间,而RISC指令系统的CPU(如ARM、PowerPC等)通常只实现一个物理地址...博文来自:

  虚拟存储器,即具有请求调入功能和置换功能,能从逻辑上对内存容量加以扩充的一种存储器系统。I/O系统的基本功能:1.隐藏物理设备的细节,2.与设备的无关性,3.提高处理机和I/O设备的利用率,4.对I/...博文来自:

  一、I/O端口      端口(port)是接口电路中能被CPU直接访问的寄存器的地址。几乎每一种外设都是通过读写设备上的寄存器来进行的。CPU通过这些地址即端口向接口电路中的寄存器发送命令,读取状态...博文来自:

  相信学习编程的同学,或多或少都接触到算法的时间复杂度和空间复杂度了,那我来讲讲怎么计算。        常用的算法的时间复杂度和空间复杂度 一,求解算法的时间复杂度,其具体步骤是: ⑴ 找出算法...博文来自:杨威的博客

  本帖只谈技术实现,首先我们自己来编译一个比特币客户端吧, 技术讨论,欢迎大家入伙(注明:csdn)。...博文来自:开心乐源的专栏

  帐号相关流程注册范围 企业 政府 媒体 其他组织换句话讲就是不让个人开发者注册。 :)填写企业信息不能使用和之前的公众号账户相同的邮箱,也就是说小程序是和微信公众号一个层级的。填写公司机构信息,对公账...博文来自:小雨同学的技术博客

  最近在做一个每天定点从FTP自动下载节目.xml并更新到数据库的功能。首先想到用 FileSystemWatcher来监控下载到某个目录中的文件是否发生改变,如果改变就执行相应的操作,然后用timer...博文来自:kongwei521的专栏

  扫二维码关注,获取更多技术分享 本文承接之前发布的博客《 微信支付V3微信公众号支付PHP教程/thinkPHP5公众号支付》必须阅读上篇文章后才可以阅读这篇文章。由于最近一段时间工作比较忙,...博文来自:Marswill

  本篇文章是根据我的上篇博客,给出的改进版,由于时间有限,仅做了一个简单的优化。相关文章:将excel导入数据库2018年4月1日,新增下载地址链接:点击打开源码下载地址十分抱歉,这个链接地址没有在这篇...博文来自:Lynn_Blog

  mybatis简单小巧易于上手,方便浏览修改sql语句博文来自:努力+坚持,而且还很年轻

  jquery/js实现一个网页同时调用多个倒计时(最新的) 最近需要网页添加多个倒计时. 查阅网络,基本上都是千遍一律的不好用. 自己按需写了个.希望对大家有用. 有用请赞一个哦! //js ...博文来自:Websites

  Java 中的堆是 JVM 所管理的最大的一块内存空间,主要用于存放各种类的实例对象。   在 Java 中,堆被划分成两个不同的区域:新生代 ( Young )、老年代 ( Old )。新生代 (...博文来自:朱小厮的博客

  我们在做项目的时候有时候需要给图片添加水印,水寒今天就遇到了这样的问题,所以搞了一个工具类,贴出来大家直接调用就行。/** * 图片工具类 * @author 水寒 * 欢迎访问水寒的个人博客:...博文来自:水寒

  强连通分量: 简言之 就是找环(每条边只走一次,两两可达) 孤立的一个点也是一个连通分量   使用tarjan算法 在嵌套的多个环中优先得到最大环( 最小环就是每个孤立点)   定义: int Ti...博文来自:九野的博客

  1. 规则引擎面临的问题:业务规则的实现大部分是由开发人员来实现的 业务规则需要业务分析人员能够阅读和理解 业务规则的可读性和用户的友好性都不太好2. DSL领域特殊语言DSL == Domain...博文来自:哎幽的成长

  若是研究区在中国,则在地理空间数据云有中国区合成好的数据,直接下载用即可。数据格式为TIF。坐标为WGS84,不用再转换投影。下载网址为:博文来自:hengcall的博客

  java 19:不可变字符串和限定...DViewer:博主写得太好了,支持一下

  C语言之关键字(二) void,c...xueemeimei:把楼主你C语言的这专题看了,受益匪浅。但是怎么没有继续呢?期待

本文链接:http://shawntierney.com/fangwenjubuxing/564.html