流水线化的ata设备初始化的制作方法

文档序号:6473061阅读:242来源:国知局
专利名称:流水线化的ata设备初始化的制作方法
技术领域
本发明可以包括具有高级技术连接(Advanced Technology Attachment,ATA)接口控制器的信息处理系统的输入/输出数据处理机构。特别地,本发明可以包括通过影像寄存器(shadow register)空间的外围设备配置初始化。
背景技术
主计算机系统的中央处理单元(CPU)可以是计算机中控制所有其他部件的那个部件。CPU到CPU本地的存储器中取指令,并解码这些指令以产生控制计算机其他部件的信号。这可以使得CPU在存储器和算术逻辑单元(ALU)之间转移数据,或使得外部设备或外围设备进行输入或输出服务。硬盘驱动器是外围设备的一个例子。
为了使硬盘驱动器进行输入或输出服务,CPU可以初始化该硬盘驱动器,以使硬盘驱动器为接收操作命令做好准备。为了初始化硬盘驱动器,CPU可以把一个或更多的任务文件(task-file)初始化命令作为数据包,通过被称为任务文件寄存器组的设备传送到硬盘驱动器。每一个任务文件初始化命令花费一段时间执行。其一个原因是在下一个命令能被执行之前,由CPU校验每一个命令的执行。
传统上,CPU把其处理时间的一块专用于外围设备的初始化。在这个外围设备初始化专用时间期间,CPU被阻止执行其他处理功能。这样,CPU的性能被降低。


