高速数据采集存储(精选12篇)
高速数据采集存储 篇1
高速采集存储系统目前在雷达、图像处理、语音识别、声纳、通信等领域有着广泛地应用。为了满足雷达高速数据采集的需要,要求设计高速大容量的数据存储器,可以在现场采集数据、保存后进行回放和后期处理。特别是随着雷达成像技术逐渐成熟,分辨率和采样率都大幅提升,需要实时保存海量数据。Atmel公司的1 GS/s速率的A/D变换器件,可以工作1 GHz上进行采样。NAND型FLASH芯片,以半导体作为记忆载体,比传统的存储设备可靠性更高,体积及重量更小,日趋成为存储器的主流。
在某机载合成孔径雷达的试验中,雷达以正侧视条带式工作在X波段,空间分辨率达到0.5 m×0.5 m(0.3 m×0.3 m)的高分辨率,I,Q双通道采样,采样频率640 MHz,采样位宽为8 b,场景距离向45 120 (22 560)点,方位向重复频率为2 k/s,要求最小存储速度2×8 b×45 120×2 k/s=180.480 Mb/s。本文将详细介绍所设计的A/D_FLASH系统是如何构建来满足数据采集和存储要求的。
1 核心芯片选择
存储介质采用Samsung公司的NAND FLASH芯片K9WAG08U1A-PIB0,他的外部接口速度为40 MHz,接口宽度8 b。每个芯片含8 192×2个数据块,1个块分64页,每页大小为(2 k+64)B,其中64 B为空闲区,存储总容量为16 Gb。
数据采集芯片采用Atmel公司的AT84A/D001B,他是双通道8位AD,采样速率可达2 Gs/s(此时是2个通道),输入接口是SMA,触发选用外接触发,触发信号为3.3 V的TTL或者CMOS电平。输入信号带宽可为1~1 500 MHz,输入信号幅度为-2 dBm(Vpp=500 mV),输入阻抗50 Ω,信号通过SMA接头接入。
FPGA是控制核心,他非常适合复杂时序逻辑的设计,这里选用Altera公司的STRATIXⅡ系列的EP2S60F1020C5芯片。他的内置存储RAM,可以缓存一定量的数据,支持3.3 V,64 b,66 MHz PCI,可以作CPCI的功能控制。
PCI桥接芯片采用了PIX公司的PCI9656BA芯片,以简化与主机进行通信时PCI部分的设计。借助PCI9656,可实现与主机间进行64 b,66 MHz的PCI总线,与FPGA间实现32 b,66 MHz的局部总线协议,并可实现板卡的热插拔。该芯片应用灵活,性价比较高,是进行CPCI接口开发的一块性能优良的芯片。
2 A/D芯片部分的操作
AT84A/D001B有2路(I,Q)模拟输入,变换的结果可以最多有4路的差分输出,这4路都连到FPGA的差分IObank上,A/D的时钟输入也是差分的,最高可以达1 GHz,如果设定成将这个时钟反相后作为另一路的时钟输入,那么采样速率实际可达2 GS/s,工作模式的设定都是通过FPAG输出时序给A/D,其中要注意的FPGA输出的信号经过一个电平转换芯片后再连到A/D的配置接口上,因为A/D支持电平是2.2 V,可以用FPGA的3.3 VBANK的I/O接口转换。
3 FLASH芯片接口操作
K9WAG08U1A可以看作由2片存储容量为8 Gb的小芯片组成,对此,芯片有2个片选信号ce1和ce2,对应还有2个rdy信号。芯片的各种操作必须写入相应的命令才能顺利执行,由于命令、地址、数据共用I/O,所以要通过命令锁存信号和地址锁存信号共同控制而分时复用。FLASH存储中主要使用的操作简介如下:
(1) 页编程(PAGE PROGRAME)
器件的编程以页为单位,但在一个页编程周期中允许对部分页(一个或连续的多个字节,最多不超过页容量)编程。一个页编程周期由串行数据加载阶段和紧随的编程阶段组成。在数据加载阶段,数据被加载到数据寄存器中;在编程阶段,已加载的数据写入实际的存储单元,编程典型时间为200 μs。
(2) 页读(PAGE REA/D)
器件在上电时,就被初始化为读模式,此时可以不写00h命令,直接写入地址和30h命令即可。有2种类型的读,分别是随机读和顺序页读。命令打入后经过最多20 μs的时间,数据会从选择的页传到数据寄存器中。
(3) 块擦除(BLOCK ERASE)
器件的擦除操作是以块为单位的。块地址加载由擦除建立命令60h启动,然后输入确认命令D0h,执行内部擦除过程。这一先建立再执行的两步命令时序,确保了存储内容不会由外部的干扰而意外擦除。
4 板卡大致布局
板卡有一个高速CPCI接口,方便与CPCI工控机之间的数据交换。此外采用自定义的两个高速数据接口(SCSI)。64片FLASH芯片并行操作,另外8片FLASH芯片专门用于冗余校验, FPGA为整个板卡的控制核心,其硬件结构如图1所示。
由于CPCI的插槽J3,J4和J5用户自定义应用,在这里把J3设计成自定义I/O,总共有80根线连到FPGA的引脚上,这样只要跟这块板卡插在同一块CPCI工控机的底板上,就可以很自由地实现板间通信而不需要主机的太多干预。J4没有连接,而J5则按照TigerShark公司的TS201的链路口协议进行链接,这样以来,这块板卡就可以实现与以TS201为核心的雷达信号处理板卡之间的通信。 布局时要把数字部分和模拟部分尽量彻底分开,模拟部分主要是指A/D上的模拟电源,模拟地,模拟信号等。这块板卡的布局如图1所示:
5 重要模块设计
程序的大致结构流程如图2所示:
FPGA是整个存储卡的控制核心,EP2S60F1020I4实现的内部功能模块如图3所示:
6 A/D的配置及与FPGA数据传输
Atmel的这款A/D变换芯片采用3线式配置其工作方式,通过这个接口配置他的时钟源,单路或是双路模拟输入,以及变换结果的输出通道数,并可以配置2路的增益和补偿。这种配置方式只需往芯片的内部8个寄存器写入相应的配置值即可,并可以根据应用场合及时修改配置参数,适应各种要求的数据采集要求。A/D的3线配置时序如图4所示:
A/D变换工作的频率比较高,FPGA要接收这个数据需采用一个LVDS接收器,这样就可以把接收器的输出直接连到FPGA中的FIFO去,接下来通过FIFO接口把数据传给FLASH模块去存储。A/D变换的结果进入FPGA后,再经过一个解串器,把速度降下来,就可以分到把数据送给FLASH去存储。
6.1 FLASH流水工作
考虑存储速度要求和接口的最高速度,我们以接口速度320 MB/s进行设计,由于每组17片FLASH并行操作,分配到每个FLASH芯片的速度为320/16=20 MB/s。K9K8G08U0M芯片接口的写入速度最高可达40 MB/s,所以工作在20~40 MB之间就可满足所需要求。
考虑FLASH的结构特点,设计过程中基于整个页进行读写操作。数据加载时间,即1页数据写入FLASH寄存器的时间为:页容量/接口速度=102.4 μs。数据加载结束后,进入编程阶段。K9K8G08U0M芯片编程时间的典型值为200 μs,最大值为700 μs。为了系统达到最大稳定,以最大时间700 μs进行设计,编程时间/数据写满每组FLASH一页的时间为:700 μs/102.4 μs=6.8,说明经过7组FLASH的写入加载操作后,第一组FLASH编程结束,又可进行再次加载。由此可见,在一次循环操作中,用8组FLASH是比较合适的,也就是如图5所示的样子。
6.2 用于FLASH存储的坏块列表
NAND FLASH内部有随机分布的坏块,需要建立坏块信息列表,对FLASH的操作都要基于此列表。芯片在出厂的时候,在每块第一页和第二页的空闲区的首字节(第2 048个字节)处留有标记,如果不是FFH则为坏块。建立坏块信息列表如图6所示。
在实际操作中发现,每组17片FLASH总的坏块从80到130不等,但相对于总块数8 192而言仍算少数。所以把每组17片FLASH各自的坏块信息相与,建立一个新的组坏块信息列表,一共8组FLASH所有的坏块信息是8 192个字节,总的大小很小。由于每组FLASH共同控制,那么基于同一个坏块列表操作就显得非常的方便。
存储操作及坏块列表的更新,如图7所示。FLASH在长期使用中,会产生新的坏块,要及时对坏块信息进行更新。更新时,把新的坏块内容写入第一块中去,但不重新写入原来的地址。这样确保原始坏块信息的安全。
6.3 数据的冗余校验
在实际信道传输数据时,如果由于信道传输特性不理想,并且受到噪声和干扰的影响,就会造成接收端误判而发生差错,或者由于个别芯片出现读写失败时,也会造成数据的丢失。为了尽可能的降低通信的误码率,提高数据存储的完整性,同时使用循环冗余校验码CRC(Cyclic Redundancy Check)与奇偶校验码来检查和恢复错误数据,保障存储系统数据的可靠性。
循环冗余码采用CRC-CCITT国际标准,其生成多项式为:G(X)=X16+X12+X5+1。为了提高运算速度,使用并行计算方法。奇偶校验的法则为,数据有奇数个1时,校验码为1,否则为0,在FPGA内部使用异或组合逻辑就可轻松实现所需算法。
7 性能参数
板卡的性能参数如表1所示。
8 FPGA内部实现的功能结构
FPGA内部主要完成的工作主要有,接收从CPCI工控机来的的命令,判断执行的命令的类型(存储、回放、擦除数据等),实现FPGA与PCI9656的通信,对A/D的工作模式进行配置,把A/D变换的结果传给FLASH,建立坏块列表,以及对数据的冗余校验。低速模块对高速输入的处理,是个通过数据流的串并转换,面积换速度的方法达到。
9 结 语
本文对FLASH的固存技术进行研究,所设计的基于FPGA的存储卡,在存储速度、容量、纠错性能上都满足了机载合成孔径雷达成像试验所需的要求。在速度要求愈高的发展趋势下,高速大容量的存储器将在各个领域都会有广泛的应用前景。
参考文献
[1]K9WAG08U1A A/Dvanced FLASH Memory Data SheetSAMSUNG Electronics,2005.
[2]PCI 9656BA Data Book,Version 1.1 2003 PLX Technolo-gy,Inc.
[3]Stratix II Device Handbook Altera Corporation.
[4]李贵山,戚德虎.PCI局部总线开发者指南[M].西安:西安电子科技大学出版社,1997.
[5]夏宇闻.Verilog数字系统设计教程[M].北京:北京航空航天大学出版社,2003.
高速数据采集存储 篇2
随着集团网络的数据量不断增加,网络数据的安全性是极为重要的,一旦重要的数据被破坏或丢失,就会对企业造成重大的影响,甚至是难以弥补的损失。数据存储备份除了拷贝外,还包括更重要的内容即管理。备份管理包括备份的可计划性,磁盘的自动化操作、历史记录的保存以及日志记录等。所有的硬件备份都不能代替数据存储备份,硬件备份(双机热备份、磁盘阵列备份以及磁盘镜象备份等硬件备份)只是拿一个系统、一个设备等作牺牲来换取另一台系统或设备在短暂时间内的安全。若发生人为的错误、自然灾害、电源故障、病毒黑客侵袭等,引起的后果就不堪设想,如造成系统瘫痪,所有设备将无法运行,由此引起的数据丢失也就无法恢复了。只有数据存储备份才能为我们提供万无一失的数据安全保护。
我们早先采用数据存储为“DAS(Direct Attached Storage,直接外挂存储)”的存储方式。这种数据存储的服务器结构如同PC机架构,外部数据存储设备都直接挂接在服务器内部总线上,数据存储设备是整个服务器结构的一部分,同样服务器也担负着整个网络的数据存储职责。DAS这种直连方式,只能够解决单台服务器的存储空间扩展、传输需求,无法满足多台服务器备份的需要。为了满足现在多台服务器所需要的网络存储必须采取支持以下两种方式的存储设备:
一、NAS(Network Attached Storage,网络附加存储)方式则全面改进了以前低效的DAS数据存储方案,它是采用独立于PC服务器,单独为网络数据存储而开发的一种文件服务器。NAS服务器中集中连接了所有的网络数据存储设备(如各种磁盘阵列、磁带、光盘机等),存储容量可以较好地扩展,同时由于这种网络存储方式是NAS服务器独立承担的,所以,对原来的网络服务器性能基本上没什么影响,以确保整个网络性能不受影响。它提供了一个简单、高性价比、高可用性、高扩展性和低总拥有成本(TCO)的数据存储方案。
二、SAN(Storage Area Network,存储域网络)与NAS则是完全不同,它不是把所有的存储设备集中安装在一个专门的NAS服务器中,而是将这些存储设备单独通过光纤交换机连接起来,形成一个光纤通道的网络,然后这个网络再与企业现有局域网进行连接,在这种数据存储方案中,起着核心作用的当然就是光纤交换机了,它的支撑技术就是Fibre Channel(FC,光纤通道)协议,这是ANSI为网络和通道I/O接口建立的一个标准集成,支持HIPPI、IPI、SCSI、IP、ATM等多种高级协议。在SAN中,数据以集中的方式进行存储,加强了数据的可管理性,同时适应于多操作系统下的数据共享同一存储池,降低了总拥有成本。
目前在数据存储方面几大主要品牌:EMC、IBM、HP、DELL等,与其他公司相比中EMC是专业从事数据方面的公司,在数据存储方面有其专业的优势。
利用 EMC 恢复管理解决方案,可以从任何中断或事件中快速、轻松、可靠地恢复业务数据。利用 EMC 恢复管理,您可采用一种全方位的做法,即利用集成式软件的备份、复制、连续数据保护(CDP)、分析和报告来保护数据。它结合了简化的管理,以提供关键业务信息的更高级别的可靠性和恢复能力。
主要优点
一、集中化备份管理 — 跨不同操作系统保护您的关键应用程序和数据库,同时集中执行管理并加快总体备份速度。
二、集中化复制管理 — 以实时或接近于实时的方式将电子数据拷贝移动到本地或远程信息存储库。
三、连续数据保护 — 自动为每一次数据更改保存一个拷贝,以便您能够将数据恢复到任一时间点。
四、分析和报告 — 收集、关联备份操作相关信息并发出警报,包括对备份失败执行根本原因分析。
五、简化管理 — 使用管理控制台查看保护和恢复活动,并确定向何处分配更多资源
EMC 同时有针对 Microsoft SQL Server 的数据保护可满足 SQL Server 的可用性和可恢复性要求。利用 EMC 针对 Microsoft SQL Server 的数据保护,并可利用 SQL Server 中的本机功能实现数据恢复和保护。利用 EMC 行之有效的专业技能满足备份和恢复、SLA 遵守能力、人员职责和基础架构规划等方面的要求。
主要优点
一、提高了数据库可用性 — 使用数据库镜像直接在服务器之间传输事务日志记录,并可快速故障切换到备用服务器。
二、增加了应用程序正常运行时间 — 减少备份窗口以减少对应用程序和系统可用性的影响。
三、减少了业务风险 — 通过内置的硬件冗余、RAID 保护和高可用性确保数据能够快速而准确地恢复。
我们通过对存储方式、存储空间、存储性能的比较,推荐选择的数据存储型号为:
高速数据采集存储 篇3
希捷全球市场营销副总裁Scott Horn表示:“通过Backup Plus FAST,希捷打造了一个非常成熟的产品类型,并推出了各项创新的增强功能,以解决客户的实际问题。这款新的便携式硬盘具备的性能和容量,超越了当前所有的其它外置产品。我们认为,Backup Plus FAST硬盘将被创意专业人士所广泛采用,成为他们现场工作的最佳备份设备。”
希捷Backup Plus FAST硬盘的金属外壳拥有高质量而坚固的设计,可避免划痕和指纹。它无需外部电源,外形小巧紧凑,可轻松放入摄像机包或背包,而容量则与目前的桌面硬盘相当、甚至更高。该硬盘配置为RAID 0,可将数据分块保存在两个不同的驱动器上,从而提高存储容量和传输速度。
《国家地理》杂志的资深摄影师Jim Sugar表示:“我的工作涉及到最新的数字摄影和视频技术,所以速度和容量对于我来说至关重要。在处理这些设备生成的大型文件时,无论是静态照片、微速视频还是4K视频,可靠而快速的大容量存储设备甚至能够决定项目的成败。这些文件的大小通常都为几个GB,它们的拍摄、编辑、管理和备份是我数字工作流程的重要步骤。”
“我的工作依赖于技术性能。如果摄像机、电脑和硬盘的运行达不到预期的效果,则要么造成项目失败,要么极大地影响后期制作的时间。时间对于摄像师和摄影师极其重要,只要是能够加速工作流程的东西,对于我和客户都很有意义。”
这款新产品还带有易用的备份软件——希捷Dashboard,正是它使得希捷Backup Plus产品系列在市场上大受欢迎。希捷Dashboard软件既可提供简便的一键备份服务,也能根据用户需要设置备份计划。除此之外,Dashboard软件可以备份您在Facebook和Flickr等社交媒体上的相册,确保您曾在这些网站上分享过的视频和照片等数字内容都已安全备份并能轻松找到。使用保存和共享功能便可从这些社交媒体网站中进行上传和下载。您甚至可以将社交网站上所有标记的照片备份至硬盘上。
最新的Dashboard软件现在还纳入了一个移动备份应用程序,可以为移动设备上的数字内容提供保护。您仅需在带有iOS或安卓系统的移动设备上安装免费的希捷移动备份应用程序,便可轻松地将移动设备中所有的图片和视频备份至硬盘或云服务器中。当您在使用家庭网络时,通过无线连接便可将移动设备中的内容直接传输到硬盘。出门在外时,您也可以使用Dropbox或Google Drive之类的云服务来备份数据。
红外相机数据高速实时存储技术 篇4
在航天航空技术领域,经常需要采集大容量高精度的红外图像信息,对于有些信息专业人员无法现场进行数据处理,只能先存储备份,然后读取分析采集到的图像数据并还原显示在计算机上。由于图像传输速度快、容量大,而Flash的存储速度一般不超过40 Mbyte/s,本文充分利用乒乓缓存的思想对高速数据流进行实时无缝缓存,避免了图像快速传输过程中的丢数现象,利用流水线技术写Flash,解决了Flash写入速度的限制。与传统的存储系统相比,该系统具有存储速度快、可靠性强、稳定性高、适用范围广等优点。
1 系统组成及设计框架
系统采用Altera公司Cyclone II系列EP2C35F484C6芯片作为主要控制核心[1],红外相机捕捉到的视频图像信号通过LVDS接口电路进入解码模块,经FPGA处理过的图像数据通过乒乓结构实时无缝缓存,最后用流水线写Flash技术将图像数据存储在NAND Flash闪存阵列。存储的图像数据在需要时可用分析软件通过FT245控制的USB 2.0接口读出并将图像显示在计算机上,系统组成框图如图1所示。
1.1 图像解码模块
本系统采用National公司差分接收芯片DS90CR216作为视频解码芯片,经LVDS接口电路解码后的信号主要有帧同步信号(vsync)、行同步信号(hsync)、像素时钟(mclk)以及8位数据,其中,像素时钟为29.5 MHz,行同步周期为64μs,高电平有效,每行有384个有效像素,帧同步周期为20 ms,高电平有效,每帧有289行有效数据,图像数据在时钟上升沿变化,因此选择2片128 kbyte的SRAM即可满足要求。解码后图像信号时序如图2所示。
1.2 数据无缝缓存设计流程
乒乓缓冲技术是FPGA设计中最常用的一种数据缓冲方法,其最大的特点是能实现实时无缝缓冲与节约缓冲区空间[2]。
本系统每秒传输50帧图像,每帧期间帧同步高电平时间约为18.5 ms,低电平时间约为1.5 ms,如果在帧同步低电平1.5 ms的时间内从SRAM中将数据转存至Flash,会产生丢数。因此,为了给数据处理单元赢得更多的处理时间[3],采用的乒乓缓冲模块工作流程为:当帧同步信号为高电平时,将经过FPGA处理过的图像数据写入SRAM1,同时地址计数器1开始递加计数,此时地址计数器的值一方面为FPGA数据处理模块提供触发参考,另一方面也为缓存空间提供了参考。当帧同步为低电平时,FPGA控制乒乓缓存逻辑切换总线开关,开始选择SRAM2为写空间,将SRAM1切换为读空间以读取缓存在SRAM1中的图像数据,此时地址计数器1开始递减计数,当SRAM1中的数据全部读出后,地址计数器1计数到0。当帧同步信号再次变高后,将图像数据写入SRAM2,地址计数器2递加计数,等待帧同步为低电平时,切换读写信号,选择SRAM2为读空间,SRAM1为写空间,开始读取SRAM2中的数据同时地址计数器2的值开始递减计数,同样当SRAM2中的数据全部读出后,地址计数器2计数到0。待帧同步又一次为高电平时,将图像数据写入SRAM1中,地址计数器1开始递加计数。如此循环切换读写空间,将缓存在2片SRAM中的数据读出并存入Flash中。乒乓操作读写时序如图3所示。
2 Flash阵列流水线存储流程
2.1 芯片简介
选用三星公司容量为1 Gbyte的闪存K9K8G08U0A,它由8 192个存储块组成,每个存储块分为64页,每页容量为2 kbyte,其外部有8个I/O引脚和6个信号管脚,而这8个I/O脚既是命令和地址的输入引脚,也是数据的输入输出端口。该闪存是一种高密度非易失性的存储器,主要特点为:1)读、写(编程)操作均以页为单位,擦除以块为单位。2)读取每页时间为20μs,页编程的典型时间是200μs,块擦除的典型时间是1.5 ms。3)页寄存器写入最低时间是50μs,页编程的最大时间是700μs,块擦除的最大时间是2 ms。由于每次进行页编程之前都需要写页地址,不难计算出写一页所需时间为250~750μs,写入的速度约2.600 0~7.812 5 Mbyte/s。实验证明,页编程的时间正是限制Flash存储速度的关键因素,因此在对其进行页编程操作时采用流水线技术来实现高速大容量Flash的存储[4]。
2.2 Flash存储设计流程
本系统所采用的流水线技术主要分为3个步骤实现:1)向Flash加载编程指令、地址以及数据;2)待加载完成之后,Flash芯片会自动执行将载入到页数据寄存器的数据写到内部存储单元的编程操作[5];3)当自动编程结束后,由FPGA下发“70h”读状态指令以检测Flash的I/O口最低位是否为“0”,如果是,表示编程成功,页计数器递加并继续对下一页编程,当页计数器从0加到63后,页计数器清0,块计数器加1,继续进行页编程操作,当块计数器递加至8 192块时,停止对Flash的页编程操作,等待上位机的读Flash指令。流水线存储的示意图如图4所示。
由于每次对Flash加载数据和地址后总是有大概200μs以上的时间花费在芯片编程上,所以可用多片1 Gbyte的Flash组成流水线工作模式:在第1片加载完成执行编程时可以加载第2片Flash,待第2片Flash编程时又加载第3片Flash,依此操作执行,实现时间的复用,缩短了Flash阵列的有效页编程时间,从而提高了写Flash的整体速度。如果工程项目要求写Flash的速度应为60 Mbyte/s,用5片Flash组成流水线操作模式,那么每片的速度应为12 Mbyte/s,经计算加载一页数据到Flash寄存器的时间大概为162.76μs,而700μs÷162.76μs≈4.3,所以采用5级本系统的流水线技术是可以满足设计要求的。
3 实验结果
本系统经多次实际存储红外相机捕捉视频图像的实验,用读数软件从Flash中将数据读取出来后再经过Matlab处理还原,验证了系统的可行性和可靠性。图5为捕捉到的一张男士挥手的红外图。
4 小结
实验结果表明,本系统具有以下优点:1)以FPGA为逻辑控制核心,采用乒乓缓存模块将红外相机下发的高速大容量数据进行缓存能避免因传输速度太快而出现数据丢帧的现象。采用流水线阵列存储,打破了传统存储方式下Flash存储速度不能超过40 Mbyte/s的束缚,实现了高速大容量存储技术的突破。2)系统占用体积小,成本低,硬件电路简单,调试方便,能完成大量视频数据的无缝缓存和实时存储。3)为高速大容量数据可靠记录、高速实时准确存储提供了有效的技术方案,并在多次实际应用中以其稳定、可靠的性能得到广泛的应用。
摘要:介绍了一种高速大容量固态存储器的组成机制和存储技术,以FPGA为逻辑控制单元,通过LVDS接口电路将红外相机采集到的图像数据经过乒乓结构实时无缝缓存,利用流水线写Flash技术提高了Flash写入的速度,可通过扩展Flash阵列来满足速度更高容量更大的存储要求。可用FT245控制的USB2.0接口读取Flash中的数据并上传至计算机,最后用分析软件可以清晰看到拍摄结果。结果表明,该系统稳定可靠地存储了高速传输的图像数据,具有较强的可行性和实用性。
关键词:现场可编程门阵列,乒乓结构,流水线,USB2.0
参考文献
[1]宋海吒,唐立军,谢新辉.基于FPGA和OV7620的图像采集及VGA显示[J].电视技术,2011,35(5):45-47.
[2]姚远,李辰.FPGA应用开发入门与典型实例:修正版[M].北京:人民邮电出版社,2010.
[3]谭树人,张茂军,徐伟.多传感器同步图像采集系统的设计[J].电视技术,2006,30(9):84-87.
[4]杨海涛,苏涛.基于FPGA的高速大容量固态存储设备设计[J].国外电子元器件,2007(5):68-72.
JAVA数据结构存储剖析 篇5
实用举例:
1:堆栈(stack)
方法的参数值
public void sun(int a , int b)
//调用方法是在栈内存中为参数分配存储空间,方法结束自动释放。
局部变量
public static void main(String[] args){int a = 5;}
//在方法中的局部变量,存储在栈内存中,方法结束时候,释放内存
引用变量
Person p = new Person(“zhaoyue”, 22);
//调用构造方法的时候,“形参”先在堆栈中开辟内存,存放“实参”,再把“实参”的//一份拷贝传入对象之中。此时,“实参”的拷贝存放在堆(heap)中,构造方法结束,//堆栈中的内存释放。
堆栈的存储要领:压栈,出栈,自动清除!
2:堆(heap)
成员变量
public class Person{ String name;int age;}
// New 的时候存储在堆中。
new得到的对象
Person p = new Person(“zhaoyue”, 22);
// New 的时候存储在堆中。
3:数据区(Data segment)
3.1:静态存储(static storage)
静态变量
public static int a = 5;
//JVM运行时首先为其开辟空间,位置不变,程序运行结束时空间释放。并且在运行时只加载一次。
静态方法
public static void run(){print(“hello”);}
//JVM运行时首先为其开辟空间,位置不变,程序运行结束时空间释放。并且在运行时只加载一次。
3.2地址池(address pool)
非new的字符串
String s = “hello world”;
3.3常量存储(constant storage)
常量
public final int a = 5;
4:Code segment(代码区)
4.1:Code segment
存放代码
4.2:方法区(method area)
成员方法
Public void run(){System.out.println(“I’m run!”);}
//类装载的时候存储在方法区,初始时被隐藏,实例化对象时被激活。
具体解释:
在java中有6中存取机制:
1: 寄存器(register)
2: 堆栈(stack)
3: 堆(heap)
4: 静态存储(static storage)
5: 常量存储(constant storage)
6: 非RAM存储寄存器(register):这是最快的存储区,因为它位于不同于其他存储区的地方——处理器内部。但是寄存器的数量极其有限,所以寄存器由编译器根据需求进行分配。你不能直接控制,也不能在程序中感觉到寄存器存在的任何迹象。堆栈(stack):位于通用RAM中,但通过它的“堆栈指针”可以从处理器哪里获得支持。堆栈指针若向下移动,则分配新的内存;若向上移动,则释放那些内存。这是一种快速有效的分配存储方法,仅次于寄存器。创建程序时候,JAVA编译器必须知道存储在堆栈内所有数据的确切大小和生命周期,因为它必须生成相应的代码,以便上下移动堆栈指针。这一约束限制了程序的灵活性,所以虽然某些JAVA数据存储在堆栈中——特别是对象引用,但是JAVA对象不存储其中。堆(heap):一种通用性的内存池(也存在于RAM中),用于存放所有的JAVA对象。堆不同于堆栈的好处是:编译器不需要知道要从堆里分配多少存储区域,也不必知道存储的数据在堆里存活多长时间。因此,在堆里分配存储有很大的灵活性。当你需要创建一个对象的时候,只需要new写一行简单的代码,当执行这行代码时,会自动在堆里进行存储分配。当然,为这种灵活性必须要付出相应的代码。用堆进行存储分配比用堆栈进行存储存储需要更多的时
间。
4: 静态存储(static storage):这里的“静态”是指“在固定的位置”。静态存储里存放程序运行时一直存在的数据。你可用关键字static来标识一个对象的特定元素是静态的,但JAVA对象本身从来不会存放在静态存储空间里。
5: 常量存储(constant storage):常量值通常直接存放在程序代码内部,这样做是安全的,因为它们永远不会被改变。有时,在嵌入式系统中,常量本身会和其他部分分割离开,所以在这种情况下,可以选择将其放在ROM中
6: 非RAM存储:如果数据完全存活于程序之外,那么它可以不受程序的任何控制,在程序没有运行时也可以存在。
速度:
就速度来说,有如下关系:
寄存器 > 堆栈 > 堆 > 其他
关系:
然后我主要要说下堆与堆栈的关系:
堆:堆是heap,是所谓的动态内存,其中的内存在不需要时可以回收,以分配给新的内存请求,其内存中的数据是无序的,即先分配的和随后分配的内存并没有什么必然的位置关系,释放时也可以没有先后顺序。一般由使用者自由分配,在C语言中malloc分配的就是堆,需要手动释放。
堆栈:就是stack。实际上是只有一个出入口的队列,即后进先出(frist in , last out),先分配的内存必定后释放。一般由,由系统自动分配,存放函数的参数值,局部变量等,自动清除。
还有,堆是全局的,堆栈是每个函数进入的时候分一小块,函数返回的时候就释放了,静态和全局变量,new得到的变量,都放在堆中,局部变量放在堆栈中,所以函数返回,局部变量就全没了。
JAVA中的基本类型,其实需要特殊对待。因为,在JAVA中,通过new创建的对象存储在“堆”中,所以用new 创建一个小的、简单的变量,如基本类型等,往往不是很有效。因此,在JAVA中,对于这些类型,采用了与C、C++相同的方法。也就是说,不用new 来创建,而是创建一个并非是“引用”的“自动”变量。这个变量拥有它的“值”,并置于堆栈中,因此更高效。
再说一说类的实例方法!
类的实例方法在内存中是只有一份,不过肯定不会是第一个对象中,如果是第一个对象的话,那么当第一个对象被销毁的时候,那么后面的对象就永远无法调用了。
类的实例方法存在一个专门的区叫方法区(method area),事实上类刚装载的时候就被装载好了,不过它们在“睡眠”,只是这些方法必须当有对象产生的时候才会“苏醒”.(比如,一个输出类的成员变量的方法,如果连对象都没有,何来的输出成员变量).所以,方法在装载的时候就有了,但是不可用,因为它没有指象任何一个对象。
而静态的又不一样了,静态的东西存在静态存储(static storage)区,他们和类是一个等级的,就是说只要类被装载,它们就可以直接用.(用类名来调用).他们不依赖与任何对象,所以也不能输出任何对象的成员属性.(除非成员属性也是静态的).每个对象在new的时候都会在堆区中开辟内存,用来保存对象的属性和方法.(实际上方法保存的只是方法区的引用,如果保存的是方法本身,那么试想一下,有多少个对象就得有多少个方法,那么又和第一点中“实例方法在内存中只有一份拷贝”相矛盾了。另外我补充一点,在父类的引用指向子类对象的时候,父类可以调用子类从父类继承的属性和方法,子类覆写父类的属性和方法,在动态绑定(也就是多态)时,子类对象有一个方法区得引用,动态new的时候这个引用指向子类的方法,从而实现了父类可以调用子类覆写父类的方法。这也是动态绑定得名的原因。)
数据异地存储 篇6
【关键词】数据;异地存储;设计;风险
【中图分类号】G2S0.7 【文献标识码】A 【文章编号】1672-5158(2013)01—0184-01
随着市场的发展,用户数量不断增加,用户的各种数据的安全性值得企业越来越重视,目前网络支撑中心的数据保存有三种方法:存储在主机盘阵;存储在磁带库;下载到本地刻录成光盘保存。其中第一种、第二种方式是实时数据,第三种方式保存的是历史数据。根据时代发展的要求,企业需要对计费数据进行异地保存。然而,当前多数企业网络支撑中心不具备数据异地保存条件,需要在异地部署数据存储设备。企业可利用存储根据专业不同创建存储空间,并通过光纤网络将需存储的数据定时或实时传送到存储空间中,可以根据专业数据的不同确定存储策略,包含存储的频率,数据保存时间等,从而实现数据的异地存储。
一、数据异地存储的设计
(一)数据异地存储规划
第一,根据企业计划的基础建设情形,各部门须先有一个能满足其数据存储需求的主要设备,或找寻可提供更佳服务质量的就近环境,作为存储成果长久保存的基础。第二,异地存储架构的主要瓶颈在于各部门至异地存储点的网络频宽。因此在远端异地存储点之外,应先有一主要存储点,同时也应逐年改善基础架构。第三,各存储部门对于异地存储点的存取速度,将与主要存储点有差距,视企业至异地存储点间的基础架构而定,这种差距是异地存储点选择的主要根据(王仁福,2004)。第四,主要存储点与异地存储点间,应可视主要存储点状况,自动选择可最快获取数据的来源,省去人为操作维护的困扰与负担。
(二)异地存储类别
由于存储主要牵涉的关键设置为存储设备,因此存储设备将成为企业异地存储基础架构中的主要核心。而目前大型存储设备的主流架构为SAN与NAS。SAN(Storage Area Network)为区域网络存储,采用光纤通道,以中大型架构为主,用于在固定时间内只被少数人同时存取。NAS(Network Attached Storage)为网络连接存储,利用IP传输,若有大?用户需同时读取数据的环境时,NAS存储设备是理想选择。
(三)异地存储的整合
一是企业各部门在策略上需同意数据存储于异地(企业外);二是存储节点企业配合事项;三是各存储节点须协助提供相关设备的置放空间与环境,所有设备均置于一座标准机柜中,机柜中应包含必须的设备,并保留未来扩充的空间;三是考虑在企业各部门中是否应使用相同架构与相同技术/系统;四是使用相同系统可直接相互进行信息交流,这时的资源共享与相互存储最为容易。
二、异地存储的风险
(一)风险类别
异地存储可能会有下列风险:一是数据的外洩,也即数据在传输的过程中被有心或无心企业外人员所得到;二是数据处理的正确与完整,也即数据在传送或存储后所得结果是否与原来数据相同;三是营运中断,也即数据毁损后到还原这段时间造成企业营运中断(杨朝钦,2012)。
对于企业组织的信息安全,黑客攻击、病毒、恶意破坏者和洩密者也是企业组织必须面对的威胁:一是病毒,存储系统本身若无防毒程序则可能将病毒一起存储,造成存储数据皆受病毒感染;二是洩密者,也即公司员工有可能通过服务器入侵存储系统,截取数据;三是电力供应不正常,若电力突然间断掉,将导致瞬间电压不稳,造成数据在存储瞬间不正确;四是网站入侵与攻击,即利用网站服务器的漏洞取得网站的重要信息、置换网页或使网站停止服务。
(二)风险管理
首先,可以使用VPN通道及在存储端也安装相同的数据库,平时设定每日进行差异性存储,在登入数据库时也另写程序连接到存储端,当有问题时立刻将连线数据库改成存储端,如此可减少数据的外洩、缩短营运中断时间、及确保数据正确性与完整性。
其次,可辅导企业本身导入信息安全管理体系,针对不同的企业特性建立一套完整的信息安全管理系统,使企业信息安全目标得以达成。欲达成目标,需管理面与技术面的统合,缺一不可(胡凡良,陈海斌,2008)。至于风险部份则无法完全去除,因每个企业面对不同的风险时所能承受的程度会有差异,这也就是在导入信息安全体系时,因应企业需求的不同而建议采用不同的方式。
三、小结
企业的目的不外乎可持续经营以达成企业本身的获利,数据可以说是整个企业的命脉,有形的资产及土地可以用金钱再买回相同实体即可运作,然而数据的遗失或毁损,有时是金钱无法购回的,且可能导致企业营运的危机。异地存储除了能够将数据存储在本地端及异地端,确保数据不致在同一时间同一地点因为安全因素导致数据毁损,且可确保因为硬件的故障需要维修停机时的人力成本增加。然目前多数企业管理人员?有一种错误的心态,就是不会有那么倒楣的事发生,但我们宁愿有备而不用,也不能等到事情发生时才在后悔莫及。
风险每个企业?会面对的问题,从而引发各种风险,但面对风险要如何管理则是每个企业必须认真思考的问题,除了控制每天所遇到的问题事件,并且制定成知识库做为新进人员培训时的教材,最重要的是针对可能会发生的风险做好人员的教育培训,因为人才是企业最重要的资产,一个企业全部?是新进人员跟一个企业?是资深员工,它们所面对的风险自然不同。异地存储需良好的硬件搭配良好的管理制度及优秀的人力技术,如此才能免于数据受到毁损,进而导致企业的危机。
参考文献
[1]王仁福.数据异地备份系统的设计与实现[J].中国金融电脑,2004年第8期
[2]杨朝钦.高校档案数据异地备份策略探讨[J].档案管理,2012年第2期
高速数据采集存储 篇7
传统的无效块管理策略是以单片Flash作为基本的管理单元。而大容量存储结构体系中存在存储芯片多的特点,若以这种最基本的细粒度完成的无效块管理方式,会使得Flash存储阵列的驱动程序复杂化,并占用过多的FPGA资源。若直接将其应用到大容量存储结构体系中,将不能发挥多通道构架的并发读写和资源的整合与优化设计的优势[2]。因此,针对大容量存储结构的特点,本文提出两种不同应用环境下的无效块管理策略:一种是基于超级块地址映射的无效块管理策略。另一种为基于位索引的无效块管理策略。这两种方法相较于传统方法优势巨大,超级块地址映射的无效块管理极大地节约了映射地址的存储空间,而位索引的无效块管理策略能实现无延时匹配。在高速大容量数据存储结构中,这两种方法更适合应用环境。
1 大容量高速存储体系结构
图1为基于FPGA的多片大容量m×n NAND Flash高速存储阵列模块结构,其中m表示存储通道的数量,n表示每个存储通道所含有的Flash芯片的个数。该结构采用FPGA作为主控单元,实现了高速输入数据的接口转换,并利用其片内的丰富的RAM资源构成数据缓存,送入到相应的存储控制逻辑中[3]。
每个存储通道的Flash芯片组的所有数据总线接口D0~D7分别复接在一起,其控制线接口ALE,CLE,WE,RE信号也将复用,忙信号RB是由OC门输出,也可以将其直接连接到一起。而所有芯片的使能信号,包括单个芯片中存在的片选信号(CE1,CE2)必须占用单独的I/O资源。
2 无效块管理策略
2.1 基于超级块地址映射的无效块识别与预匹配机制
超级块是由多个实际的物理块组成的集合,与使用基本逻辑块的块地址映射的方法相比,其占用的内存将减小为原来的1/N,能大幅度地减小资源占用率,在实现多个NAND Flash芯片的无效块管理中具有绝对的优势。
NAND Flash芯片在进行读、写擦除操作之前,均需要对当前操作块进行有效性识别。这一操作在高速应用中,将占用大量的时间,因此,亟需一种高效可靠的无效块识别方法来提高数据的高吞吐率。其基本原理是,当一个超级块内部的任何一个子逻辑块被检测为无效块时,即认为该超级块是无效块。
NAND Flash存储阵列中无效块校验流程如图2所示。当系统上电完成复位后,对逻辑控制超级块内的第一个逻辑块进行检测,当检测到当前超级快的第一个子块为非无效块时,将超级块的块地址写到FPGA内部开辟的RAM中,待完成写入操作后,将简单双端口RAM的写地址加一,同时将超级块的块地址加一,并再次对下一个超级块进行检测,直至所有的超级块都检测完成。需要注意的是,为了便于后续的无效块地址的匹配,在生成无效块列表的时候,将“FFF”写入无效块列表的最后,即将芯片的最后一个超级块看成是无效块[4]。
基于超级块地址映射的无效块校验会造成一定的存储容量的损失,其损失大小与实际的选用的芯片的无效块的个数与位置相关。如果存储通道阵列中的存储芯片的无效块的位置均在同一个超级块内,其容量损失将达到最小,当然,由于无效块的位置在芯片内部具有随机性,其出现这种可能性很小。一般都是在一个超级块的内部存在一个或者多个子块是无效块。
表1所示为MT29F128G08AJAAA芯片内部的块信息。单个MT29F128G08AJAAA芯片内部至多含有4×80=320个无效块,损失的容量为320 Mbyte。当采用超级块地址映射时则最大将损失320 Mbyte×4=1 280 Mbyte的容量。存储通道中Flash器件阵列的个数与损失的最大的容量直接的关系如图3所示,单个存储通道使用的芯片数量越多,其理论上损失的存储容量就越大。
建立相应的无效块列表以后,在对存储通道阵列进行控制时,需要实时完成无效块列表中的无效块地址信息与实际操作的块地址进行匹配工作。图4所示为高效的无效块块地址预匹配原理框图。
在对某个块操作的初始阶段,从无效块列表中读出一个无效块的地址信息,该地址信息与初始块操作地址进行预匹配,当读出的无效块的地址大于初始的块地址信息时,则认为该操作块为有效块,可以进行后续的读、写或者擦除操作。待操作完成以后,将初始的块地址进行更新后再与无效块的地址信息进行比较,若仍然要小于无效块的地址,则认为该块也是有效的块。若操作块地址与当前读出的RAM输出的地址相同,则表示该块为无效块,不能对该块进行操作。控制逻辑此时需要将待操作的块地址加1,同时重新从RAM中读出下一条无效块的地址的信息,按照上述流程循环操作,直至所有的块都操作完成。图5为预匹配逻辑的实现流程,其中A表示从无效块列表中读出的无效块的地址信息,B表示的是需要操作的块地址的信息。
2.2 基于位索引的快速无效块识别方法与预匹配机制
高速存储通道中基于超级块地址映射的无效块识别与预匹配方法,将完整的无效块地址信息保存在无效块列表中,在匹配过程中需要将所保存的无效块地址信息读出,并与当前的操作地址信息进行比较,使得Flash存储阵列读写操作存在一定的时间延时,不能极大地发挥多通道构架的并发读写和资源的整合与优化设计的优势,此外,造成了大量的存储容量损失也是该无效块识别存在的一个缺陷[5]。为了解决上述不足,实现多芯片存储阵列中的无效块的快速检索与高效识别,提出了一种基于位索引的快速无效块识别和实时的预匹配机制。
以2芯片阵列结构为例,该结构中包含2片MT29F128G08AJAAA芯片,共存在8个LUN模块,即1个超级块由8个LUN中相同位置的子块组成,也就是说1个超级块地址对应有8位的无效块标识符。因每片上述芯片的每个LUN模块被划分为4 096个存储块,故本例程中的超级块地址的深度为4 096,转换成16进制表示就是000h~FFFh。假设用二进制数据“1”表示的是无效块,“0”为有效块标识。这样就可通过存储列表的地址来表示超级块的块地址,根据其保存的数据来识别该地址所对应的物理块是否是无效块。图6所示为改进的基于位索引的无效块列表结构。无效块列表的地址也就是超级块对应的地址,其多存储的信息则表示为各LUN模块的无效块标识位。这样能够遍历存储空间中的所有的块,避免了额外的存储容量损失。
图7所示为基于位索引的无效块列表生成流程。首先开辟一个存储深度为4 096,数据位宽为8 bit存储模块,并将其所保存的内容置“0”。当开始无效块检测后,若检测到超级块内的某个子块为无效块,将其在无效块识别字的相应位置给置成“1”。待该超级块内的所有子块均检测完毕后,将无效块识别字写入到当前超级块地址所对应的存储空间中,直至所有的超级块都完成了检测。
位索引式快速无效块识别方法在Flash存储阵列进行读写操作中,读写有效块与识别无效块是并行执行的,换言之,当主控芯片对阵列中的Flash有效块进行读写操作的同时,也对无效块列表检索,并在当前有效块读写操作完毕前,能够及时准确地将下一个有效块的地址提前给出。从另一种角度讲,这样就大大削减了无效块的识别过程,可以认为读写操作是不间断性的,从而大大提高了Flash存储阵列操作速率。其匹配流程图如图8所示。
3 性能对比分析
为测试实际的NAND Flash器件的无效块的分布情况,利用Chip Scope软件获取无效块列表中的无效块地址信息。随机抽取了10片某同一批次的Micron公司的MT29F128G08AJAAA大容量芯片进行了无效块测试。采用了上超级块映射结构,即根据芯片内的4个LUN结构,使每个超级块含有4个子块,其超级块地址的范围为:000h~FFFh,共4 096个超级块。
图9所示为某一个芯片的无效块测试的FPGA的采样时序图,存在有3个无效块,其块地址分别为05Ah、05Bh以及273h。表2所示为随机抽取的10片芯片的无效块测试的结果统计。
从两个方面对上述统计结果的无效块识别与匹配机制的性能进行对比分析,即无效块列表占用的存储资源的容量大小以及整体的存储容量的损耗情况(1#:基于超级块地址的无效块识别与匹配;2#:基于位索引的无效块识别与匹配)。
1)无效块列表占用存储资源
无效块列表是利用的是FPGA内部的存储资源实现,对于1#方案,无效块列表的容量的大小受所选用的器件的中单个LUN中所含有的最多的无效块数量所决定,如单个芯片MT29F128G08AJAAA中的每个LUN中最多含有的无效块的数量是80个,采用超级块映射的方式下,其最坏的情况下会有80×4=320个无效块,无效块的地址为12位二进制数,故其无效块列表最大将达到:(320×12 bit=480 byte)。N个芯片在最坏的情况下的无效块列表的大小为480 byte×N。2#方案中,超级块地址的深度就是无效块列表的深度,即无效块列表的深度为4 096,而无效块的标识位宽与总的LUN个数有关,对于有着M个Flash芯片的存储通道,无效块列表的容量大小为:(4 096×4×M)/8=2k×M字节。由此可以看出,1#方案所需要的FPGA内部的存储资源要比2#方案所需的资源要小,且不到其大小的1/4。
2)存储容量的损耗
1#方案是利用超级块的地址作为无效块地址识别的最小单位,只要在超级块内部的任何一个小块中存在一个是无效块,则会认为整个的这个超级块都是无效块。2#方案中将超级块中的小块作为识别的最小单位,其内部的所有的小块都将被标记,避免了1#方案中的有效块被当成无效块的情况。2#方案的容量损失只于芯片中存在的总的无效块的个数有关,即其最大的容量损失与芯片的个数N的关系为:(80×4)×N Mbyte。而1#方案中的造成的容量损失与芯片个数N的关系为:(80×4)×N×4 Mbyte即1#方案的存储容量损失是2#方案损失的4倍关系。
4 小结
针对不同的应用环境基于超级块地址映射的无效块识别和基于位索引的无效块识别方法均具有一定的应用价值。在高速大容量存储环境中,这两种无效块识别方法对Flash存储阵列的读写操作均有绝对的优势,基于超级块的地址映射的无效块识别,占用主控芯片RAM资源较少,对主控芯片性能要求不高,但其在读写操作中存在一定的时间延时,而且资源利用率也不高,更适用于超大容量的数据存储阵列环境;基于位索引的无效块识别方法读写操作较快,资源利用率也较高,但其占用主控芯片RAM资源较多,更适合持续超高速、高密度的数据存储环境。
参考文献
[1]杨立宏,毛亚杰,行长印.基于Flash的CCD相机数据高速存储系统设计[J].长春理工大学学报(自然科学版),2009,32(1):31-34.
[2]王芳,李恪,苏林,等.空间太阳望远镜的星载固态存储器研制[J].电子学报,2004,32(3):472-475.
[3]张科,郝智泉,王贞松.一种基于新体系结构的空间固态记录器原型系统[J].电子学报,2008,36(2):285-291.
[4]宋杰,何友,唐小明.基于FPGA的超高速雷达信号实时采集存储系统[J].电子技术应用,2005,31(11):18-20.
高速数据采集存储 篇8
在数据存储系统中, 影响存储速率的关键因素是数据传输和存储方式。 采用LVDS总线传输方式和混合编帧技术提高了数据接收的速率;为提高数据存储器存储速率, 本文采用了一种可使Flash存储速度达到最优的交叉双平面页编程技术[1,2,3]。
1 系统总体设计
本文设计的高速数据存储系统用于完成对飞行器飞行过程中图像数据的采集、编码和存储。 试验结束后,通过PC控制专用的读数装置读取存储系统中的数据,并由PC上的数据处理软件完成数据的分析与处理。 在单元测试过程中,PC通过PCI通信接口卡(PCI9054) 完成与高速数据存储系统之间的通信, 实现指令的下发、在线实时监测状态显示、 数据回读、 对存储数据的分析以及生成分析报告等功能。 系统主要功能模块可划分为: 主控单元、PC、 地面监控装置、 图像采集单元、 图像存储器(Flash)、电压转换模块等,如图1 所示。
2 关键技术分析
2 . 1 PCI板卡设计
本文采用PLX公司的PCI9054 芯片实现PCI总线接口的逻辑设计。 PCI9054 的数据宽度为32 bit,本地总线支持复用/非复用的32 bit地址数据总线。 PCI总线作为桥接芯片, 提供了PCI总线空间、 本地总线空间以及配置空间,既能作为PCI总线的发起设备也可作为PCI从设备。 FPGA作为本地总线控制器,即PCI局部总线的目标设备,完成PC与下位机的通信。 设计采用从模式,基于FPGA和PCI9054 的硬件平台完成PCI局部总线的设计,PCI板卡整体设计框图如图2 所示。
PCI板卡插入PC的PCI扩展槽使用, 如果要正常工作,需要在Windows下编写驱动程序。 驱动程序主要实现以下几个功能: (1) 连接设备;(2) 设备初始化;(3) 设备读和写;(4)断开设备。Windows操作系统下驱动程序开发最常用的有DDK、Driverstudio 、Windriver等工具。 其中DDK的效率最高, 但编写难度较大, 因而多数技术人员使用Driverstudio 、Windriver来编写驱动程序,使用这两种工具编写出来的程序也称为WDM(Windows Device Module ) 程序。 Driver Studio中的Driver Works软件为WDM驱动程序提供了完整的框架, 本设计利用其Driver Wizard生成驱动程序框架, 然后添加各功能函数。 此处利用类KMemory Range实现对PCI9054 内部存储器的读写访问,类KIo Range实现对其寄存器的访问[4]。
2 . 2 LVDS图像采集编帧技术
图像数据由LVDS接口输入, 图3 所示为图像信号接口时序, 经解串器DS90CR216 解码后转换为21 bit并行总线输出。 图像数据的帧同步信号周期为10 ms,高电平有效, 每帧有289 行有效数据; 行同步信号周期为32 μs , 高电平有效, 每行有384 个有效数据; 其中, 像素时钟为15 MHz,图像像素时钟的上升沿为触发条件。 帧同步信号低电平期间仍有(10÷0.032)-289=23.5 个行同步信号, 即帧同步信号低电平的时间应为23.5×0.032 ms=0 . 752 ms 。 帧同步信号高电平的时间为9 . 248 ms , 行同步低电平的时间为32-(384÷15)=6.4 μs。
测量信息伴随着图像数据而来, 每接收一帧图像就接收80 B的测量信息, 测量信息的串行传输波特率为115 200 b / s , 每包测量信息的数据共10 bit 。 为便于PC进行图像数据分析处理, 在测量信息的数据前加上帧头0X “ 14 92 00 ” 和2 B帧计数。 待80 B测量信息全部读取出来后, 给出图像采集模块的复位信号, 同时清零行计数器并清空片内FIFO中的信息, 将采集到的一帧图像数据和编好帧的测量信息写入二选一数据选择器。 在帧同步信号高电平期间, 将图像数据写入外部16 KB的FIFO ( IDT7206 ) ; 在帧同步信号低电平期间, 将测量信息写入,最后等待图像记录启动信号。
2 . 3 片内FIFO设计
图像数据的缓存、Flash存储与事后回读等过程中都用到了片内FIFO, 采用片内FIFO可降低硬件的复杂度、节约了成本且更有利于完成逻辑控制。 本文选用的FPGA芯片是XC3S400 , 该芯片内部的16 个Block RAM不占用芯片的逻辑资源,设计中采用 “A端口只写,B端口只读” 的思想, 根据每个端口的时钟信号以及使能信号分别对各个端口进行操作。 利用IP核技术构建容量为1 KB的片内FIFO原理图如图4 所示[1]。
图4 中的FIFO模块调用数据宽度为8 bit、 存储深度为1 024 B的双口RAM,该RAM共有两个独立的存储单元(A和B)。 RAM的每一个管脚都是独立配置的,数据和地址的写入发生在各个单元的时钟上升沿。 数据和地址的读/写操作还与读/写时钟有关, 所以设计中将A端口写使能信号接VCC, B端口的写使能信号接GND , 实现 “A端口只写,B端口只读”。 由外部控制模块fifo_ctrl为双口RAM的A端口产生写时钟和写地址, 为B端口产生读时钟和读地址, 根据读写地址的差值offset产生FIFO的空( empty ) 、 半满( half ) 以及满( full ) 信号。
2 . 4 交叉双平面技术
图像传输速度快,对图像数据的存储采用写入速度最快的交叉双平面页编程(Interleave Two-plane Page Program ) 技术[2,3]。 为实现对Flash的交叉双平面操作, 首先要对Flash(K9WBG08U1M)芯片内部平面结构进行划分。整片Flash分为两片(chip #1 和chip #2),每片分为4 个平面(plane),每个平面共2 048 个存储块。 也就是说, 整个Flash存储空间由8 个平面(plane1~plane8) 组成, 将这8 个平面分为4 组: chip #1 中的plane0 与plane1 为第0组,plane2 与plane3 为第1 组;chip #2 中的plane4 与plane5 为第2 组, plane6 与plane7 为第3 组, Flash的交叉双平面操作必须严格按照这个分组执行。
定义矢量plane (2:0) 对这8 个平面进行操作管理:plane ( 0 ) 用于控制平面组内的两个平面之间的切换: 为0时表示对偶数平面操作, 对应操作偶数块; 为1 时表示对奇数平面操作,对应操作奇数块。 plane(1)用于完成各个平面组之间的切换: 为0 时表示操作的是偶数组(第0组与第2 组),对应操作Flash的前4 096 块,即A31 为0;为1 时表示对奇数组(第1 组与第3 组)进行操作,对应操作Flash的后4 096 块,即A31 为1。plane(2)相当于片选信号,用于内部两片Flash之间的切换,为0 表示对chip #1进行操作,为1 表示对chip #2 操作。进行交叉双平面操作时,可根据plane(2:0)的值确定所要操作的平面。
当对第0 组平面执行编程操作时, 依次往第1 组、第2 组、第3 组的各个平面中写入命令、地址和数据。 经过多次反复测试,Flash的峰值写入速度不小于30 MB/s,完成这三组平面的数据写入时间为6×4 096 B÷30 MB/s=819 . 2 μs > 700 μs 。 如果写入Flash速度小于峰值速度, 则后3 组的数据写入时间将会更大。 所以,当这4 组依次编程结束准备继续对第0 组其他页进行编程时,已经错过了第0 组的页编程时间。 交叉双平面页编程的方法省去了等待页编程的时间,缩短了Flash的写入时间,提高了写入速度[3]。 交叉双平面页编程时序如图5 所示。
3 系统功能自检
系统上电后,先运行PC软件,检查监控装置与计算机之间通信是否正常, 然后设置并启动信号源, 此时监控装置开始向记录器发送数据。 其中,监控装置下发的数字量串行波特率为115 200 b/s, 实时监测回收的信号波特率为800 kb/s,信号源数据格式设计为: 每帧共128B , 前5 B由帧头0X “ EB 90 ” 和3 B帧计数组成, 剩余字节为0X“0F~89”递增数据。 PC监测数据的内容就是监控装置向记录器发送的数据。 根据实时显示的监测数据可以判断系统是否正常工作。 通过PC读取并分析记录器所存数据与下发信号源是否一致,完成系统功能自检。
4 系统实测结果
系统上电后,存储器接收到启动记录信号后开始记录。 记录图像数据的时间不限制,直到记满。 图6 是用图像分析软件对测试数据还原后的某帧图像。
设计了一种以FPGA为主控单元,以Flash为存储介质的高速图像数据存储系统。 系统用于完成对高速LVDS图像数据的采集、 存储和实时监测, 系统具有存储速度快、存储容量大、系统可靠性高等优点,能够满足实际测试的需求。 在后续的设计中还可以做以下优化工作:(1) 采用双片Flash进行双备份, 防止单片Flash失效而造成数据丢失,进一步提高数据存储的完整性和可靠性[5,6]。 (2)对FPGA代码进行优化、提高FPGA资源的使用率[6,7,8]。
摘要:针对某系统图像数据量大、传输速率快的特点,提出了采用PCI总线协议完成PC与高速数据存储系统之间的通信,利用LVDS总线协议传输数据并进行混合编帧的解决方案。为提高数据存储速率,使用Flash交叉双平面页编程技术,将写入速度提高到30 MB/s,有效地满足了图像高速存储的要求。针对数据的码率匹配,通过构建片内FIFO缓存来实现。测试结果表明,所设计的数据存储系统能够稳定地接收并存储图像数据,而且具有很高的可靠性。
高速运动目标参数存储系统设计 篇9
关键词:高速运动目标,瞬时速度,存储,FLASH
对于高速运动目标速度的测量, 目前有多种方法, 按测量原理可分成3类:瞬时速度测量法, 平均速度测量法和多普勒原理测量法, 每种测量方法各有特点[1]。而瞬时速度测量法, 主要是通过某种传感器对在一定距离内运动的时间进行计算处理实现的。在如今, 高速运动目标的速度获得, 需要采集大量的数据以分析和研究运动目标的运动参数, 为此需要将大量高数据进行实时、稳定的存储。
随着所探测目标运动速度的提高和数据采样率都大为提高, 这就对数据存储设备的性能提出了更高的要求:一、高速性, 存储器的存储速率必须要和采样数据的传输速率相匹配;二、大容量, 长时间的高速数据采集必然会产生大量的数据流;三、可靠性, 在各种条件下的工作性能稳定, 存储数据的正确性必须得到充分的保障[2]。针对以上要求, 本文提出一种基于FPGA与NAND Flash实现的高速大容量数据存储器。
1 高速运动目标信号简介
高速运动目标信号可以认为是基于时间的电平变化信号, 在运动目标未通过传感器以前, 是一个相对稳定的电平信号, 当运动目标两次通过相距固定距离的传感器时, 获得两个相距一定时间的变化量, 通过计算两次变化量所相差的时间, 通过公式:
式中, s表示两个传感器的距离;t表示两次电平变化量相隔的时间;v表示运动目标的瞬时速度。其中运动目标的瞬时速度是我们感兴趣的对象, 因为两个传感器之间的距离可以相对比较近, 可以忽略加速度的因数, 通过对采集数据中目标信号的提取、分析就可以得两次电平变化量相隔的时间的信息, 而这些都是以采集数据的准确存储记录作为前提。
2 存储系统方案设计
2.1 主要的性能指标
1) 存储容量:16GB
2) 存储速率:150 Mbps
3) 接口方式:采编单元数据通过LVDS接口传送给数据存储记录仪, 其中包括8位并行数据、一位同步时钟、一个启动信号 (持续10 ms的高电平) 。
4) 可靠性:保证存储系统在各种极端条件下能正常工作, 数据不失真。
2.2 系统硬件构成
整个系统设计时本着高可靠、低成本、低功耗的研制理念, 采用模块化设计思想, 每个模块都可以实现各自的功能且具有单独的I/O接口, 将这些模块组合在一起以实现整个系统的各项功能。该方案采用可编程逻辑器件FPGA作为中央控制器实现各个模块的互相通信以完成对数据的接收、存储以及读取操作。整个系统主要包含6个部分:LVDS接口电路、RS-422接口电路、数字隔离电路、FPGA控制模块、存储介质以及读数接口电路。系统原理框图如图1所示。
系统上电后, RS-422接口芯片使能有效, 进入接收状态。当RS-422接收到持续20 ms的高电平启动信号时, LVDS接口芯片以及缓存FIFO进入工作状态, 这时在采编单元中完成模数转换的信号经过LVDS接口电路转变为TTL信号然后缓存至FIFO, 当FIFO几乎写满时, 再将数据送入FLASH阵列进行存储。最终通过读数接口将FLASH阵列中的数据上传至计算机做后续的分析处理, 整个过程由FPGA进行控制。
设计采用的FPGA (Field Programmable Gate Array) 是XILINX公司的spartan3系列芯片XC3S200, 这是一款高性能的微控制器:内含可编程输入输出单元 (IOB) 、基本可编程逻辑单元 (CLB) 、完整的时钟管理 (DCM) 、嵌入块式RAM, 以及丰富的布线资源。与传统的单片机、DSP等控制芯片相比具有开发周期短、集成度高、速度响应快、功耗低和通用性好等特点, 其内部丰富的逻辑资源保证了各种组合和时序逻辑电路的实现。
LVDS (Low Voltage Differential Signaling) 接口技术在数据传输上具有高速率、低功耗、低噪声、低电磁干扰等特点, 已被广泛地应用于高速数字系统设计中。这里选用了DS92LV010A和DS92LV090A芯片实现数据的传输和信号的电平转换。
存储介质采用型号为K9WBG08U1M的NAND Flash芯片, 存储容量4GB。该芯片由两片K9KAG08U0M芯片组成, 每片存储容量2GB。一片K9WBG08U1M含16348个数据块, 每一块包含64页, 每一页存储容量为 (4k+128) Byte, 其中128Byte为空闲区。它以页为单位进行擦写, 以块为单位进行擦除, 命令、数据、地址采用同一总线, 具有硬件数据保护功能。系统采用4片K9WBG08U1M进行扩展, 使整个系统存储容量达到16GB, 满足海量数据的实时记录需要。
2.3 软件设计
系统的软件设计主要是指FPGA的控制程序设计, 它主要完成LVDS信号的接收以及FLASH芯片的数据写、读、擦除以及无效块检测操作。整个流程如图2所示。
为了实现数据的高速可靠存储, 软件逻辑设计中采用了以下技术:
1) 对启动信号20 ms的脉宽进行多次判断;
每隔5 ms对启动信号进行一次判断, 如果每次都有效, 则进入下一步操作。这样可以防止由干扰引起的误触发, 保证系统的正常运行。
2) 利用FPGA内部块RAM建立一个容量为64 kb的FLSAH无效块信息列表;
由于工艺的缘故, NAND Flash内部存在随机分布的无效块, 为了保证存储数据的有效性, 在写入数据之前需进行无效块检测。系统上电之后首先建立一个64 kb大小的内部RAM, 然后对整个存储介质进行无效块检测, 并将每一块的好坏信息存入RAM中, 建立一个无效块检测信息列表。之后的Flash读、写及擦除操作全部基于该信息列表进行, 这样既可以保证数据的有效操作又提高了数据的写入读出速度。
3) 采用流水线思想对Flash进行写操作;
Flash在进行页编程操作时, 分为两个阶段:数据加载阶段和编程阶段, 编程阶段自动进行, 不需要外部的任何操作, 其典型时间为200μs, 最大时间700μs。按照设计要求存储速率为21.25 MB/s (170 Mbps) , 连续加载写满一页需要的时间为:4 096B/21.25MB/s=192.8μs。则写满7页所需时间为:7×192.8μs=1 349.6μs, 远远大于一页的最大编程时间, 这样就可以采用流水线方式对8片K9KAG08U0M进行写操作。首先对第一片Flash进行数据加载, 加载完成后, 第一片Flash随后进入自动编程阶段;这时接着对第二片Flash进行数据加载, 数据加载完成后, 第二片Flash进入自动编程阶段;依次对八片Flash进行同样的操作, 当第八片Flash完成加载后, 第一片的自动编程结束, 这样又可以重复以上操作, 直至整个数据存储结束[3], 如图3所示。采用这种方式可以大幅度提高数据存储速率。
4) 读写数据时使用了ECC (Error Checking and Correction) 校验技术。
在数据通信的过程中, 由于各种干扰的影响或者个别芯片的读写失败, 会造成传输数据的错误或丢失。为了尽可能降低传输过程中的误码率, 提高存储数据的完整性, 这里使用ECC校验技术来检查恢复错误数据, 保障系统存储数据的可靠性。具体算法分为四个步骤:
(1) Flash写数据时, 同时生成写校验码, 并将其存入当前页的备用存储区间;
(2) 读取Flash数据时, 同时生成读校验码;
(3) 将写校验码与读校验码两者进行异或比较;
(4) 根据异或比较的结果判断是否需要纠错。
3 系统测试及结果分析
为了验证存储系统的可行性和可靠性, 采用地面测试台对其进行了验证分析。其中图4所示是存储器记录的由地面测试台发出的正弦信号曲线, 采样频率20 MHz, 可以看出存储器真实的记录了正弦信号信息, 波形无异常。经过多次测试表明该系统能够完成对高速运动目标运动数据的存储任务, 可靠性较高。
4 结论
本文提出一种高速大容量数据存储系统, 经过测试表明该系统能够实现高速运动目标数据的存储, 其数据存储速率及可靠性满足系统设计任务的要求, 具有很高的实用价值。
参考文献
高速数据采集存储 篇10
随着测试技术的发展, 人们对测试设备的存储速度、存储容量以及通用性有了更高的要求[1,2]。例如在某图像处理系统中, 其红外探测器输出的红外图像的分辨率达到1 280*1 024 (16 bit) , 图像发送的帧频为25帧/s, 其通信接口采用的是Camera Link接口, 传输时钟频率为50 M, 那么, 为获取完成的红外图像数据, 存储设备的突发存储速度需满足达到100 M/s及以上。市场上实现高速海数据存储的设备主要是有传统的大容量机械硬盘, 以及采用大容量闪存芯片构成的存储单元, 最常见的就是固态硬盘。 机械硬盘具有容量大, 成本低等特点, 其容量可达到2TByte, 但因其内部存在机械结构, 不能满足恶劣环境下的测试, 并且其接口的存储速度也有限。而大容量NAND闪存芯片因在读写控制、工号、尺寸以及存储容量等方面具有明显的优势, 被广泛应用在测试领域中的数据存储[3,4,5]。NAND Flash是基于块擦除、页编程和页读取的方式进行工作, 即在每个操作时均有一段时间的“Busy”期, 无法对器件进行任何操作。影响其数据的写入和读出速度[6]。如镁光的MT29F128G08A的单个芯片在其最快的模式5下交替双平面操作极限速度也只可以达到33 MB/s[7]。所以单个Flash芯片的存储速度显然不能满足高速存储的需求。目前实现大容量高速存储的途径除了使用新型大容量、高速的半导体存储芯片外, 就是通过对多个NAND Flash芯片进行并行位扩展和流水线式操作来提高数据的持续吞吐速率以及扩展到合适的存储容量, 其重点则是高速输入数据的调度实现及硬件结构的设计。本文介绍了一种基于FPGA控制的高速存储系统, 以高性能的FPGA器件为核心, 采用通道间高速并行与通道内串行的硬件架构, 并在FPGA内部实现高速数据的调度, 从而实现高速数据存储。
1高速并行化存储结构
为了实现大量数据持续高速存储, 借鉴模块化设计以及流水操作的思路设计一种结构为m×n的NAND Flash存储阵列。充分发挥每一个NAND Flash芯片的存储性能以实现大量数据的持续高速存储。设计采用FPGA作为主控单元, 以FPGA内部丰富的RAM资源进行数据缓冲, 并利用FPGA并行化可重构的优势完成对持续高速数据的调度与分配。
1.1 n片Flash芯片的列扩展
首先利用多片NAND Flash组成的流水线工作模式, 解决了由于NAND Flash芯片本身特性造成的无法持续接收数据的弊端。假设芯片的页编程时间最大为t PROG与接收一页数据的时间最小为tin, 则芯片数n取为t PROG与tin的比值向上取整的结果加1。即:n=floor (t PROG/tin) +1。这样n片NAND Flash组成的流水线可以保证在任何时候都有一个芯片处于空闲状态。流水线随时都可以以芯片最大操作速度 (如100 MB/s) 接收数据。在此基础上继续增加芯片数量将只能提高存储容量, 而无法继续提高存储速率。
1.2 m个流水线通道的行扩展
为了充分发挥每个NAND Flash芯片的工作性能, 利用并行作业流水线操作可以有效提升存储速率的思路, 决定对n片Flash芯片流水线通道进行m行扩展。其中m的数量由实际需求和FPGA内部可用的硬件资源决定。工作的时候由Flash存储阵列的缓存分配以及数据调度机制控制m个通道并行化工作, 以实现存储阵列持续m·100 MB/s速度的可靠存储。因此, 在硬件条件允许的前提下, 可以通过对流水线通道数量的增加与删减实现对整个存储系统写入速度的控制。
图1所示即为m×n的NAND Flash存储阵列。以镁光的MT29F128G08A芯片的基本存储单元, 则阵列的存储容量为 (m ×n) 16 GB可以实现最大持续m ·100 MB/s的数据存储速率。如果受硬件所限, 可以用高速总线对阵列再进行扩展, 以实现更大容量和更高速度的持续存储。本设计具有良好的扩展性和通用性, 可以在不同速度以及容量需求的场合灵活应用。
2高速缓存及并行化调度方法
高速并行化缓存及调度机制的性能直接决定着m ×n的NAND Flash存储阵列的工作效率。FPGA内部含有很多块RAM资源。充分利用FPGA的片内快RAM构成两级缓存FIFO结构, 并利用FPGA可重构性的优势完成相应的调度逻辑。这样的设计可以有效降低硬件设计的复杂性, 减小系统整体的功耗。高速并行化缓存以及调度机制的本质就是要完成数据跨时钟域的变换以高速输入数据的合理分流。
2.1通道间并行化调度
如图2所示, 整个存储阵列在通道间进行缓冲, 主要是实现高速数据向m个并行化工作通道进行合理分流。设计中采用了两级缓存设置, 一级缓存的容量不小于二级缓存的容量。写缓存调度逻辑负责通过一定的调度算法, 以流水线工作形式将数据分流到m个通道的二级缓存中。为防止一级缓存中数据溢出, 缓存中数据分流的速度要比数据输入速度略大。
2.2通道内芯片流水线操作
在单个通道内进行缓冲, 主要是实现流水线形式对各个芯片进行操作, 有效避免页编程时间的存在影响数据的持续高速写入。下面以n片Flash阵列构成的数据存储通道为例, 说明在一个存储通道中的多级缓冲机制。流水线式操作的基本方法是第一个芯片接收完成一页的数据, 进入页编程进入 “Busy”状态后, 将数据送向第二个芯片;当第二组芯片接受完成第二页的数据, 进入页编程进入 “Busy”状态后, 将数据送向第三个芯片;这样依次完成第N个芯片的数据接收后第一个芯片已经全部完成页编程变为“Ready”状态, 可以接收下一次页数据。即通过流水线式循环操作以期实现了存储体系随时可以完成数据的高速持续写入。如图3所示, 展示了4片NAND Flash芯片完成流水操作的示意图。
2.3 FPGA资源消耗
根据上述分析, 在4×4模式的构架下, 给出了在Xilinx ISE13.2环境下调度控制模块综合后的FPGA内部资源的消耗情况 (Spartan 6 XC6SLX 150) 。从下页图4中可以看出, 调度模块主要是使用的是FPGA内部的块RAM资源、LUT、触发器等, 其中块RAM主要是构成了高速缓存FIFO, LUT触发对实现信号的同步和锁存。
3性能测试
根据上述的系统的硬件架构和FPGA内的数据调度方法, 假设每个存储通道上含有4片大容量的NAND Flash, 构建m ×4存储阵列, 其持续写入的最大速度分布如图5所示, 从图中可以看出, 通过增加相应的存储通道, 能够极大的提高系统的整体写入速度。
4结语
随着NAND Flash集成半导体芯片的技术的日益成熟, 存储密度越来越大, 而相应的体积、功耗和成本却越来越小, 因而NAND Flash固态存储会得到越来越广泛的应用。本文以并行的流水机制为核心, 利用NAND Flash构成多通道存储阵列, 并在硬件构建和FPGA内部的高速数据调度机制的性能进行了分析和测试, 其结果表明该方法具有存储速度高, 扩展性强的特点, 可广泛应用于高速海量数据存储需求中。
摘要:为实现并行测试系统高速数据的存储需求, 利用FPGA (Field-Programmable Gate Array) 以并行控制的特性, 内部构建两级多通道并行缓存架构, 设计了一种大幅提高数据存储速度的高效的实现方法。在硬件方面, 利用多片NAND Flash构成多通道存储阵列, 通过在通道间并行操作, 通道内芯片的流水线操作, 结合FPGA内部的高速数据缓存机制来解决数据存储的速度瓶颈。测试结果表明该模块具有存储速度高, 扩展性强等特点, 能广泛应用于高速海量数据存储需求。
关键词:并行测试,高速数据存储,FPGA,NAND Flash
参考文献
[1]Ren Yong-feng, Zhang Wen-dong, Xu Wen-qiang.Video signal recording equipment and key technologies for radar application[J].Wseas transaction on circuits and system, 2006:684-690.
[2]李博.固态硬盘写效率及能耗优化研究[D].武汉:华中科技大学, 2010.
[3]Kang J U, Jo H, Kim J S, et, al.A superblock-based flash translation layer for NAND flash memory[C]//Proc of the 6th ACM Conference Embedded Systems Software, Seoul, Korea, 2006:161-170.
[4]Park S H, Ha S H, Bang K.Design and analysis of flash translation layers for multi-channel NAND flash-based storage devices[J].IEEE Transactions on Consumer Electronics, 2009, 55 (3) :1 392-1 400.
[5]Hyunchul Park, Dongkun shin.Buffer flush and address mapping scheme for flash memory solid-state disk[J].Journal of Systems Architecture, 2010, 56:208-220.
[6]吴洪成, 潘琪.高可靠固态存储模块的实现与应用[J].计算机时代, 2015, 53 (1) :68-71.
原子也能存储数据 篇11
到目前为止,人们仍不清楚需要多少原子才能构建一个稳定、持久的存储位——电脑能够理解的基础信息单元。美国IBM公司以及德国自由电子激光科学中心的研究人员决定从零开始,以单个原子为基础,构建一种磁性存储位。他们使用扫描隧道显微镜,对铁原子进行常规模式排列,6个一列。他们发现,两列就能稳定地储存一个比特,而8对这样的排列就能储存一个字节。
实验中,数据是利用扫描隧道显微镜按比特写入和读取的,所以,这类存储位不可能很快就可以写入整合到硬盘。但是,IBM公司阿尔马登研究中心原子储存首席研究员Andreas Heinrich说,它将能回答一些经典力学体系的基本问题。Heinrich也是一篇介绍这种微型存储位的最新文章的作者。他的团队对这种量子力学到经典力学的过渡很感兴趣。
Heinrich在采访中谈到:“如果面对单个原子,你就要用量子力学来描述它的行为。如果能将单原子体系不断放大,数个铁原子就开始‘相互交谈’,在达到一定临界点后,你就可以忽略它们的量子运动,仅将它们当做经典磁性结构来考虑。”实验证明,这个临界点大约是12个原子。
“许多人认为,我一定会用量子力学体系去描述这些结构。这是最让我感到惊讶的事情。”Heinrich继续说道。
在最小尺度上,量子效应会使储存信息模糊不清。Heinrich表示,举例来说,利用6个原子的存储位会转换磁性状态,从0到1,每秒大约1000次。这对于数据储存来说太过于频繁,不可用于存储数据。而8个原子则每秒转换状态1次。但是,12个原子就极少会转换其状态,可以用于储存数据,而外部磁场(在本文介绍的实验中,即扫描隧道显微镜)的影响会改变它们的状态。纳米磁体只能在5开尔文摄氏度或者零下450华氏摄氏度下保持稳定。
该论文的另外一个突破就是,存储位的反磁性。这标志着反磁性首次被应用于数据储存。铁磁体在大部分现代数据存储和其他方面得以应用,它利用铁原子间的磁性相互作用,使所有原子朝一个方向排列。如此便创造出一个磁场,可以读取出来。
然而,在最微型的尺度上,这种做法却成了一个问题。因为,紧密压缩的磁性存储位可以彼此相互作用,这成为人们降低数据储存系统尺度的限制。但是,新型的12原子存储位使用反磁性,原子以相反方向排列,这意味着它们以相反的方向旋转。Heinrich说,铁原子被氮原子隔离开来,利用扫描隧道显微镜诱导它们以不同方式旋转。这可以使它们之间压缩得更紧密一些,大大提高了储存密度。
研究人员对存储位的磁性状态进行了5次转换,储存“think”这个单词的ASCII 码。“think”是“蓝色巨人”IBM公司的一个口号。
Sebastian Loth是这篇论文的首席作者。他在2011年9月份离开IBM公司,到德国自由电子激光科学中心工作。他说,12原子存储位在量子尺度上对经典计算处理提出了很多新问题。
Loth说道:“我们可以利用这个特性去研究,量子力学究竟是如何起作用的。是什么将量子磁体与经典磁体区分开来?在量子力学与经典力学的交界处,磁体特性如何?这些令人兴奋的问题很快就会有答案了。”
撰稿:Rebecca Boyle
一种并行高速读取的存储器模型 篇12
在现有计算机系统中,主存储器一般采用DRAM(动态随机存储器)制造,其容量提高较快,但读取速度和CPU相比,仍存在着数量级的差距[1,2,3,4,5]。为解决高速CPU与低速内存之间的速度差异,改善数据读取的“瓶颈”问题,提高整机系统性能,本文提出一种并行高速读取的存储器模型,以实现高速读取成组连续数据。
1 存储器基本模型
主要由以下几个部分组成。
如图1所示,对DRAM阵列的访问有两组相互对称并各自独立的读写控制电路(图中L表示左端口信号,R表示右端口信号)。
●DRAM阵列:用于暂存数据,其容量为n×m×k位,即n行,每行m列,每列包含k位。
●行地址和刷新控制:提供行地址选通信号RAS和DRAM阵列刷新信号Ref。
●行地址锁存器:在行地址和刷新控制信号有效时保存地址总线传送过来的地址。
●最后读出行地址锁存器:保存地址总线上一周期传送过来的行地址。
●10位比较器:当新的地址传送过来后,和最后读出行地址锁存器中的地址进行比较,判断是否相同。
●列地址锁存器:在列选通信号CAS有效时接收列地址。
●m×位SRAM(cache):小容量高速缓冲存储器cache,用于接收DRAM中被选中的某一行。
●I/O控制和数据锁存器:向数据总线D0~Dk-1输出数据,或者接收来自数据总线D0~Dk-1的数据。
●读出放大和列写选择:当DRAM阵列中某一行被选中,该行m×k位数据被选通到该读出放大单元,每个逻辑电平被鉴别而且锁存和重写,并被送到SRAM (cache)阵列。
●行译码器:接收行地址并进行译码,对n×m×k位DRAM阵列进行行选择。
●列译码器:接收列地址并进行译码,对m×k位SRAM阵列选择某一位组(含k位数据)。
●判别逻辑:判断左右地址是否冲突,若冲突则决定首先执行左地址还是右地址操作。
2 基本工作原理
2.1 猝发式读取
猝发式读取是指中央处理器访问存储器时,提供不变的行地址和连续变化的列地址,存储器相应位组将连续读出。在传统的EDRAM芯片中,由于集成了动态存储器DRAM和静态存储器SRAM,通过猝发式方式有助于高速读取数据[6,7,8,9,10]。
在本模型中,由于在DRAM阵列存储器的基础上集成了两个SRAM实现的小容量高速缓冲存储器(cache),从而使RAM的性能得到了显著提高。当进行第一次读操作时,行选通RAS信号有效,地址A0~Ai(i≥log2n)被同时送到行地址译码器和最后读出行地址锁存器,行译码器接收行地址A0~Ai,完成译码操作,对DRAM阵列进行行选择,选中其中某行的m×k位并经内部总线送至读出放大和列写选择部件,经由该部件将数据送至m×k位SRAM存储器。接着列选通信号CAS有效,地址A0~Aj(j=log2m-1)接收列地址并将其送到列地址译码器,经译码后选中SRAM中某k位数据,经由D0~Dk-1送至数据总线上。
当进行第二次读操作时,新的行地址A0~Ai与最后读出行地址锁存器的内容在(i+1)位比较器中进行比较。若比较相符则SRAM命中,由输入的列地址从SRAM中选择某一位组(含k位数据)送出至数据总线。若比较不相符,则需要驱动DRAM阵列,更新SRAM和最后读出行地址锁存器的内容。可见,以SRAM保存一行内容的读取方法,有利于进行成组传送,充分体现了猝发式读取的特点。
2.2 双端口高速存储原理
双端口存储器中由于使用了两组相互独立的读写控制线路,可以进行并行的独立操作,同样也能够使存储器高速工作[11]。当左地址(A0~Ai)L≠右地址(A0~Ai)R时,不会出现冲突;当左地址(A0~Ai)L=右地址(A0~Ai)R时,则出现冲突。对此设置了BUSY标志,判别逻辑电路决定对哪个端口先进行读写控制,而对另一个被延迟的端口设置BUSY有效标志,直到优先端口完成读写操作后,才将被延迟端口的BUSY标志复位。
2.3 双端口猝发式存储器成组连续数据传送算法
使用该模型读取DRAM所有数据时,假设左端口地址访问DRAM偶数行地址,右端口地址访问DRAM奇数行地址,DRAM同时将相邻2行m×k位数据送到左SRAM和右SRAM进行吐出,基本算法如下:
步骤1:DRAM接收左右输入行地址并同时选中第0、1行m×k位数据分别输出至左右SRAM;
步骤2:左右SRAM同时接收DRAM送来的第0、1行数据后,连续吐出k位数据,共操作m次;
步骤3:步骤2操作的同时,DRAM开始将第2、3行m×k位数据送到左右SRAM以备接收,SRAM完成m次数据吐出后,立即接收第2、3行数据并开始连续吐出k位数据。
以下操作依次类推直到完成n行数据读取。
3 定量分析
3.1 流水线时空分析图
存储器工作任务为DRAM操作和SRAM操作,D:从DRAM读取相邻两行m×k位数据并输出;S:SRAM接收该行并吐出k位数据(SL、SR表示左右SRAM)。图2为流水线时空图(该图表示读取4行m×k位数据,纵坐标U表示执行任务,横坐标T表示时间)。
由图2看出,SRAM仅在DRAM读取第0、1行数据时等待,其余时间内始终处于满载的工作状态,左右端口并行吐出数据,充分体现出双端口猝发式读取的优点。
3.2 成组连续数据读取时间估算
现忽略读出放大和列写选择电路以及I/O控制和数据锁存器时间,分别估算传统DRAM、一般猝发式DRAM、双端口存储器和双端口并行猝发式存储器读取DRAM中的n×m×k位数据(n>=2)所需时间,设DRAM完成一次读取时间为TD,其行读取时间为TDL(TD>TDL),SRAM完成一次读取时间为TS,且有(1)TD>TS;(2)SRAM完成m次数据吐出时间大于TD。传统DRAM完成读取时间估算:
一般猝发式DRAM完成读取时间估算:
一般双端口存储器完成读取时间估算(不存在地址冲突情况下):
双端口猝发式存储器读取时间估算:
4 仿真实验
为方便观测比较,在实验中使用Visual Basic 6.0开发仿真程序,选择二进制文件作为DRAM并存储n行512×2位数据(数据可用0或1的任意组合表示),比较上述四种存储器的数据读取时间。设置三个定时器工作,DRAM定时器Timer1间隔时间interval为TD=2(ms),定时器Timer2间隔时间interval为TDL=1(ms),SRAM定时器interval为TS=1(ms),其它逻辑部件工作时间忽略。编写时间统计函数f_totaltime (Dim index As Integer),统计各类存储器工作时间,index取值范围1~4,分别表示四类存储器。现以读取n行512×2位数据(n依次取2、10、100、500、1000)为例,计算所需时间如表1所示。
由表可看出,随着行数n的提高,双端口猝发式存储器读取总时间始终最少,速度保持最快。
5 结论
通过结合一般猝发式存储器和双端口存储器的特点,提出该模型并对其功能和成组连续数据读取时间进行了分析,最后通过仿真实验验证了其正确性和有效性,为解决高速CPU与低速内存之间的速度差异问题提供了一种较好的方法,所形成的体系结构适用于高速存取数据的场合。
参考文献
[1]魏素英,彭洪,林正浩.高速缓冲存储器的设计与实现[J].现代电子技术,2005(18):86-88.
[2]白中英.计算机组成原理[M].科学出版社,2003:80-105.
[3]姚燕南,薛钧义.微型计算机原理[M].西安电子科技大学出版社,2002:45-70.
[4]Mano M M.Computer System Architecture,3rd ed.Prentice Hall,清华大学出版社,1997.
[5]Stallings W.Computer Organization and Architecture:designing for per- formance,4th ed.Prentice Hall,清华大学出版社,1997.
[6]Rivers J A,Tyson G S,et al.On high-bandwidth data cache design for multi-issue processors.The 30th Symposium on Mi.crnarchitecture,Tri- angle Park,North Carolina,1997.
[7]Alexander T,Kedem G.Distributed prefetch-huffer/cache design for high performance memory systems.In Proc.of the 2nd Int'l Symposium on High-Performance Computer Architecture.Piscataway:IEEE Press, 1996:254-263.
[8]Rixner S,Dally W J,Kapasi U J,Mattson P,Owens J D.Memory access scheduling.In:Proc.of the 27th Annual Int'l Symposium.On Comput- er Architecture.IEEE/ACM Press,2000:128-138.
[9]Iyer S,Kompella R R,McKeown N.Analysis of a memory architecture for fast packet buffers.In:IEEE High Performance Switching and Rou- ting.2001:368-373.
[10]Wang P,Jin D P,Zeng L G.Analysis of a tri-stage memory array for high-speed packet buffers.In:Proc.of the SPIE,Vol.5625:873-883.
【高速数据采集存储】推荐阅读:
高速数据存储07-27
高速数据采集系统10-07
高速数据采集设备论文05-26
多通道高速数据采集08-02
高速数据传输09-28
高速数据处理系统07-28
高速数据光纤通信09-19
基于DSP和光缆通信的远程高速数据采集及处理系统的设计与应用10-24
数据挖掘数据存储07-01
数据存储与数据管理07-05