CN100481043C - 用于处理输入/输出命令的方法、系统和程序 - Google Patents
用于处理输入/输出命令的方法、系统和程序 Download PDFInfo
- Publication number
- CN100481043C CN100481043C CNB038226812A CN03822681A CN100481043C CN 100481043 C CN100481043 C CN 100481043C CN B038226812 A CNB038226812 A CN B038226812A CN 03822681 A CN03822681 A CN 03822681A CN 100481043 C CN100481043 C CN 100481043C
- Authority
- CN
- China
- Prior art keywords
- data
- request
- address
- promoter
- target device
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
- 238000000034 method Methods 0.000 title claims abstract description 27
- 230000005540 biological transmission Effects 0.000 claims description 26
- 230000015572 biosynthetic process Effects 0.000 claims description 10
- 230000004044 response Effects 0.000 claims description 10
- 238000012545 processing Methods 0.000 claims description 7
- 238000013500 data storage Methods 0.000 claims description 4
- GOLXNESZZPUPJE-UHFFFAOYSA-N spiromesifen Chemical compound CC1=CC(C)=CC(C)=C1C(C(O1)=O)=C(OC(=O)CC(C)(C)C)C11CCCC1 GOLXNESZZPUPJE-UHFFFAOYSA-N 0.000 claims 1
- 238000004891 communication Methods 0.000 abstract description 5
- 239000003999 initiator Substances 0.000 abstract description 4
- 238000000926 separation method Methods 0.000 description 34
- 238000005516 engineering process Methods 0.000 description 6
- 230000003139 buffering effect Effects 0.000 description 4
- 230000000977 initiatory effect Effects 0.000 description 4
- 238000012986 modification Methods 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 239000000835 fiber Substances 0.000 description 2
- 238000007726 management method Methods 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 230000000712 assembly Effects 0.000 description 1
- 238000000429 assembly Methods 0.000 description 1
- 239000000872 buffer Substances 0.000 description 1
- 230000000295 complement effect Effects 0.000 description 1
- 238000012217 deletion Methods 0.000 description 1
- 230000037430 deletion Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000002452 interceptive effect Effects 0.000 description 1
- 230000001902 propagating effect Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 230000011664 signaling Effects 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 239000012536 storage buffer Substances 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/20—Handling requests for interconnection or transfer for access to input/output bus
- G06F13/28—Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Bus Control (AREA)
- Input Circuits Of Receivers And Coupling Of Receivers And Audio Equipment (AREA)
- Information Transfer Systems (AREA)
- Programmable Controllers (AREA)
Abstract
本发明提供的是一种用于处理输入/输出请求的方法、系统和程序。总线使得与发起者、目标设备和设备控制器的通信能够进行,其中所述设备控制器访问所述目标设备以执行指向所述目标设备的I/O命令。接收L/O请求命令以访问所述目标设备。发起者被配置为在总线上向设备控制器的预定地址窗中的一个存储器地址发送至少一个数据请求。使得设备控制器能够要求对所述总线上来自所述发起者的、指向所述预定地址窗中的所述存储器地址的所述数据请求的权利,以执行针对所述目标设备的所述数据请求。
Description
技术领域
本发明涉及用于处理输入/输出命令的方法、系统和程序。
背景技术
图1图示了现有技术的存储设备体系结构,其中外部总线主控(master)2可以在外设部件互连(PCI)总线10上,通过串行高级技术配件(SATA)控制器8来访问一个或多个盘4、6中的数据,其中所述外部总线主控2例如是网络适配器(例如光纤信道控制器、以太网控制器等),所述PCI总线10可以采用外设部件互连(PCI)协议或PCI-X协议。在现有技术的系统中,在外部总线主控2和SATA控制器8之间传输的数据一般首先要流经存储器控制器12和存储器14,所述存储器14例如是静态动态随机访问存储器(SDRAM)。举例来说,当外部总线主控2想要将数据写入盘4、6时,外部总线主控2可以将所述数据传输到存储器14。然后,SATA控制器8可以读取在写请求中被发送给存储器14的数据,并将该数据写入盘4、6。对于读操作,SATA控制器8一般将所请求的读数据传输到存储器14,并且外部总线主控2一般从存储器14访问所述读数据。控制器2和8可以包括直接存储器访问(DMA)引擎,它们通过存储器14执行两者之间的实际数据移动操作。
此外,在PCI-X的现有技术中,存储器缓冲器14使得在外部总线主控2和SATA控制器8之间的读突发(burst)和写突发成为可能,这是因为当前的SATA控制器必须用作总线主控来处理突发数据传输。在“PCI局部总线规范”,2.3版本(PCI特殊兴趣小组,2002年3月)和“PCI局部总线规范的PCI-X附录”,版本1.0a(PCI特殊兴趣小组,2000年7月)的公开文本中描述了PCI和PCI-X协议的进一步细节。
使用存储器14组件来缓冲在控制器2和8之间传输的数据产生了额外的等待时间和延迟,这是因为在将存储器14用作中间缓冲器时,引入了额外的读操作和写操作。出于这些原因,本领域中需要一种改进的在总线体系结构中的控制器之间传输数据的技术。
附图说明
现在参考附图,其中在整个附图中,相同的标号代表对应的部分:
图1图示了本领域中公知的一种用于访问存储设备中的数据的总线体系结构;
图2图示了根据本发明实施方案的一种用于访问存储设备中的数据的总线体系结构;
图3图示了根据本发明实施方案的盘控制器的配置寄存器;
图4和5图示了根据本发明的实施方案用于处理I/O请求的逻辑;
图6图示了根据本发明的实施方案进行配置的寄存器;
图7图示了根据本发明的实施方案配置设备控制器的逻辑;
图8图示了根据本发明的实施方案配置外部总线主控的逻辑;
图9图示了本发明的实施方案所使用的直接存储器访问(DMA)描述符表;
图10图示了根据本发明的实施方案处理DMA描述符表的逻辑;
图11图示了根据本发明的实施方案,用于访问存储设备中的数据的一种可替换的总线体系结构;
图12图示了根据本发明的实施方案,在读请求处理期间被排入队列的一个请求中的字段;
图13图示了根据本发明的实施方案,将数据返回给读请求的逻辑;以及
图14图示了根据本发明的实施方案如何处理读请求的一个实施例。
具体实施方式
在以下描述中,参考作为其中一部分的附图,这些附图图示了本发明的几种实施方案。可以理解,也可以使用其他实施方案,在不偏离本发明的范围的情况下可以做出结构或操作上的改变。
在外部总线主控和盘控制器之间直接传输数据请求
图2图示了一种计算环境,其中可以实现本发明的多个方面。诸如盘阵列一类的存储系统50(例如,盘组(JBOD)、冗余独立磁盘阵列(RAID)阵列等)包括外部总线主控52,这是一个能够向盘控制器54发起存储器请求的外部总线主控,所述盘控制器54管理对盘60a...60n的访问。外部总线主控52包括直接存储器访问(DMA)引擎56。盘控制器54包括直接存储器访问(DMA)引擎58,用于处理对控制器54的I/O操作。盘控制器54可以实施诸如SATA、ATA、小型计算机系统接口(SCSI)、集成驱动电路(IDE)等的盘访问协议。盘控制器54使得对一个或多个盘驱动器60a...60n的访问成为可能。盘控制器54包括缓冲器64,从盘60a...60n中读出的数据以及将被传输到盘60a...60n的写数据在被传输到发起者(initiator)之前被缓冲在缓冲器64中。盘控制器54可以包括用于将缓冲器64中的数据写入盘60a...60n的组件,在盘控制器54包括SATA控制器的实施方案中,所述组件例如是串行引擎。外部总线主控52可以包括网络适配器,其从网络上指向盘60a...60n的设备接收I/O请求。
I/O处理器(例如英特尔公司的IQ80310处理器)70管理系统操作,并且编程I/O控制器DMA引擎56以在指定的地址上读写数据并且执行其他与I/O管理有关的操作。在某些实施方案中,I/O处理器70与PCI总线72相连,以执行从主机处理器接收到的I/O命令,所述PCI总线72使得能进行外部总线主控52、盘控制器54和I/O处理器70之间的通信。外部总线主控52、盘控制器54和I/O处理器70被实现在一个或多个通过总线72相互通信的PCI附加卡上。例如,I/O处理器70和盘控制器54可被实现在同一个PCI卡上,而外部总线主控52可被实现在诸如网络适配器卡的不同PCI卡上。总线72可以遵循PCI协议或PCI-X协议或者本领域中公知的其他通信协议。在PCISIG发表的公开文本“PCI-X规范,1.0a版本”中描述了PCI-X协议的更多细节。
在外部总线主控52包括网络适配器卡(例如光纤信道适配器)的实施方案中,I/O处理器70可以通过适配器接收I/O命令,然后配置外部总线主控52和盘控制器54来按如下所述的方式传输数据。
在某些实施方案中,盘控制器54被配置为具有包括某一地址范围的地址窗,所述范围内的地址可以被随机地访问,并且可被用来在外部总线主控52和盘控制器缓冲器64之间直接传输数据。所述地址窗是这样一个范围内的地址,这些地址在被请求时使得盘控制器54要求对总线72上的请求的访问权,并且直接响应于外部总线主控52请求。外部总线主控DMA 56可以随机或按顺序来利用所述地址窗中的地址。外部总线主控DMA 56因而可以通过访问地址窗中的存储器空间,向盘推拉数据。此外,对于任何请求,DMA 56可以使用所述窗中的任何地址来向盘控制器54发送所述请求。外部总线主控52中的DMA引擎56可被I/O处理器70配置为使用所述地址窗中的地址与盘控制器54直接接口。
图3图示了盘控制器52配置寄存器80,I/O处理器70写所述寄存器,以配置总线72进行I/O操作。可由I/O处理器写入配置寄存器80的设置包括:
地址窗82:一定范围的地址,诸如外部总线主控52的发起者可以使用这些地址来与盘控制器54以及其中的缓冲器64直接通信。
DMA模式84:指示DMA引擎是否被用于I/O操作。
读写操作(OP)86:指示所接收的请求是否将被处理为对盘60a...60n的读操作或写操作。
突发从属模式88:指示发起者是否将按突发从属模式来运行,使得盘控制器能够响应于来自外部总线主控52的突发存储器请求。
图4图示了根据本发明的实施方案,为了将数据写入盘60a...60n而在外部总线主控52、盘控制器54和I/O处理器70之间实施的交互操作。可以由I/O处理器70来执行框100和102。在框100,I/O处理器70对外部总线主控52进行编程,以从外部源取得数据。例如,在I/O处理器70包括主机总线适配器的实施方案中,外部源可以包括提交指向盘60a...60n的I/O写请求的外部主机。I/O处理器70还对外部总线主控DMA56进行编程(在框102),以在总线72上用突发大小的分组将所取得的数据传输到盘控制器54的地址窗中的地址。I/O处理器70对盘控制器54配置寄存器80进行编程(在框104),以禁用盘控制器54中的DMA模式84,并通过设置字段88使得突发模式能够进行。
响应于被配置(在框100和102),外部总线主控52可以接收(在框120)从外部源取得的数据。框120-124图示了外部总线主控52在被I/O处理器70配置时所实施的操作或者逻辑。外部总线主控52随后划分(在框122)所述数据以写入突发大小的块,以通过总线72传输到盘控制器54地址窗中的地址。DMA引擎56然后将包括取得数据的更小块的写请求传输到(在框124)所述地址窗中的某个地址。在某些实施方案中,例如PCI-X的实施方案中,DMA引擎56以突发模式(利用存储器请求)来传输数据,以实现更大量数据的传输。
框140-144图示了由盘控制器54执行的操作,用以处理到盘60a...60n的对地址窗的写操作。在框140,盘控制器54要求对通过总线72被传送到地址窗中的某个地址的写请求的访问权。因为DMA模式84被禁用,并且在操作字段86中指示的是写,所以盘控制器54(在框142)根据缓冲方案将所接收的数据加入到缓冲器64中,所述缓冲方案可以是先入先出(FIFO)。盘控制器54然后将所缓冲的数据传输(在框144)到目标盘60a...60n。如上所讨论,盘控制器54可以包括用于将缓冲器64中的写数据传输到盘60a...60n的串行引擎。
图5图示了根据本发明的实施方案,由外部总线主控52、盘控制器54和I/O处理器70执行来将数据从盘60a...60n传输到外部总线主控52的操作。框200和202图示了由I/O处理器70执行来配置存储系统50进行读操作的操作,所述读操作可能是由外部主机系统发起的,并且通过网络被传送到外部总线主控52,所述I/O处理器70包括主机总线适配器。在框200,I/O处理器70配置盘控制器54配置寄存器80以在字段84中禁用DMA模式并在字段88中使得突发模式能够进行。I/O处理器70还配置(在框202)外部总线主控52DMA引擎56,以请求在盘控制器54地址窗中的指定量的数据。在PCI-X实施方案中,I/O处理器70可以配置外部总线主控52,以发出突发读请求,其中每个请求包括所述地址窗中的一个地址以及将读取的某一字节数的数据,例如512字节。地址窗包括不可预取的区域,因为一旦从盘控制器54的缓冲器64中读取了数据,该数据就被破坏了(被来自盘60a,60b...60n的新数据取代)。
框210、212和214图示了由外部总线主控DMA引擎56来执行提交读请求的操作。在框210和212,DMA引擎56构造对盘控制器54的地址窗中的地址的读请求,所述读请求具有如I/O处理器70所设置的突发块大小。然后,DMA引擎56将所述读请求连同传输长度的字节数一起传输(在框214)到所述地址窗。
框220、222、224、226和228图示了由盘控制器54来执行处理突发读请求的操作。在框220,盘控制器54从目标盘60a...60n获取数据,并将所述数据加到(在框222)缓冲器64的末尾,在FIFO的实施方案中是紧跟着最近加入的数据。独立于缓冲来自盘60a...60n的数据,盘控制器54可以在总线72上检测(在框224)对地址窗82中的某一地址的请求,并且要求(在框226)对所述请求的权利。响应于读请求,盘控制器54可以将在缓冲器64顶部的数据,即在该缓冲器中最旧的数据传输(在框228)到总线,以返回给事务的发起者,即外部总线主控52。在某些实施方案中,无论在地址窗中所使用的实际地址如何,都从缓冲器64中传输先入(first in)的数据。此外,在不可预取的实施方案中,一旦从缓冲器64中访问了数据,那么当来自盘60a...60n的下一数据被访问时,所述数据就被覆写。
所描述的实施方案因而提供了这样一种技术,该技术允许发起者(例如外部总线主控52)向盘控制器54中预先定义的地址窗传送突发数据请求,以使盘控制器54作为从控(slave)来使用,并将写数据传输到目标盘60a...60n或者从缓冲器64返回读数据。利用所描述的实施方案,外部总线主控可以与ATA或SATA控制器一类的盘控制器直接进行通信,而无需如图1所示的中间存储器设备。此外,所描述的实施方案允许外部总线主控直接向盘控制器(例如ATA控制器)突发数据,并且直接从盘控制器突发数据,其中盘控制器工作于突发从控模式。按照这种方式,所描述的实施方案大大减少了处理I/O命令所需的等待时间和处理器周期。此外,被顺序访问的数据(例如来自盘驱动器的数据流)可以被映射到随机访问空间(存储器空间)。
配置用于数据传输操作的地址窗
在系统50采用PCI-X协议的实施方案中,读请求可以作为分离(split)读请求来传输。在分离读请求中,起到总线主控作用的外部总线主控52的实施方案向盘控制器54的地址窗中的存储器地址发送读请求,所述盘控制器54在接收所述请求时作为总线从控来使用。当所请求的数据可用时,盘控制器54的实施方案接着用作总线主控,以通过总线72将所请求的数据返回给外部总线主控52。因为一开始请求数据的外部总线主控52在所述数据变为可用前不必连续不断地向盘控制器54请求所述读数据,所以分离读请求保留了总线带宽,这正是PCI协议中具有延迟读事务的情形。
对盘控制器54的I/O请求的大小被限制为被分配给盘控制器54的存储器空间的大小。举例来说,如果用于盘控制器54的存储器空间或地址窗是1兆字节(Mbyte),那么对盘控制器54的实施方案的I/O请求的最大字节大小最多就是1兆字节。在所描述的实施方案中,可以与盘控制器54所执行的任何I/O请求的大小无关地来配置地址窗。
图6图示了包括在外部总线主控52中的配置寄存器250,该寄存器250包括最大存储器读字节数字段252和最大未完成分离事务字段254,所述最大存储器读字节数字段252指示了任何未完成的分离读请求的最大字节大小,所述最大未完成分离事务字段254指示了在外部总线主控52处未完成的分离读请求的最大数目。因此,当所有的请求都未完成(即尚未结束)时外部总线主控52可以访问的地址空间的最大量(这里被称为“最大可分配地址空间”)包括字段252和254中的值的相乘。
在某些实施方案中,可以指向盘控制器54的地址窗的未完成分离读请求的最大数目等于所述地址窗的大小除以最大分离读请求大小。将未完成的所请求字节数限制为地址窗的大小,这确保了多个未完成的分离读请求将不会指向地址窗中的同一存储器地址。如果多个未完成的分离读请求都指向同一存储器地址,那么外部总线主控52的实施方案就不能将所返回的数据与具体的请求相匹配。
在当前的实施方案中,为盘控制器54的存储器定义的地址窗可以扩展到几吉字节(gigabytes)。然而,系统50的设计者可能想要根据盘控制器54以及盘控制器54将运行其中的系统50的特性,将地址窗设置为小一些的量。在某些实施方案中,基于地址窗的大小来配置最大未完成分离事务字段254,使得最大未完成分离事务字段254被设置成地址窗的大小(地址窗大小的配置可以独立于关于外部总线主控52的分离读能力的任何考虑)除以最大存储器读字节数字段252的结果。按照这种方式,来自外部总线主控52的最大未完成分离读请求在任何给定的时刻都不会使用比盘控制器54中所提供的更多的地址。这确保了在地址窗中没有一个存储器地址将被使用在并发的多个未完成分离读请求中。换言之,外部总线主控52将不会再次使用先前使用过的地址,直至对所述再次使用的地址的先前请求已经完成。否则,如果盘控制器54使用地址窗中的同一存储器地址接收到多个分离读请求,那么盘控制器54的实施方案将无法确定外部总线主控52发起分离读请求的顺序。
图7图示了在I/O处理器70中实施的、用于在初始化(例如系统启动或重新启动)期间配置外部总线主控52 PCI寄存器的逻辑。一旦开始配置例程(在框300),I/O处理器70就(在框302)将用于盘控制器54的地址窗配置成对于指向盘控制器54的操作而言预定的最佳大小。地址窗可被配置在盘控制器54的PCI-X配置寄存器中。外部总线主控52中的最大存储器读字节数252寄存器被设置(在框304)为预定值,该值是所提交的分离读请求的最大大小。最大未完成分离事务254被设置(在框306)为地址窗字节大小除以最大存储器读字节数252的整数结果。如果相除的结果不是整数,则最大未完成分离事务254的实施方案包括该除法结果的整数部分。然后,I/O处理器70可以执行额外的(在框308)配置操作。在配置了地址窗和外部总线主控寄存器250(图6)之后,建立起到盘控制器54的地址窗,以允许数据在外部总线主控52之间直接传输,而无需经过总线72上的外部存储器设备。
图8图示了在I/O处理器70中实施的、用于配置外部总线主控52和盘控制器54来处理提交给外部总线主控52的读请求的逻辑。一旦接收到(在框350)具有传输大小的I/O请求,I/O处理器70就将基地址设置(在框352)为地址窗中的首地址,并且将剩余的地址窗设置(在框354)为地址窗字节大小。剩余传输大小变量被设置(在框356)为所接收的I/O请求的传输大小。I/O处理器70然后在描述符表中加入(在框358)描述符条目,所述描述符表定义了外部总线主控DMA 56执行的操作。图9图示了具有多个条目402a...402n的描述符表400,其中每个条目包括条目号404a...404n、作为请求所指向的存储器地址的地址406a...406n、以及指示了包含在对存储器地址406a...406n的请求中的字节数目的字节数408a...408n。条目被加入一个列表,该列表将基于先入先出(FIFO)来处理。如果(在框360)剩余地址窗大小是0,意味着所述窗中的所有地址原先都被用在先前的描述符条目中,那么剩余地址窗被设置为(在框362)地址窗字节大小。用于地址条目402n的地址406n被设置(在框364)为基地址。如果(在框360)剩余地址窗不是0,则I/O处理器70将地址条目402n中的地址406n设置(在框366)为与紧邻的前一个条目402n-1中的字节数相加后的地址。
从框364或366出发,I/O处理器70将用于所加入条目402n的字节数408n设置(在框368)为一个不超过剩余地址窗或剩余传输大小的字节数目。然后,从剩余地址窗和剩余传输大小两者中减去(在框370)用于所加入条目402n的字节数408n。如果(在框372)剩余传输大小等于0,即在所接收的I/O请求中不再有需要读取的字节,那么I/O处理器70(在框374)向盘控制器54发送命令,以对盘60a...60n进行访问,并将在I/O事务中请求的数据存储在缓冲器64中。I/O处理器70还(在框376)发信号通知外部总线主控DMA56发出用于被加入到DMA描述符表400中的条目的读请求,以访问将由盘控制器54收集起来并存储在缓冲器64(图2)中的数据。如果(在框372)剩余传输大小大于0,即在所接收的I/O请求中还有必须处理的字节,则控制前进到框358,以向描述符表中加入另一个条目。
在图8的逻辑下,在描述符表400中所指示的条目可以是不同字节数大小的。在某些实施方案中,I/O处理器70可以将外部总线主控52读请求大小配置为一个与在描述符表条目402a,402i...402n中的字节数大小408a,408i...408n无关的值(例如512字节)。在某些实施方案中,条目的字节数408a,408i...408n不可以超过地址窗的大小。在这些实施方案中,盘控制器54的地址窗必须被设置为能够容纳最大数目的未完成读请求254(图6)的大小,其中每个未完成的读请求最多具有与配置用于分离读请求的最大读字节数252相等的字节数大小。举例来说,如果最大未完成请求254是4,而最大读字节数252是1千字节(kb),那么地址窗的大小至少必须有4千字节。然而,每个描述符条目402a,402i...402n都可以具有4千字节的字节数,即地址窗的大小。在这种情况下,外部总线主控52在处理定义了一个其字节数408a...408n大于最大读字节数252的请求的描述符条目402a...402n时,会将在本实施例中等于4千字节的描述符请求划分为不超过最大读字节数252,即1千字节的请求。按照这种方式,在描述符条目402a...402n中所指示的字节数408a...408n(图9)将与最大读字节数252无关,反之将受到地址窗大小的限制。因此,在这些实施方案中,描述符条目402a...402n的字节数408a...408n不可能超过地址窗的上限。
图10图示了在DMA引擎56中实施的、用于根据图8的逻辑来处理由I/O处理器70生成的DMA描述符表400的逻辑。响应(在框450)于来自I/O处理器70的、用以开始操作的信号,DMA56将未完成分离请求变量的数目设置(在框452)为0。然后,DMA56对DMA描述符表400中的每一个条目i执行从框454到470的循环,其中i等于1到n。如果(在框456)条目i的字节数408i超过了最大读字节数252(图6),则DMA引擎56将条目i中的请求划分(在框458)为每一个都不超过最大读字节数252的多个分离读子请求,以从地址窗中由条目i的请求所访问的部分中读取顺序的地址。在处理描述符表400中的下一条目之前,每一个子请求都以和顺序的描述符条目一样的方式来处理。
从框456或458的否分支开始,如果(在框460)未完成分离请求的数目没有超过在配置寄存器250中所指示的最大未完成分离事务254,即可以发出更多的分离读请求,则DMA 56向提供给条目402i的存储器地址406i发送(在框462)用于条目402i的读请求或者子请求之一。未完成分离请求变量递增(在框464),并且控制(在框470)后退到框454,以处理DMA描述符表400中的下一条目。如果(在框460)最大可能数目的分离请求都是未完成的,那么DMA 56等待(在框466)一个分离请求完成。在完成了所述分离请求后,DMA 56将未完成分离请求变量递减1(在框468),并且前进到框458以发送DMA描述符表400中的第i条目中的下一读请求。
利用所描述的实施方案,用于盘控制器54的地址窗可以被设置成任意大小,而与在外部总线主控52处接收到的I/O事务的大小无关。基于已配置的地址窗,I/O处理器的实施方案确定外部总线主控DMA 56可以提交的最大数目的未完成分离读请求,以便处理所接收的大于所述地址窗的I/O事务。通过设置最大未完成分离事务254,以不让未完成分离请求的字节数目超过地址窗中的字节数目(其实施方案需要再次使用地址窗中的地址),I/O处理器70确保盘控制器54可以确定请求被发起的顺序并且将所请求的数据返回给正确的请求。按照这种方式,外部总线主控52就可以确信与从盘控制器54返回的数据相关联的读请求。
将数据返回给读请求
图11图示了图2中所示的系统50的可替换实施方案,其中图11中的系统550中的组件552、554、556、558、560a...560n、564、570和572可以包括和图2中相同的组件52、54、56、58、60a...60n、64、70和72。此外,图11中的系统500包括位于外部总线主控552和连接于盘控制器554的总线572之间的桥574。另一条总线576将外部总线主控552连接到桥574。在PCI和PCI-X的实施方案中,诸如桥574的桥装置可以相对于初始的发起者(例如外部总线主控552)发出读请求(例如分离读请求)的顺序,以乱序转发所述读请求。这可能导致桥574在较早发送的请求之前转发较后发送的读请求。
在上述实施方案中,盘控制器554从缓冲器564返回响应于对地址窗中的某一地址的请求而从盘560a...560n读取的数据。如果外部总线主控552向地址窗中的顺序地址请求顺序的数据,那么外部总线主控552预期所述数据按照原先生成所述请求的顺序被返回给顺序的请求。然而,如果盘控制器554将数据从缓冲器564返回给对某一地址的请求,而该请求是在还未处理的对先前地址的请求之后,那么盘控制器554可能返回乱序的数据。举例来说,PCI桥和PCI-X桥可能转发乱序的请求。在这种情况下,如果盘控制器554对按照发出请求的依次顺序的乱序所接收到的读请求做出响应,则盘控制器554可以返回乱序的数据,使得当数据本应被返回给尚未接收到的先前发出的请求时,所述数据可被返回给随后的请求。
在某些所描述的实施方案中,盘控制器554根据外部总线主控DMA 556发起请求的顺序,而不管这些请求是不是以相对于它们的依次顺序而言的乱序被接收到的,将数据返回给来自外部总线主控552的请求。按照这种方式,以发出请求的顺序将数据顺序地返回给所述请求,使得每一个所发送的请求将访问从盘560a...560n请求的数据中的一个顺序的部分。为了以外部总线主控552发起请求的顺序将顺序的数据返回给所述请求,盘控制器554维护一个请求队列578,用于缓冲所乱序接收到的、来自外部总线主控552的读请求(例如分离读请求)。盘控制器554还保存下一地址变量580,其指示了按顺序跟在先前处理过的请求之后应被接收到的下一请求的地址。在所描述的实施方案中,外部总线主控552依次向地址窗中的地址发出请求,使得随后的请求应当指向紧跟在目标地址加上先前请求的字节数后的地址。在某些实施方案中,请求队列578可以具有足够的大小,用以将在出自外部总线主控554时可能未完成的最大数目的读请求排入队列中,这可以包括用于外部总线主控552的最大未完成分离事务254(图6)设置。
请求队列578可以包括从外部总线主控552发送来的每个读请求所提供的信息。图12图示了请求队列578中每一个请求条目590所保持的信息,其中每个条目590可以包括用于标识请求的请求信息592、地址窗中针对目标设备(例如盘560a...560n)的请求的目标地址594、以及请求的字节数596。
在某些实施方案中,每个读请求可以指定相同的请求字节大小。在可替换的实施方案中,每个读请求可以指定在访问地址窗中的邻接地址时的不同字节大小。在某些实施方案中,读请求可以包括当根据图8的逻辑来处理由I/O处理器570生成的描述符表时,从外部总线主控DMA 556发送来的读请求(例如分离读请求)。
图13图示了在盘控制器554中实施的、用于将数据返回给分离读请求的逻辑。控制从盘控制器接收到(在框600)分离读请求将被接收的指示开始。这个指示可以包括I/O处理器570发送用于为某个I/O请求缓冲并访问数据的命令,例如I/O处理器570在图8中的框374处发送的信号。盘控制器554设置(在框602)下一地址变量580,该变量指示了用于对盘控制器554地址窗中的基地址或者说首地址的预期下一顺序分离读请求的地址。一旦从外部总线主控552接收到(在框604)对地址窗中的地址的分离读请求,盘控制器554就确定(在框606)所接收的请求是否针对的是与下一地址变量580中所指示的同一地址。如果不是,则盘控制器554将所接收的分离读请求排队列到(在框608)请求队列578中,其中被排入队列的请求590可以包括请求信息592、目标地址594以及请求的字节数596。如果(在框606)所接收请求的目标地址与下一地址变量580中所指示的地址相同,那么盘控制器554从缓冲器564中将数据分组(如果当前在缓冲器564中可用)返回(在框610)给所接收的请求,所述数据分组具有的来自缓冲器564的字节数目等于在所接收的分离读请求中所指示的字节数。在某些实施方案中,缓冲器564基于FIFO将从盘560a...560n访问来的数据排入队列,使得返回的数据是从缓冲器564的“先入”端访问而来的。
在返回数据后,如果(在框612)下一地址变量580加上被返回的请求的字节数等于地址窗的末地址,即在最后的请求之后,在地址窗中未剩余任何顺序的地址,则下一地址变量580被设置(在框614)为基地址,这是因为地址翻转回基地址。否则,如果在最后的请求之后在地址窗中还有地址,则盘控制器554将下一地址变量580递增(在框616)数据刚刚被返回到的请求的字节数,这是因为下一请求将指向在先前处理过的请求的末地址之后的下一顺序地址。
在框614或616中将下一地址变量580递增到下一顺序读请求的地址后,盘控制器554确定(在框618)在请求队列578中一个已排入队列的读请求是否具有和下一地址变量580中相同的目标地址594(图12),即先前被接收并放置在请求队列578中的下一预期顺序分离读请求的地址。如果不是,则控制返回到框604,以等待下一分离读请求。否则,盘控制器554使具有相同地址的请求出队列(dequeue)(在框620)。当使具有相同地址的请求出队列(在框620)时,盘控制器554从缓冲器564中访问(在框622)与出队列的请求的字节数具有相等数目的字节,并且以本领域中公知的方式将所访问的字节返回(在框624)给出队列的请求。控制从框624前进到框612,以将下一地址变量580设置为将处理的下一顺序读请求的地址。
图14提供的表图示了如何根据图13的逻辑来处理四个顺序的读请求1、2、3和4,其中每个读请求的长度是1千字节,并且是由外部总线主控552发出的。在图14的实施例中,盘控制器554以和外部总线主控552发起请求1、2、3和4相反的顺序接收到对地址窗中的顺序地址的请求1、2、3和4。如图所示,不将数据返回给请求,直到数据被返回给对先前的顺序地址的请求。直到数据被返回给先前的请求,所述请求才被排入队列。
利用所描述的实施方案,如果盘控制器554由于桥574的请求处理或者出于某种其他原因接收到乱序的分离读请求,那么盘控制器554将以乱序接收到的请求排入队列,并且只将数据返回给作为下一预期读请求的请求。按照这种方式,盘控制器554以外部总线主控552发起分离读请求的顺序,依次将数据返回给分离读请求。这确保了外部总线主控552接收到被返回给适当的读请求的数据,使得数据被返回给顺序请求的顺序就是所述请求原先想要被服务的依次顺序。
附加的实施方案
使用标准的编程和/或工程设计技术来产生软件、固件、硬件或它们的组合,可以将这里所描述的操作和逻辑实现为一种方法、装置或制品。用在这里的术语“制品”是指在硬件逻辑(例如,集成电路芯片、可编程门阵列(PGA)、专用集成电路(ASIC)等)或者机器可读介质(例如磁存储介质(例如硬盘、软盘、磁带等)、光存储设备(CD-ROM、光盘等)、易失性和非易失性存储器件(例如EEPROM、ROM、PROM、RAM、DRAM、SDRAM)、固件、可编程逻辑等)上实现的机器可读指令或逻辑。在计算机可读介质中的代码可由处理器来访问并执行。还可以通过传输介质,或者通过网络从文件服务器访问其中实现了优选实施方案的代码。在这些情形中,其中实现了代码的制品可以包括传输介质,例如网络传输线,无线传输介质,通过空间、无线电波、红外线信号等传播的信号等。当然,本领域的技术人员将会认识到,在不偏离本发明的范围的情况下,可以对这种配置做出很多修改,并且所述制品可以包括在本领域中公知的任何信息承载介质。
在所描述的实施方式中,处理设备52、54和70在总线拓扑上通信,所述总线拓扑例如是PCI-X或PCI总线拓扑。在可替换的实施方式中,处理设备52、54和70可以使用本领域中公知的任何通信体系结构来通信。
在PCI总线实施方式中,附加的PCI-X或PCI桥可以位于处理设备52、54和70中的任何一个与总线72之间,以在总线72上实现通信。举例来说,在PCI-X实施方式中,外部总线主控52可以向桥发送突发读请求,所述桥随后可以将所述请求转发给总线72,以取得准确量的所请求数据。
在某些实施方式中,盘驱动器60a...60n包括磁硬盘驱动器。在可替换的实施方式中,与盘控制器54相连的存储设备可以包括本领域中公知的任何存储设备,例如光盘、磁带等。
在所描述的实施方式中,发起者使用地址窗向盘控制器提交请求。在可替换的实施方式中,目标盘控制器除了与存储相关的控制器外,还可以包括本领域中公知的任何类型的输入/输出控制器设备。此外,发起者或者外部总线主控52可以是向盘控制器发起请求的任何设备,例如主机总线适配器或其他外部设备。
图4和5的逻辑描述了以特定顺序发生的具体操作。在可替换的实施方式中,可以以不同的顺序,即经过修改或删除的顺序来执行所述逻辑操作中的某些操作。此外,可以往上述逻辑中增加步骤,并且这些步骤仍然遵守所描述的实施方式。另外,这里所描述的操作可以依次发生,或者可以并行处理某些操作。还有,可以由单个处理单元或者分布式处理单元来执行操作。在进一步的实施方案中,地址窗可被设置为小一些的尺寸,以实现用于多个目标设备(例如盘控制器)的多个地址窗,使得每个目标设备可以具有独特范围的地址窗。这使得外部总线主控通过向配置用于特定目标设备的地址窗中的存储器地址发送数据请求,而直接访问多个目标设备中的任何一个设备。
在所描述的实施方案中,所接收的读请求包括分离读请求。可替换地,根据上述逻辑来处理的请求可以包括向其返回数据的任何类型的总线请求。
在以上描述的实施方案中,盘控制器保存外部总线主控所发出的下一顺序请求的地址,该地址应当被接收以确定请求是不是被乱序接收的。在可替换的实施方案中,盘控制器可以执行替换性的操作,以确定对在所接收的读请求所请求的数据之前的顺序数据的至少一个读请求是否还未被处理,即当前接收的请求所针对的数据是不是位于还未处理的先前请求所请求的数据之后。还可以使用替换性的计算、标记和/或其他指示符来确定所发送的请求是否被乱序接收。
出于图示和描述的目的已给出了对本发明优选实施方案的以上描述。这些描述不希望是穷尽性的,或者将本发明限制为所公开的精确形式。按照以上教导,很多修改和变化都是可能的。本发明的范围不想由这一详细描述来限定,而是想用所附的权利要求来限定。以上说明书、实施例和数据提供了生产和使用本发明的构成的完整描述。由于在不偏离本发明的精神和范围的情况下可以实现本发明的很多实施方案,所以本发明由所附的权利要求来表示。
Claims (37)
1.一种用于处理输入/输出(I/O)请求的方法,其中总线使得与发起者、目标设备和设备控制器的通信能够进行,并且其中所述设备控制器访问所述目标设备以执行指向所述目标设备的I/O命令,所述方法包括:
接收访问所述目标设备的I/O请求命令;以及
配置所述发起者在所述总线上向所述设备控制器的预定地址窗中的一个存储器地址发送至少一个数据请求,其中使得所述设备控制器能够要求对所述总线上来自所述发起者的、指向所述预定地址窗中的所述存储器地址的所述数据请求的权利,以执行针对所述目标设备的所述数据请求,其中所述数据请求以突发模式被发送,并且其中,当处理以突发模式发送的所述数据请求时,所述设备控制器作为从属设备来运行。
2.如权利要求1所述的方法,其中所述发起者包括直接存储器访问(DMA)引擎,并且其中配置所述发起者以发送所述至少一个数据请求的操作包括配置所述DMA引擎以发送所述至少一个数据请求。
3.如权利要求2所述的方法,其中所述设备控制器包括DMA引擎,所述方法还包括:
当处理所述发起者通过所述总线发送的所述数据请求时,利用处理器来配置所述设备控制器以禁用所述DMA引擎。
4.如权利要求1所述的方法,其中所接收的I/O命令包括写操作,其中所述发起者利用所述数据请求向所述地址窗中的随机存储器地址发送写数据。
5.如权利要求1所述的方法,其中所接收的I/O命令包括从所述目标设备读数据的读操作,其中所述发起者向所述地址窗发送读请求,所述方法还包括:
利用处理器来配置所述设备控制器从所述目标设备访问所述数据。
6.如权利要求1所述的方法,其中所述数据请求被发送到所述地址窗中的随机存储器地址,并且其中所述数据请求依次访问所述目标设备处的数据。
7.一种用于处理输入/输出(I/O)命令的方法,其中总线使得与发起者和目标设备的通信能够进行,所述方法包括:
利用设备控制器来检测指向用来寻址所述目标设备的地址窗中的存储器地址的数据请求,其中所述设备控制器控制对所述目标设备的访问,其中所述数据请求以突发模式被发送;
利用所述设备控制器来要求对所述数据请求的权利,该数据请求为由所述发起者在所述总线上发送的所述数据请求;以及
利用所述设备控制器来执行所述数据请求,其中,当处理以突发模式发送的所述数据请求时,所述设备控制器作为从属设备来运行。
8.如权利要求7所述的方法,其中所述设备控制器包括直接存储器访问(DMA)引擎,其中所述发起者向所述设备控制器发送所述数据请求,并且其中,当所述设备控制器处理所述数据请求时,所述设备控制器DMA引擎被禁用。
9.如权利要求7所述的方法,其中所述I/O命令包括写操作,其中所述发起者利用至少一个数据请求向所述地址窗发送写数据,所述方法还包括:
利用所述设备控制器来处理作为写操作的、对所述地址窗的数据请求;
利用所述设备控制器将利用所述数据请求从所述发起者接收到的写数据存储在缓冲器中;以及
将所述写数据从所述缓冲器传输到所述目标设备。
10.如权利要求7所述的方法,其中所述I/O命令包括从所述目标设备读数据的读操作,所述方法还包括:
利用所述设备控制器来处理作为读操作的、对所述地址窗的数据请求;以及
利用所述设备控制器将来自所述目标设备的所述请求数据返回给所述发起者。
11.如权利要求10所述的方法,还包括:
将从所述目标设备中访问到的数据存储在缓冲器中,其中响应于对所述地址窗中的任何存储器地址的一个数据请求,返回所缓冲的数据。
12.如权利要求11所述的方法,其中所述设备控制器将所述缓冲器作为先入先出(FIFO)队列来管理,并且其中,响应于对所述地址窗中的任何存储器地址的数据请求,基于数据在所述FIFO队列中的排序,从所述缓冲器中返回数据。
13.如权利要求11所述的方法,其中所述地址窗是不可预取的区域。
14.如权利要求7所述的方法,其中所述发起者包括网络适配器,所述设备控制器包括盘控制器,并且所述目标设备包括至少一个存储盘。
15.如权利要求14所述的方法,其中所述总线采用PCI-X协议。
16.一种用于处理输入/输出(I/O)请求的系统,其中总线使得与发起者、目标设备和设备控制器的通信能够进行,并且其中所述设备控制器访问所述目标设备以执行指向所述目标设备的I/O命令,所述系统包括:
处理器;
由所述处理器执行来使得所述处理器完成以下操作的代码:
(i)接收访问所述目标设备的I/O请求命令;以及
(ii)配置所述发起者在所述总线上向所述设备控制器的预定地址窗中的一个存储器地址发送至少一个数据请求,其中使得所述设备控制器能够要求所述总线上来自所述发起者的、指向所述预定地址窗中的所述存储器地址的所述数据请求的权利,以执行针对所述目标设备的所述数据请求,其中所述数据请求以突发模式被发送,并且其中,当处理以突发模式发送的所述数据请求时,所述设备控制器作为从属设备来运行。
17.如权利要求16所述的系统,其中所接收的I/O命令包括写操作,其中所述发起者利用所述数据请求向所述地址窗中的随机存储器地址发送写数据。
18.如权利要求16所述的系统,其中所接收的I/O命令包括从所述目标设备读数据的读操作,其中所述发起者向所述地址窗发送读请求,所述系统还包括:
利用所述处理器来配置所述设备控制器从所述目标设备中访问所述数据的装置。
19.如权利要求16所述的系统,其中所述数据请求被发送到所述地址窗中的随机存储器地址,并且其中所述数据请求依次访问所述目标设备处的数据。
20.一种用于处理I/O请求的系统,包括:
总线;
耦合到所述总线的发起者;
耦合到所述总线的设备控制器;
目标设备,其中所述设备控制器提供对目标设备的访问,所述系统包括:
耦合到所述总线的处理器;以及
由所述处理器执行来使得所述处理器完成以下操作的代码:
(i)接收访问所述目标设备的I/O请求命令;以及
(ii)配置所述发起者在所述总线上向所述设备控制器的预定地址窗中的一个存储器地址发送至少一个数据请求,其中使得所述设备控制器能够要求对所述总线上来自所述发起者的、指向所述预定地址窗中的所述存储器地址的所述数据请求的权利,以执行针对所述目标设备的所述数据请求,其中所述数据请求以突发模式被发送,并且其中,当处理以突发模式发送的所述数据请求时,所述设备控制器作为从属设备来运行。
21.如权利要求20所述的系统,其中所接收的I/O命令包括写操作,其中所述发起者利用所述数据请求向所述地址窗中的随机存储器地址发送写数据。
22.如权利要求20所述的系统,其中所接收的I/O命令包括从所述目标设备读数据的读操作,其中所述发起者向所述地址窗发送读请求,其中所述代码还能够使得所述处理器完成以下操作:
配置所述设备控制器从所述目标设备访问所述数据。
23.如权利要求20所述的系统,其中所述数据请求被发送到所述地址窗中的随机存储器地址,并且其中所述数据请求依次访问所述目标设备处的数据。
24.一种用于处理输入/输出(I/O)请求的装置,其中总线使得与发起者、目标设备和设备控制器的通信能够进行,并且其中所述设备控制器访问所述目标设备以执行指向所述目标设备的I/O命令,其中所述装置包括:
用于接收访问所述目标设备的I/O请求命令的装置;以及
用于配置所述发起者在所述总线上向所述设备控制器的预定地址窗中的一个存储器地址发送至少一个数据请求的装置,其中使得所述设备控制器能够要求对所述总线上来自所述发起者的、指向所述预定地址窗中的所述存储器地址的所述数据请求的权利,以执行针对所述目标设备的所述数据请求,其中所述数据请求以突发模式被发送,并且其中,当处理以突发模式发送的所述数据请求时,所述设备控制器作为从属设备来运行。
25.如权利要求24所述的装置,其中所述发起者包括直接存储器访问(DMA)引擎,并且其中,所述用于配置所述发起者发送所述至少一个数据请求的装置包括用于配置所述DMA引擎发送所述至少一个数据请求的装置。
26.如权利要求25所述的装置,其中所述设备控制器包括DMA引擎,所述装置还包括:
用于当处理所述发起者通过所述总线发送的所述数据请求时,配置所述设备控制器来禁用所述DMA引擎的装置。
27.如权利要求24所述的装置,其中所接收的I/O命令包括写操作,其中所述发起者利用所述数据请求向所述地址窗中的随机存储器地址发送写数据。
28.如权利要求24所述的装置,其中所接收的I/O命令包括从所述目标设备读数据的读操作,其中所述发起者向所述地址窗发送读请求,所述装置还包括:
用于配置所述设备控制器从所述目标设备访问所述数据的装置。
29.如权利要求24所述的装置,其中所述数据请求被发送到所述地址窗中的随机存储器地址,并且其中所述数据请求依次访问所述目标设备处的数据。
30.一种用于处理输入/输出(I/O)命令的装置,其中总线使得与发起者和目标设备的通信能够进行,其中所述装置包括:
用于检测指向用来寻址所述目标设备的地址窗中的存储器地址的数据请求的装置,其中所述设备控制器控制对所述目标设备的访问,其中所述数据请求以突发模式被发送;
用于要求对所述数据请求的权利的装置,该数据请求为由所述发起者在所述总线上发送的所述数据请求;以及
用于执行所述数据请求的装置,其中,当处理以突发模式发送的所述数据请求时,所述设备控制器作为从属设备来运行。
31.如权利要求30所述的装置,其中所述I/O命令包括写操作,其中所述发起者利用至少一个数据请求向所述地址窗发送写数据,所述装置还包括:
用于处理作为写操作的、对所述地址窗的数据请求的装置;
用于将利用所述数据请求从所述发起者接收到的写数据存储在缓冲器中的装置;以及
用于将所述写数据从所述缓冲器传输到所述目标设备的装置。
32.如权利要求30所述的装置,其中所述I/O命令包括从所述目标设备读数据的读操作,所述装置还包括:
用于处理作为读操作的、对所述地址窗的数据请求的装置;以及
用于将来自所述目标设备的所请求数据返回给所述发起者的装置。
33.如权利要求32所述的装置,还包括:
用于将从所述目标设备中访问到的数据存储在缓冲器中的装置,该用于将从所述目标设备中访问到的数据存储在缓冲器中的装置包括用于响应于对所述地址窗中的任何存储器地址的一个数据请求,返回所缓冲的数据的装置。
34.如权利要求33所述的装置,其中所述设备控制器将所述缓冲器作为先入先出(FIFO)队列来管理,并且其中,该装置包括用于响应于对所述地址窗中的任何存储器地址的数据请求,基于数据在所述FIFO队列中的排序,从所述缓冲器中返回数据的装置。
35.如权利要求34所述的装置,其中所述地址窗是不可预取的区域。
36.如权利要求30所述的装置,其中所述发起者包括网络适配器,所述设备控制器包括盘控制器,并且所述目标设备包括至少一个存储盘。
37.如权利要求36所述的装置,其中所述总线采用PCI-X协议。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US10/205,663 US7130933B2 (en) | 2002-07-24 | 2002-07-24 | Method, system, and program for handling input/output commands |
US10/205,663 | 2002-07-24 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1864145A CN1864145A (zh) | 2006-11-15 |
CN100481043C true CN100481043C (zh) | 2009-04-22 |
Family
ID=30770115
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB038226812A Expired - Fee Related CN100481043C (zh) | 2002-07-24 | 2003-07-23 | 用于处理输入/输出命令的方法、系统和程序 |
Country Status (8)
Country | Link |
---|---|
US (2) | US7130933B2 (zh) |
EP (1) | EP1573559B1 (zh) |
CN (1) | CN100481043C (zh) |
AT (1) | ATE433584T1 (zh) |
AU (1) | AU2003259210A1 (zh) |
DE (1) | DE60327945D1 (zh) |
TW (1) | TWI298838B (zh) |
WO (1) | WO2004010316A2 (zh) |
Families Citing this family (48)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20040083323A1 (en) * | 2002-10-24 | 2004-04-29 | Josef Rabinovitz | Large array of SATA data device assembly for use in a peripheral storage system |
US7000037B2 (en) * | 2002-10-24 | 2006-02-14 | Josef Rabinovitz | Large array of mass data storage devices connected to a computer by a serial link |
US7516272B2 (en) * | 2003-03-28 | 2009-04-07 | Emc Corporation | Midplane-independent implementations of data storage system enclosures |
US7243178B2 (en) * | 2003-05-16 | 2007-07-10 | Intel Corporation | Enable/disable claiming of a DMA request interrupt |
US7826614B1 (en) * | 2003-11-05 | 2010-11-02 | Globalfoundries Inc. | Methods and apparatus for passing initialization vector information from software to hardware to perform IPsec encryption operation |
JP4298542B2 (ja) * | 2004-02-20 | 2009-07-22 | キヤノン株式会社 | 像加熱装置 |
US20050289253A1 (en) * | 2004-06-24 | 2005-12-29 | Edirisooriya Samantha J | Apparatus and method for a multi-function direct memory access core |
US20060282602A1 (en) * | 2005-06-09 | 2006-12-14 | Tse-Hsine Liao | Data transmission device and method thereof |
US20060288158A1 (en) * | 2005-06-15 | 2006-12-21 | Tse-Hsine Liao | Interface system of a serial advanced technology attachment (SATA) having speedy data access function and method thereof |
GB2427486B (en) * | 2005-06-23 | 2010-09-29 | Giga Byte Tech Co Ltd | Interface system for SATA having fast data access function and method thereof |
US20080022079A1 (en) * | 2006-07-24 | 2008-01-24 | Archer Charles J | Executing an allgather operation with an alltoallv operation in a parallel computer |
TW200811659A (en) * | 2006-08-18 | 2008-03-01 | Icp Electronics Inc | Storage device with hard disk simulation function and control chip thereof |
US8572302B1 (en) * | 2006-10-13 | 2013-10-29 | Marvell International Ltd. | Controller for storage device with improved burst efficiency |
US7949794B2 (en) | 2006-11-02 | 2011-05-24 | Intel Corporation | PCI express enhancements and extensions |
US20080109573A1 (en) * | 2006-11-08 | 2008-05-08 | Sicortex, Inc | RDMA systems and methods for sending commands from a source node to a target node for local execution of commands at the target node |
US20080109569A1 (en) * | 2006-11-08 | 2008-05-08 | Sicortex, Inc | Remote DMA systems and methods for supporting synchronization of distributed processes in a multi-processor system using collective operations |
US8161480B2 (en) * | 2007-05-29 | 2012-04-17 | International Business Machines Corporation | Performing an allreduce operation using shared memory |
US8140826B2 (en) * | 2007-05-29 | 2012-03-20 | International Business Machines Corporation | Executing a gather operation on a parallel computer |
US20090006663A1 (en) * | 2007-06-27 | 2009-01-01 | Archer Charles J | Direct Memory Access ('DMA') Engine Assisted Local Reduction |
US7991857B2 (en) | 2008-03-24 | 2011-08-02 | International Business Machines Corporation | Broadcasting a message in a parallel computer |
US8122228B2 (en) | 2008-03-24 | 2012-02-21 | International Business Machines Corporation | Broadcasting collective operation contributions throughout a parallel computer |
US7912997B1 (en) * | 2008-03-27 | 2011-03-22 | Xilinx, Inc. | Direct memory access engine |
US8422402B2 (en) * | 2008-04-01 | 2013-04-16 | International Business Machines Corporation | Broadcasting a message in a parallel computer |
US8375197B2 (en) * | 2008-05-21 | 2013-02-12 | International Business Machines Corporation | Performing an allreduce operation on a plurality of compute nodes of a parallel computer |
US8484440B2 (en) | 2008-05-21 | 2013-07-09 | International Business Machines Corporation | Performing an allreduce operation on a plurality of compute nodes of a parallel computer |
US8161268B2 (en) * | 2008-05-21 | 2012-04-17 | International Business Machines Corporation | Performing an allreduce operation on a plurality of compute nodes of a parallel computer |
US8281053B2 (en) | 2008-07-21 | 2012-10-02 | International Business Machines Corporation | Performing an all-to-all data exchange on a plurality of data buffers by performing swap operations |
KR101624868B1 (ko) * | 2008-08-06 | 2016-06-07 | 삼성전자주식회사 | 가상화 장치의 제어방법 및 가상화 장치 |
US8140712B2 (en) * | 2009-07-17 | 2012-03-20 | Sandforce, Inc. | System, method, and computer program product for inserting a gap in information sent from a drive to a host device |
US8565089B2 (en) * | 2010-03-29 | 2013-10-22 | International Business Machines Corporation | Performing a scatterv operation on a hierarchical tree network optimized for collective operations |
US8332460B2 (en) | 2010-04-14 | 2012-12-11 | International Business Machines Corporation | Performing a local reduction operation on a parallel computer |
US9424087B2 (en) | 2010-04-29 | 2016-08-23 | International Business Machines Corporation | Optimizing collective operations |
US8346883B2 (en) | 2010-05-19 | 2013-01-01 | International Business Machines Corporation | Effecting hardware acceleration of broadcast operations in a parallel computer |
US8949577B2 (en) | 2010-05-28 | 2015-02-03 | International Business Machines Corporation | Performing a deterministic reduction operation in a parallel computer |
US8489859B2 (en) | 2010-05-28 | 2013-07-16 | International Business Machines Corporation | Performing a deterministic reduction operation in a compute node organized into a branched tree topology |
US9626127B2 (en) * | 2010-07-21 | 2017-04-18 | Nxp Usa, Inc. | Integrated circuit device, data storage array system and method therefor |
US8776081B2 (en) | 2010-09-14 | 2014-07-08 | International Business Machines Corporation | Send-side matching of data communications messages |
US8566841B2 (en) | 2010-11-10 | 2013-10-22 | International Business Machines Corporation | Processing communications events in parallel active messaging interface by awakening thread from wait state |
US8713379B2 (en) * | 2011-02-08 | 2014-04-29 | Diablo Technologies Inc. | System and method of interfacing co-processors and input/output devices via a main memory system |
CN103370697B (zh) * | 2011-03-02 | 2016-09-07 | 日本电气株式会社 | 数据控制系统、数据控制方法及数据控制程序 |
US8893083B2 (en) | 2011-08-09 | 2014-11-18 | International Business Machines Coporation | Collective operation protocol selection in a parallel computer |
US8910178B2 (en) | 2011-08-10 | 2014-12-09 | International Business Machines Corporation | Performing a global barrier operation in a parallel computer |
US9495135B2 (en) | 2012-02-09 | 2016-11-15 | International Business Machines Corporation | Developing collective operations for a parallel computer |
US9690703B1 (en) * | 2012-06-27 | 2017-06-27 | Netapp, Inc. | Systems and methods providing storage system write elasticity buffers |
US9697111B2 (en) * | 2012-08-02 | 2017-07-04 | Samsung Electronics Co., Ltd. | Method of managing dynamic memory reallocation and device performing the method |
JP6433191B2 (ja) * | 2014-08-18 | 2018-12-05 | ルネサスエレクトロニクス株式会社 | マイクロコンピュータ |
US9678681B2 (en) * | 2015-06-17 | 2017-06-13 | International Business Machines Corporation | Secured multi-tenancy data in cloud-based storage environments |
DE102015223786A1 (de) * | 2015-11-30 | 2017-06-01 | Dialog Semiconductor (Uk) Limited | Integrierte Schaltung mit serieller Schnittstelle |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5561821A (en) * | 1993-10-29 | 1996-10-01 | Advanced Micro Devices | System for performing I/O access and memory access by driving address of DMA configuration registers and memory address stored therein respectively on local bus |
CN1162785A (zh) * | 1995-12-30 | 1997-10-22 | 三星电子株式会社 | 存储器直接存取控制设备 |
US6209042B1 (en) * | 1995-12-14 | 2001-03-27 | International Business Machines Corporation | Computer system having two DMA circuits assigned to the same address space |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB653711A (en) | 1948-08-23 | 1951-05-23 | John William Pratt | Improvements in or relating to supporting means for girders or the like |
US5524268A (en) * | 1992-06-26 | 1996-06-04 | Cirrus Logic, Inc. | Flexible processor-driven control of SCSI buses utilizing tags appended to data bytes to determine SCSI-protocol phases |
US6098114A (en) * | 1997-11-14 | 2000-08-01 | 3Ware | Disk array system for processing and tracking the completion of I/O requests |
US6070207A (en) * | 1998-01-26 | 2000-05-30 | Intel Corporation | Hot plug connected I/O bus for computer system |
US7181548B2 (en) * | 1998-10-30 | 2007-02-20 | Lsi Logic Corporation | Command queueing engine |
US6275876B1 (en) * | 1999-05-21 | 2001-08-14 | International Business Machines Corporation | Specifying wrap register for storing memory address to store completion status of instruction to external device |
US6697885B1 (en) * | 1999-05-22 | 2004-02-24 | Anthony E. B. Goodfellow | Automated DMA engine for ATA control |
US6564271B2 (en) * | 1999-06-09 | 2003-05-13 | Qlogic Corporation | Method and apparatus for automatically transferring I/O blocks between a host system and a host adapter |
-
2002
- 2002-07-24 US US10/205,663 patent/US7130933B2/en not_active Expired - Fee Related
-
2003
- 2003-06-24 TW TW092117139A patent/TWI298838B/zh not_active IP Right Cessation
- 2003-07-23 AT AT03765941T patent/ATE433584T1/de not_active IP Right Cessation
- 2003-07-23 EP EP03765941A patent/EP1573559B1/en not_active Expired - Lifetime
- 2003-07-23 AU AU2003259210A patent/AU2003259210A1/en not_active Abandoned
- 2003-07-23 WO PCT/US2003/022941 patent/WO2004010316A2/en not_active Application Discontinuation
- 2003-07-23 CN CNB038226812A patent/CN100481043C/zh not_active Expired - Fee Related
- 2003-07-23 DE DE60327945T patent/DE60327945D1/de not_active Expired - Lifetime
-
2006
- 2006-04-07 US US11/279,086 patent/US7464199B2/en not_active Expired - Fee Related
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5561821A (en) * | 1993-10-29 | 1996-10-01 | Advanced Micro Devices | System for performing I/O access and memory access by driving address of DMA configuration registers and memory address stored therein respectively on local bus |
US6209042B1 (en) * | 1995-12-14 | 2001-03-27 | International Business Machines Corporation | Computer system having two DMA circuits assigned to the same address space |
CN1162785A (zh) * | 1995-12-30 | 1997-10-22 | 三星电子株式会社 | 存储器直接存取控制设备 |
Also Published As
Publication number | Publication date |
---|---|
US20040019711A1 (en) | 2004-01-29 |
DE60327945D1 (de) | 2009-07-23 |
CN1864145A (zh) | 2006-11-15 |
EP1573559B1 (en) | 2009-06-10 |
US7130933B2 (en) | 2006-10-31 |
WO2004010316A3 (en) | 2004-05-27 |
US7464199B2 (en) | 2008-12-09 |
TW200406680A (en) | 2004-05-01 |
WO2004010316A2 (en) | 2004-01-29 |
US20060168359A1 (en) | 2006-07-27 |
TWI298838B (en) | 2008-07-11 |
EP1573559A2 (en) | 2005-09-14 |
AU2003259210A1 (en) | 2004-02-09 |
ATE433584T1 (de) | 2009-06-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN100481043C (zh) | 用于处理输入/输出命令的方法、系统和程序 | |
US7822908B2 (en) | Discovery of a bridge device in a SAS communication system | |
JP6082752B2 (ja) | メモリ応答の順序付けのためのメモリ装置、コンピュータシステムおよび方法 | |
US8244950B2 (en) | Buffering non-posted read commands and responses | |
US8099529B1 (en) | Software based native command queuing utilizing direct memory access transfer context information | |
US5255376A (en) | Method and apparatus for supporting a dual bit length protocol for data transfers | |
US20050108448A1 (en) | Hardware assisted ATA command queuing | |
CN100361108C (zh) | 配置总线上的组件进行输入/输出操作的方法、系统和设备 | |
CN107590099A (zh) | 一种多主机访问从机的方法、扩展装置及存储介质 | |
CN108628543B (zh) | 垃圾回收方法以及使用该方法的装置 | |
US20020184453A1 (en) | Data bus system including posted reads and writes | |
CN1705929B (zh) | 用于将数据返回给通过总线接收的读请求的方法和系统 | |
CN107291641B (zh) | 用于计算单元的存储器直接访问控制装置及其运行方法 | |
US20030172203A1 (en) | Automated transfer of a data unit comprising a plurality of fundamental data units between a host device and a storage medium | |
US7451254B2 (en) | System and method for adaptive buffer allocation in a memory device interface | |
CN107870885A (zh) | 通信系统、装置及方法 | |
JP7363344B2 (ja) | メモリ制御装置、および制御方法 | |
US7644201B2 (en) | Method and system for performance enhancement via transaction verification using a counter value in a polled data storage environment | |
JPH04170240A (ja) | 通信制御システム | |
JPH052551A (ja) | Dma転送制御方式 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20090422 Termination date: 20180723 |
|
CF01 | Termination of patent right due to non-payment of annual fee |