图1是本发明的平台100的框图;图2示出读/写命令设置协议方法200;
图3示出标准输入/输出(I/O)任务文件访问;图4示出本发明一个实施例的流水线化的任务文件访问。
具体实施例方式
如下面更详细地阐述的那样,图1的寄存器设备128能被用来处理初始化完成通知,而不像传统的技术,使用中央处理单元(CPU)处理初始化完成通知。利用寄存器设备128,本发明努力减少CPU可能专用于初始化ATA设备的时间。
大多数个人和移动计算机使用阐明了计算机CPU和存储设备之间的功率和数据信号接口通信的工业标准。高级技术连接标准是一套流行的工业标准。这套标准有时候被写作AT连接(ATA)或集成驱动电路(IDE),由位于华盛顿特区的国家信息技术标准委员会的T13技术委员会(www.t13.com)制定。
用于磁盘驱动器的AT连接接口(ANSI X3.221-199x)是一个磁盘驱动器接口标准,该标准规定了主系统和存储设备之间的互连信号的逻辑特征以及用于存储设备操作的协议和命令。这个标准允许符合该标准的主系统产品和存储设备产品之间的兼容性,即使这些产品是由不同的制造商生产的。
控制器可以被认为是控制数据从一个设备到一个外围设备的转移及逆向转移的设备。传统上,ATA接口控制器可以被置于ATA设备(例如硬盘驱动器)和CPU之间。ATA接口控制器能起到翻译器的作用,以辅助每个输入/输出(I/O)周期上的CPU/ATA设备通信。例如,从CPU接到一个命令,例如初始化命令后,ATA接口控制器把该命令表述为下游ATA设备会理解,即ATA设备能处理的东西,并把这个命令发送到所连接的ATA设备。在接收到转换过的命令后,ATA设备能处理该命令,并能通过ATA接口控制器向CPU发回完成通知。这个自命令发送到完成通知的传统输入/输出(I/O)周期是可能用掉大约1.2微秒(μs-百万分之一(10-6)秒)的单任务文件寄存器访问。
把信息传送到ATA设备可能涉及对任务文件寄存器组的几个独立的动作(或“写”),其中的每一个传统上能够在一个1.2μs的I/O周期内被处理。例如,在ATA接口控制器处理七个独立的初始化动作时,总的I/O周期时间可能是8.4μs(=7×1.2)。这七个写可以整体视作一个任务文件。CPU在执行一系列命令或输入/输出(I/O)访问以便为数据转移适当地使能ATA设备时的动作可以称为“写任务文件”。
在ATA接口控制器设备发送任务文件I/O期间,CPU被阻止产生进一步命令或接收进一步请求。在现行的ATA标准下,利用七个独立的I/O任务文件写向ATA设备发送命令,CPU会被占用8.4μs。客观地看待这个等待,一千兆赫兹CPU能在一微秒内执行大约1000条普通的指令,这样,在CPU专用于ATA设备初始化的8.4μs内,如果减少CPU专用于ATA设备命令设置的时间,则CPU能处理多达8400条(=1000×8.4)普通指令。
通过使用影像寄存器空间来处理任务文件I/O完成,本发明努力把CPU可能专用于ATA设备命令设置的时间减少了约7μs从8.4μs减少到大约1.4μs。此外,类似地,本发明能被用于减少CPU可能专用于CPU内部或外部设备的操作的时间。因此,在“溢满状态(full condition)”下,即当任务文件寄存器被写入而CPU必须等到输出到ATA设备的I/O周期完成时,寄存器空间允许本发明中所描述的ATA接口控制器内的扩展完成到ATA设备的I/O周期。这样,允许CPU返回处理其他任务,如写任务文件。
图1是本发明的平台100的框图。平台100能够和任何具有CPU的系统相联。例如,平台100能够和台式计算机、大型机、收音机、电视机、例如膝上型计算机的移动计算机、卫星系统或其他处理信息的电子设备相联。
平台100可以包括母板102。母板102可以是计算机的主板。此外,母板102可以包括用于CPU、键盘和监视器的电路,还可以包括接纳附加电路的插槽。母板102可以包括CPU 110、系统总线112、显卡114、存储器116、输入/输出(I/O)端口118和控制器120。存储设备122可以被耦合到控制器120。
CPU 110可以是平台110的通过执行软件指令控制所有其他部件的那个部件。系统总线112可以是连接母板102上各种功能单元的一组导线(电线、印刷电路板印刷线或集成电路内的连线)之一。例如,显卡114、存储器116、I/O端口118和控制器120中的每一个能够通过系统总线112耦合到CPU 110。如图1所示,控制器120能够通过总线124耦合到系统总线112和通过总线126耦合到存储设备122。
显卡114可以是一个具有向监视器提供位图显示所必需的视频存储器和其他电子电路的电路板。存储器116可以是任何能够以机器可读格式保存数据的存储设备。I/O端口118能够辅助CPU 110和输入设备(未示出)之间的通信,输入设备包括诸如键盘、鼠标、触摸屏、游戏杆、数字化板和麦克风。
控制器120可以是起到CPU 110和存储设备122之间的通信翻译器作用的设备。控制器120可以包括把协议指令执行到总线126上的逻辑。在一个实施例中,控制器120可以是ATA接口控制器。
存储设备122可以是任何可能要求CPU指令的翻译并能使用存储在可与平台100连接的位置的信息的设备。存储器122可以是磁盘驱动器,该驱动器可以适于读写至少一个绕中心轴旋转的硬式磁性数据存储盘(硬盘)。
总线124可以是16位总线。本领域技术人员将认识到总线124可以具有更大的吞吐量,如32位外围元件互连(PCI)总线。总线126可以是具有ATA带状电缆的第一通道,一个连接到作为ATA设备的存储设备122,例如主设备,而另一个连接到第二ATA设备,例如从设备。每个带状电缆可以是一个44/80导线电缆或任何适当的导线电缆。类似于总线126的第二通道可以被耦合到控制器120,以便伺服第二对主从设备。
为了在平台100内以有意义的方式转移数据,可能需要一种方法来唯一地标识转移的源和目的地。通过使用和住宅或商业信箱的邮政地址非常类似的地址能够实现这个标识。对于平台100,这样的方案可以被称作寻址。
每一个设备,诸如存储器集成电路、存储设备122或CPU 110可以具有其自己的本地地址空间。地址空间可以是处理器或进程能够访问,或设备能被访问的地址的范围。
设备总线的地址空间可以至少取决于地址的宽度;即地址中的位数。具有16位地址宽度的设备总线唯一地标识出216或准确些的65536个位置。处理器地址空间的大小取决于处理器地址总线和地址寄存器的宽度。每一个本地地址空间可以从零开始。每一个本地地址可以被映射到从处理器地址空间内的某个基地址开始的地址范围。类似地,每个进程将具有其自己的地址空间,该空间可以是处理器地址空间的全部或一部分。
地址空间能被划分为存储器地址空间和I/O地址空间。在操作中,CPU 110能通过存储器地址空间、I/O地址空间或存储器地址空间和I/O地址空间的组合与平台100的元件通信。
在标准微处理器体系结构中,I/O地址空间的0-FFFFhex的范围包括65535个地址位置(=15×163+15×162+15×161+15×160)(有时被称为64K)。平台100的使用I/O地址空间的设备可以在这个地址范围上被映射。传统上,CPU将通过I/O地址空间初始化并访问存储设备。如下面更详细讨论的那样,CPU 110唯一地使用存储器地址空间来初始化并访问存储设备122。存储器地址空间可以适用于移动大量数据,因为在CPU能移动到其他处理任务之前,存储器写不需要完成指示。这样,使用存储器地址空间访问存储设备122提供了优于使用I/O地址空间的优点。
为允许CPU 110与存储设备122通信,传统上可能把一组地址分配为I/O地址空间内的地址范围,用于命令和控制存储设备122。能够访问存储设备122的这个地址范围是通常所说的任务文件。在ATA标准下,地址范围1F0hex-1F7hex(或1F0h-1F7h)是通常所说的基本命令任务文件(PTF),而地址3F6hex是通常所说的基本控制任务文件(PCT)。
无论何时需要CPU 110向例如存储设备122的ATA设备写数据或从该设备读数据时,CPU 110可以向那个ATA设备发送一系列初始化命令。例如,在接到CPU初始化命令后,存储设备122可以执行这些系列命令,以使其自己能够按CPU 110的要求转移数据。因此,这个任务文件的九个地址中的每一个都可以具有一个寄存器空间,CPU可以向该寄存器空间内写初始化数据。每一个任务文件寄存器空间代表一个特殊的控制或命令函数,该函数的操作可以基于放置在那个地址的数字数据。
为了初始化存储设备122,CPU 110可以使用驱动软件设置初始化命令。这些驱动软件在任务文件中的九个寄存器空间中的每一个内写(放置)数据,作为一系列形成命令包的命令地址(I/O访问)。然后,传统上,CPU 110将通过控制器120直接向存储设备发送该任务文件命令包。在接收到这个命令包后,存储设备122将顺序地执行九个地址命令中的每一个,在每个执行之后向CPU 110发送一个完成消息。
为减少CPU 110可能专用于初始化存储设备122的时间,图1的平台100还可以包括置于CPU 110和存储设备122之间的寄存器设备128。寄存器设备128可以被置于控制器120和CPU 110之间,并通过总线130耦合到系统总线112。
如果CPU 110和控制器120并未以完全相同的速率发送和接收数据包(例如,没有使它们同步),寄存器设备128可以包括发布硬件缓冲区(posting hardware buffer),项目被从该缓冲区中以和它们被放入时相同的顺序取出,以便缓冲CPU 110和控制器120之间的数据流。寄存器设备128可以是先进/先出(FIFO)设备。寄存器设备128可以是队列设备,其中,每个入口具有一个结构。此外,寄存器设备128可以具有容纳所有来自CPU 110的任务文件写指令包而不因溢满状态引入延迟的深度。此外,寄存器设备128的深度能通过可读寄存器或通过先验算法(priori)被告知给任务文件写软件以优化性能。
通过以所要的参数在命令块内加载所需的寄存器,然后把命令代码写入命令寄存器,能够将命令通过寄存器设备128发布到存储设备122。在信息技术-具有包接口的AT连接-5(ATA/ATAPI-5)(1999)第133页到134页的标准下,总线130能使用如下具有九个地址1F0hex-1F7hex、3F6hex的存储器地址空间

如上面在表1中所指明的,读直接存储器访问(DMA)设备的输入命令/控制代码可以是C8h。关于剩余寄存器字段,特征寄存器字段对于表1的直接存储器访问输入命令是不适用的。扇区计数寄存器字段表示要被转移的扇区的数量。例如,值00h表示要转移二百五十六(256)个扇区。扇区号寄存器字段表示起始扇区号或逻辑块地址(LBA)模式地址位(7:0)。柱面低位寄存器字段表示起始柱面号位(7:0)或LBA地址位(15:8)。此外,柱面高位寄存器字段表示起始柱面号位(15:8)或LBA地址位(23:16)。
对于设备/磁头寄存器字段,如果正在使用LBA逻辑寻址模式,则可将第六位置为1,或者,如果正在使用柱面、磁头、扇区(CHS)物理寻址模式,则清零。第七位表示起始柱面号位(7:0)或LBA地址位(15:8)。第七位和第五位的使用已经被废弃(obs)。第四位表示所选的设备(DEV)。设备/磁头寄存器字段的剩余位,即第三位到第零位,表示磁头号位(3:0)或逻辑块地址(LBA)模式地址位(27:24)。
结合寄存器设备128使用表1的命令寄存器字段能允许平台100的驱动软件向控制器120的存储器映射区写入任务文件命令序列。这个流水线任务文件访问技术的优点是,向控制器120的存储器映射区(影像寄存器空间)写入任务文件命令序列可以不阻塞总线126上I/O数据向存储设备122的转移的完成。也就是说,通过使用存储器写而非I/O周期,CPU 110使用控制器120内的现有存储器写发布基础结构(memory write postinginfrastructure),在系统总线112上在最少数量的时钟周期内完成每一个写。
通过不阻塞总线126上I/O数据向存储设备122的转移的完成,控制器120能以不受从存储设备122的初始化中释放CPU 110影响的速度向存储设备发送任务文件寄存器的内容。这里,平台100能把存储器写转换回存储设备122能理解的I/O写格式和I/O写速率。这样,在周期在总线126(以比CPU 110所发布的低得多的速率)上运行的同时,CPU 110能向寄存器设备128发布后面的任务文件存储器写或转移到其他处理活动上去。
图2示出读/写命令设置协议方法200。图3示出图2方法的时间表。很容易看出,图3中,在ATA通道处于激活状态时,例如写驱动选择,CPU被阻止执行其他任务。
方法200可以和用于写任务文件的传统协议具有类似性。但是,方法200涉及写入存储器映射寄存器队列而非I/O映射任务文件寄存器。
方法200能在任何可读介质中实现,当其被执行时,使得本发明的平台100执行方法200。在一个实施例中,方法200能通过分布式可读存储介质实现,该介质包括可执行的计算机程序指令,当其被执行时,使得客户计算机系统和服务器计算机系统中的至少一个执行方法200。此外,方法200能通过计算机可读存储介质实现,该介质包含可执行的计算机程序指令,当其被执行时,使得具有平台100的计算机系统执行方法200。
方法200可以在步骤202开始。在步骤202,方法200可以寻址存储设备122,以便命令存储设备122联机。回想上面的表1,设备/磁头寄存器字段的第四位表示所选的设备(DEV)。这样,步骤202可以包括在设备/磁头寄存器字段的第四位(写/驱动选择位)放置适当的输入。这个第四位信息总是被发送到I/O任务文件。
在步骤204,方法200可以读存储设备122的备用状态寄存器(alt-status register),以确定存储设备122是否繁忙。如果存储设备122繁忙,则方法200在步骤206返回“SRB_STATUS_BUSY”信号,因为小型计算机系统接口(SCSI)请求块(SRB)字段不会被清除。从步骤206,方法200可以返回步骤204。
在正常操作下,存储设备122在第一次读其备用状态寄存器时可能不繁忙。这样,步骤204的读命令能被发送到I/O任务文件。或者,方法200可能返回步骤204达20000次。这里,步骤204的读命令能被发送到存储器队列。
如果存储设备122不繁忙,则方法200可以继续到步骤208。在步骤208,方法200可以确定存储设备122的DMA引擎是否激活。如果存储设备122的BM引擎激活,则BM引擎可以被关闭,并且驱动在步骤210复位。如果存储设备122的BM引擎没有激活,则方法200可以前进到步骤212。
在步骤212,方法200能够计算块计数和程序设备。这可能涉及向表1的扇区计数寄存器字段的存储器队列写入块长度。步骤212与传统技术的区别在于,在传统技术下,块长度被写到I/O任务文件,而步骤212包括向存储器队列写入块长度。
在步骤214,方法200可以计算逻辑块地址(LBA)和程序设备。这可以包括向存储器队列写入上面表1的下列寄存器中的至少一个扇区号、柱面低位、柱面高位和设备/磁头寄存器。步骤214与传统技术的区别在于,在传统技术下,这些寄存器被写到I/O任务文件,而步骤214包括将这些寄存器写入存储器队列。
在步骤216,方法200可以包括对DMA描述符表内容编程。在步骤218,可以用可被发送到存储器队列而非I/O任务文件的读或写命令对表1的命令寄存器编程。
在步骤220,可以对BM引擎进行编程。这可能涉及针对例如控制器120的被特定访问的控制器清除BM中断(BMI)状态位。此外,能够设置BM引擎的驱动转移协议(DTP)。在一个实施例中,BMI_DTP只能被设置一次。最后,BMI控制能被设置到“启动/停止总线主控”位。
随着BM引擎在步骤220被编程,方法200能够在步骤222等待来自存储设备122的中断信号。这可能涉及返同“SRB_STATMS_PENDING”信号,因为小型计算机系统接口(SCSI)请求块(SRB)字段将被随变化连接。在步骤224,可以接收中断信号。
无论何时将直接存储器访问读或写初始化给ATA设备,都能使用本发明。因为典型的计算机系统包括可以被使能以便用于通过直接存储器访问读或写的主硬盘驱动器,CPU性能可随着本发明的每一使用提高。进而,因为CPU性能提高了,本发明努力减小的磁盘访问开销将等值于巨大的性能收益。
图4示出了针对本发明方法的时间表,其中,任务文件访问被流水线化。通过使用寄存器设备128,如图1所示,将CPU释放,使得其他任务的处理得以实现。
上面的实施例也能被存储在设备或介质上,并被执行指令的机器读取。设备或介质可以包括固态存储器设备和/或旋转磁盘或光盘。当指令分段已被分配到不同的机器,如跨越互联的计算机时,设备或介质可以是分布式的。
这里描述的示范性实施例仅仅被提供用于说明本发明的原理,并且不应该被理解为限制要求权利的发明的术语的主题的范围。因此,说明书和附图要被视作说明性的而非限制性的。此外,能应用本发明的原理获得这里所描述的优点,并获得其他的优点或者还满足其他目的。
权利要求
1.一种平台,包括中央处理单元;通过系统总线耦合到所述中央处理单元的控制器;耦合在所述中央处理单元和所述控制器之间的寄存器设备;和耦合到所述控制器的总线,该总线具有一个适于接纳设备的端,其中,所述寄存器设备具有容纳所有来自所述中央处理单元的指令包而不因溢满状态引入延迟的深度。
2.如权利要求1所述平台,其中所述控制器是高级技术连接(ATA)接口控制器。
3.如权利要求1所述平台,其中所述寄存器设备包括发布硬件缓冲区。
4.如权利要求1所述平台,其中所述寄存器设备是先进/先出设备。
5.如权利要求1所述平台,其中,所述寄存器设备具有适于通过至少一个可读寄存器被告知给任务文件写软件的深度。
6.如权利要求2所述平台,其中,耦合到所述控制器的所述总线是具有高级技术连接(ATA)带状电缆的第一通道。
7.如权利要求1所述平台,还包括通过所述总线耦合到所述控制器的存储设备。
8.如权利要求7所述平台,其中,所述存储设备是适于读写至少一个硬式磁性数据存储盘的磁盘驱动器。
9.如权利要求1所述平台,其中,所述寄存器设备能够在一个任务文件I/O周期期间无阻塞地处理到高级技术连接(ATA)设备的输入/输出(I/O)周期。
10.一种方法,包括通过控制器和寄存器设备寻址耦合到中央处理单元的存储设备,其中,所述控制器通过系统总线被耦合到所述中央处理单元并且所述寄存器设备被耦合在所述中央处理单元和所述控制器之间;计算块计数和程序设备;计算逻辑块地址和所述程序设备;对直接存储器访问描述符表的内容编程;对命令寄存器编程;对直接存储器访问引擎编程;和等待来自所述存储设备的中断信号。
11.如权利要求10所述方法,其中,计算块计数和程序设备包括向存储器队列写入块长度。
12.如权利要求10所述方法,其中,计算逻辑块地址和所述程序设备包括向存储器队列写入至少一个寄存器字段。
13.如权利要求10所述方法,其中,对所述命令寄存器编程包括读和写存储器队列的其中之一。
14.一种可读存储介质,包含可执行的指令,当其被执行时,使得平台执行一种方法,该方法包括通过控制器和寄存器设备寻址耦合到中央处理单元的存储设备,其中,所述控制器通过系统总线被耦合到所述中央处理单元并且所述寄存器设备被耦合在所述中央处理单元和所述控制器之间;计算块计数和程序设备;计算逻辑块地址和所述程序设备;对直接存储器访问描述符表的内容编程;对命令寄存器编程;对直接存储器访问(DMA)引擎编程;和等待来自所述存储设备的中断信号。
15.如权利要14所述可读介质,其中,计算块计数和程序设备包括向存储器队列写入块长度。
16.如权利要14所述可读介质,其中,计算逻辑块地址和所述程序设备包括向存储器队列写入至少一个寄存器字段。
17.如权利要14所述可读介质,其中,对所述命令寄存器编程包括读和写存储器队列的其中之一。
全文摘要
本发明包括具有通过系统总线耦合到中央处理单元的控制器的平台。所述平台也包括耦合在所述中央处理单元和所述控制器之间的寄存器设备。此外,所述平台也包括耦合到所述控制器,具有一个适于接纳设备的端的总线。所述寄存器设备具有容纳所有来自所述中央处理单元的指令包而不因溢满状态引入延迟的深度。
文档编号G06F13/38GK1503948SQ01816634
公开日2004年6月9日 申请日期2001年9月27日 优先权日2000年9月29日
发明者迈克尔·埃施曼, 迈克尔·德尔, 德尔, 迈克尔 埃施曼 申请人:英特尔公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1