用于主机控制器上的独立和并发数据传送的方法和装置的制作方法

文档序号:6566748阅读:217来源:国知局
专利名称:用于主机控制器上的独立和并发数据传送的方法和装置的制作方法
技术领域
本发明涉及存储接口。具体而言,本发明涉及与主机控制器的接□。
背景技术
诸如软盘驱动器、硬盘驱动器和CD-ROM驱动器的存储设备通 常通过电子集成驱动器(Integrated Drive Electronics, IDE)接口连接到 计算机,其中电子集成驱动器(IDE)接口也称为高级技术附加装置 (Advanced Technology Attachment, ATA)。并行ATA允许多达两个设 备使用主/从通信技术连接到单个端口 。 一个ATA设备被配置为主设 备(master),而另一个为从设备(slave)。这种配置允许一个设备的控制
器告诉另一个设备它何时能够向计算机传送数据,或者从计算机传送 数据。两个设备通过一个带状电缆菊花链式连接(daisy chained)在一 起,其中带状电缆是无端接的多分支总线。这个总线或连接通常被称 为并行通道。此外,个人计算机(PC)可能具有两个并行ATA通道 初级通道和次级通道。
并行ATA接口从1989年起已经以基本相同的形式存在了,并已 经成为所生产的最高容量的硬盘驱动设备接口。然而,随着对更高传 送和存储带宽的需求增加,并行ATA正在接近它的性能极限。引入 串行ATA接口以代替并行ATA。串行ATA以点对点的方式,用单独 的电缆连接两个设备中的每一个。串行ATA的优点包括高达150 MB/s的高的数据传输速率(与并行ATA的100 MB/s相比)、低成本、 易于安装和配置、低引脚数,等。
然而,由于目前存在大量的并行ATA,所以从并行ATA到串行 ATA的转变可能是个问题。为了避免转变成本并提供一个容易的迁移 途径,已经对用于并行ATA的软件驱动器进行了修改以适应串行
ATA,并且已经设计了新的串行ATA接口以兼容并行ATA设备。例 如,硬件仿真器是一种硬件电路,其对并行ATA驱动器是操作透明 的,以使得并行ATA驱动器能够像控制并行ATA设备那样控制串行 ATA设备。当和并行ATA驱动器一起使用串行ATA设备时,需要独 立且并发的数据传送。


本发明的特征和优点将从下面本发明的详细描述中变得显而易 见,其中
图1是说明其中实施了本发明的一个实施例的系统的图2是说明图1中所示的使用硬件仿真器的ATA控制器的图3是说明图2中所示的ATA控制器中的仿真器的图4是说明根据本发明的一个实施例,基于访问类型来对来自并
行通道的响应进行仿真的过程的流程图5是说明根据本发明的一个实施例,当访问类型是第一访问类
型时,对一个响应进行仿真的过程的流程图;以及
图6是说明针对DEV位设置的软件编程次序的实施例的流程图。
具体实施例方式
在下面的说明中,出于解释的目的,阐明了大量细节以提供本发 明的全面理解。然而,对本领域技术人员来说显而易见的是,这些具 体细节不是实现本发明所必需的。在其它实例中,为了不使本发明模 糊, 一些众所周知的电结构和电路以方框图的形式示出。
图1是说明其中实施了本发明的一个实施例的计算机系统100的 图。计算机系统100包括处理器110、互连设备120、存储器控制集 线器(MCH)130、基本输入/输出系统存储器135、系统存储器140、 输入/输出控制集线器(ICH)150、串行ATA设备176和178、大容量 存储设备170以及输入/输出设备1801至180K。
处理器IIO代表任何类型体系结构的中央处理单元,如嵌入式处 理器、微控制器、数字信号处理器、超标量计算机、向量处理器、单
指令多数据流(SIMD)计算机、复杂指令集计算机(CISC)、精简指令集 计算机(RISC)、超长指令字(VLIW),或混合体系结构。在一个实施 例中,处理器110兼容英特尔体系结构(Intel Architecture, IA)处理器, 如IA-32和IA-64。处理器110通常包含许多控制寄存器,以支持存 储器管理任务,如虚拟存储器和高速缓冲存储器。这些任务可以包括 分页和分段。具有处理器110的芯片可以只具有一个处理器内核,或 者具有多于一个处理器内核。互连设备120提供接口信号,以允许处 理器110和其它处理器或设备(如MCH 130)进行通信。互连设备120 可以支持单处理器或多处理器配置。互连设备120可以是并行的、顺 序的、流水线的、异步的、同步的,或其任何组合。互连设备120可 以是点对点的,或者可以连接到多于两个芯片。
MCH 130提供对存储器和输入/输出设备(如系统存储器140和 ICH 150)的控制和配置。MCH 130可以被集成到芯片集中,该芯片集 集成了多种功能,如孤立的执行模式、主机至外围设备的总线接口、 存储器控制。为了清楚起见,没有示出所有的外围设备总线。可以预 见,系统100还可以包括如下外围设备总线,如,外设部件互连(PCI)、 加速图形端口(AGP)、工业标准体系结构(ISA)总线,以及通用串行总 线(USB)等。在一个实施例中,MCH130可以和处理器110在同一个 芯片中。在一些实施例中,同一个MCH 130可以为具有多个处理器 的芯片中的所有内核或处理器工作。在其它实施例中,MCH 130可 以包括不同的部分,它们可以单独地为具有多个处理器的芯片中的不 同内核或处理器工作。
BIOS存储器135存储引导码和数据。BIOS存储器135通常用非 易失性存储器实现,如只读存储器(ROM)、闪速存储器,和其它类似 的存储器。BIOS存储器135还可以存储在MCH 130内。BIOS存储 器135可以包含并行ATA驱动器138,以通过ICH 150控制串行ATA 设备176和178。
系统存储器140存储系统码和数据。系统存储器140通常用动态 随机存取存储器(DRAM)或静态随机存取存储器(SRAM)实现。可以 使用其它类型的存储器,包括那些不需要刷新的存储器。系统存储器可以包括实现本发明一个实施例的程序代码或代码段。系统存储器还
可以包括并行ATA驱动器145。并行ATA驱动器145可以是操作系 统(OS)或应用程序的一部分。并行ATA驱动器145通过ICH 150访 问串行ATA设备176和178。 BIOS存储器135中的并行ATA驱动器 138和存储器140中的并行ATA驱动器145可以并存或不并存。
ICH 150具有多个功能,其被设计来支持I/0功能。ICH 150还 可以和MCH 130—起或单独地集成到芯片集中,以执行I/0功能。 ICH150可以包括许多接口和I/O功能,如PCI总线接口、处理器接 口、中断控制器、直接存储器存取(DMA)控制器、电源管理逻辑、定 时器、通用串行总线(USB展口 、大容量存储装置接口 、低引脚数(LPC) 接口等。特别是,ICH150包括ATA控制器155,用来控制串行ATA 设备176和178。 ATA控制器155具有与并行ATA设备驱动器后向 兼容的硬件仿真器。ATA控制器155为用户提供迁移路径,以利用串 行ATA接口,同时使用现有的并行ATA驱动器。
串行ATA设备176和178是大容量存储设备或硬盘,用来存储 档案信息,如代码、程序、文件、数据、应用程序、操作系统等。串 行ATA设备176和178通过串行ATA接口信号179连接到硬盘驱动 器控制器155。串行ATA接口、协议和标准遵循如下建议草案由串 行ATA工作组于2001年4月9日发布,名称为"Serial ATA/High Speed Serialized AT Attachment",修订本1.0.0.1。大容量存储设备170存储 其它档案信息。大容量存储设备170可以包括压縮盘(CD)ROM172、 软盘174和硬盘驱动器176,以及任何其它磁或光存储设备。大容量 存储设备170提供一种机制来读取机器可读介质。
I/O设备1801至180K可以包括任何执行I/O功能的I/O设备。 I/O设备1801至180K的实例包括用于输入设备(如,键盘、鼠标、跟 踪球、点击设备)的控制器、介质卡(如,音频、视频、图形)、网卡, 以及任何其它外围设备控制器。
在并行ATA接口上,通电后硬件或软件重置,或者在执行装置 诊断(Executive Device Diagnostic)命令执行之后,从设备通过ATA带 状电缆中的PDIAG导线向主设备提供诊断状态。在观察到PDIAG信
号上的状态时,主设备从而更新状态和误差寄存器。对于串行ATA 接口,这种两个串行ATA设备之间的直接通信并不存在。此外,在 并行ATA接口上,同一通道上的两个ATA设备观察电缆上的信号活 动。例如,对ATA命令块寄存器(除了数据和命令寄存器之外)的写访 问被两个设备看到并接受。另一方面,在串行ATA接口中,每个串 行ATA设备是独立于另一个的。为了模拟对于并行ATA驱动器138可见的交互,ATA控制器155 中的仿真器转发并操纵对两个串行ATA设备176和178的软件访问, 其中两个串行ATA设备176和178被映射为虚拟ATA通道上的并行 ATA设备。此外,仿真器还将串行ATA设备的中断路由至IRQ14或 IRQ15。图2是说明使用硬件仿真器210的ATA控制器155的图。ATA 控制器155包括仿真器210和串行ATA主机控制器(l和2)220和230。 仿真器210对并行ATA设备与并行ATA驱动器138交互时的响应进 行仿真。仿真器210是硬件电路,其对并行ATA驱动器138是操作 透明的,以使得并行ATA驱动器138仍然能够控制串行ATA设备176 和178,如同它们是并行ATA设备一样。当ATA驱动器直接为串行 ATA设备176和178写入时,仿真器210可以被禁用。串行ATA主机控制器220和230,其也被称为串行端口,分别包 含寄存器、控制电路,以及到串行ATA设备176和178的接口电路。 特别是,串行ATA主机控制器220和230分别包含串行端口任务文 件(l和2)225和235,其包含能够对相应的串行ATA设备176和178 进行控制和配置的操作寄存器。在ATA规范中定义的一个这种寄存 器是设备/磁头寄存器,其包含设备和磁头数量。仿真器210通过端口 1选择信号或端口 2选择信号选择映射到并 行通道的串行端口 。仿真器210通过写数据信号路径将数据写入到所 选择的串行端口,以及通过相应的读数据信号路径从所选择的串行端 口读取数据。串行ATA主机控制器220和230向仿真器210提供状 态和误差情况。图3是说明图2中示出的ATA控制器中的仿真器210的图。仿
真器210包括访问检测器310、映射电路320、仿真状态机330、仿 真的任务文件寄存器集340,以及串行端口选择器350。访问检测器 310检测对与串行存储设备176和178进行接口的串行端口 220和230 中的一个进行访问的访问类型。该访问由并行ATA驱动器138提供, 并意图使并行通道中的一个通过并行通道的任务文件寄存器与并行 存储设备进行接口。映射电路320将串行端口映射到并行通道。该映射可以通过地址 翻译来进行。串行端口还可以根据设备/磁头寄存器中的设备(DEV) 位而被映射到主或从并行通道。仿真状态机330基于访问检测器310检测的访问类型以及映射电 路320提供的映射的串行端口 ,对来自并行通道中的一个的响应进行 仿真。状态机330根据访问类型而包括许多状态以执行一系列操作。 例如,存在着对应于根据不同访问类型的响应的仿真的若干个状态, 以及一个对应于中断产生的中断状态。仿真的任务文件寄存器集340对并行通道的任务文件寄存器进 行仿真。这些寄存器可以包括关于设备(DEV)、忙碌(BSY)位和误差 寄存器的信息。串行端口选择器350基于映射电路320提供的映射的串行端口来 选择串行端口 220和230中的一个。例如,当并行ATA驱动器138 产生对并行通道的访问时,映射电路320可以将并行通道的地址翻译 为串行端口。可替换地,映射电路320可以根据设备/磁头寄存器中 的设备(DEV)位进行映射。这个映射信息被直接或者经由状态机330 传送给串行端口选择器350,以选择相应的串行端口。该选择可以通 过启用所选择的串行ATA主机控制器220或230来执行。图4是说明基于访问类型对来自并行通道的响应进行仿真的过 程400的流程图。 一幵始(START),处理器400检测对映射到并行通 道的串行ATA端口的访问,其中该并行通道作为主通道或从通道(框 410)。该访问由并行ATA驱动器138进行。然后,过程400确定访 问的类型(框420)。这可以通过解码诸如地址和读/写信息之类的访问 信息来进行。访问类型可以是若干种访问类型中的一种。
过程400确定访问是否是第一访问类型,以使得它是对总线主寄 存器(BM-IDE)、非数据命令寄存器和设备控制寄存器中的一个的第 一读访问(框430)。该访问还可以是除了将总线主命令寄存器的 START位设置为逻辑一 <1'之外对总线主寄存器(BM-IDE)、非数据 命令寄存器和设备控制寄存器中的一个的第一写访问(框430)。如果 是这样,则过程400仿真第一类型访问(框435),然后终止。否则, 过程400确定访问是另一访问类型(框440),并仿真另一访问类型(框 445)。另一访问类型可以是在通电、硬件或软件重置、或设备诊断命 令的执行后,对设备/磁头寄存器的访问,或者是对状态寄存器、替 换寄存器,或映射到从并行通道的所选择的串行端口的误差寄存器的 访问。另一访问类型还可以是在通电、硬件或软件重置、或设备诊断 命令的执行后,对状态寄存器或映射到主并行通道的串行端口的替换 寄存器的读访问。另一访问类型还可以是在通电、硬件或软件重置、 或设备诊断命令的执行后,对映射到主并行通道的串行端口的误差寄 存器的读访问。为了在SATA设备176或178上设置一个命令,各个主机控制器 220或230通常执行一系列事件。它读取状态寄存器以确定通道不忙。 它写设备/磁头寄存器以确保选择正确的设备。它写扇区数寄存器以 指示将要被传送的扇区的数量。它写扇区号寄存器以装载逻辑块寻址 (LBA)地址的一部分。它写柱面低位寄存器以装载LBA地址的一部 分。它写柱面高位寄存器以装载LBA地址的一部分。它向命令寄存 器写入将要在四个级调度(dispatch)、幵始1/0、 IRQ和结束中执行 的指令。在选择之后,来自主机的命令被所选择的串行ATA设备接收。 主机控制器通过使用设备/磁头寄存器中的DEV位识别两个设备。 DEV位被编程以指示它想要传送数据给哪一个设备,或者想要从哪 一个设备传送数据。'0'选择设备O,其可以被指定为主设备。否则, DEV位选择设备1,其可以被指定为从设备。然而,在传统的控制器 操作中,寄存器内容进入设备及其控制器。因此,在传统的控制器操 作中,寄存器写被传送到主和从任务文件寄存器225和236以及BM-IDE寄存器。图5是说明根据本发明的一个实施例,对访问类型是第一访问类 型时的响应进行仿真的过程435的流程图。过程435是由图3中示出 的状态机330中的第一状态执行的。 一开始(START),过程435就确 定访问是否是写访问(框510)。在本发明的一个实施例中,在对 BM-IDE寄存器或任务文件225或235进行任何相关写操作之前写入 DEV位。当DEV位等于零时,选择设备0。当DEV位等于一时, 选择设备l。因此,仿真硬件具有一种模式,其中它不将写循环传送到主和从 BM-IDE寄存器和阴影(shadow)任务文件。相反,根据DEV位将写循 环传送到特定设备。这与传统操作不同,在传统操作中仿真器将写循 环传送到主和从设备任务文件寄存器和BM-IDE I/O寄存器。如果访问是写访问,则过程435将数据写入到所选择的根据设备 (DEV)位映射到并行通道的串行端口滩515),然后终止。基于写循环, 对所选择的设备的主机寄存器集进行设置,而不是设置两个主机寄存 器集。因此,可以如同彼此完全独立那样访问主和从ATA设备。从 而,并发且独立的数据传送可以在两个串行ATA驱动器上进行,其 中该两个串行ATA驱动器看起来是作为主和从驱动器的并行ATA驱 动器。否则,如果访问是读访问,则过程435从所选择的根据DEV 位映射到并行通道的串行端口读取数据(框520)。然后,过程435向 访问请求者返回读取的数据,然后终止。图6是用于完成DEV位设置的软件编程次序的一个实施例的说 明。在框610中,过程600写入与所选择的设备对应的串行端口的设 备/磁头寄存器的DEV位。在框620中,过程600对其它BM-IDE寄 存器和相关的任务文件寄存器进行编程。在一个实施例中,过程600 写入与所选择的串行端口相关的BM-IDE和任务文件寄存器。在框 630中,过程600对命令任务文件寄存器进行编程,并设置BM-IDE 命令寄存器的Start(开始)位。在框640中,过程600向设备/磁头寄存 器的DEV位写入一个不同的值。在框650中,过程600根据需要对 其它BM-IDE寄存器和相关的任务文件寄存器进行编程。在框660
中,过程600对命令任务文件寄存器进行编程,并在终止之前设置 BM-IDE命令寄存器的Start位。虽然己经参考说明性实施例描述了本发明,但是描述不是意图以 限制的观念来解释。对本发明所属领域中普通技术人员来说显而易见 的是,所述说明性实施例的各种修改以及本发明的其它实施例都被认 为是在本发明的精神和范围内的。例如,尽管上面的描述参考串行和 并行ATA接口进行,但是本技术可以应用于任何点对点接口 。本发明可以由硬件、软件、固件、微代码、或其任何组合来实施。 当以软件、固件或微代码实施时,本发明的要素是执行必需的任务的 程序代码或代码段。代码段可以代表一个过程、 一个函数、 一个子程 序、 一个程序、 一个例程、 一个子例程、 一个模块、 一个软件包、一 个类别,或者指令、数据结构或程序语句的任何组合。通过传递和/ 或接收信息、数据、自变量、参数或存储器内容,可以将一个代码段 连接到另一个代码段或硬件电路。信息、自变量、参数、数据等可以 通过任何合适的手段传递、转发或发送,其中合适的手段包括存储器 共享、消息传递、令牌传递、网络传输等。程序或代码段可以存储在 处理器可读介质中,或者被载波中所携带的计算机数据信号或载波调制的信号通过传输介质来传输。"处理器可读介质"可以包括能够存 储或传送信息的任何介质。处理器可读介质的实例包括电子电路、半 导体存储器设备、ROM、闪速存储器、可擦除ROM(EROM)、软盘、 压縮盘(CD-ROM)、光盘、硬盘、光纤介质、射频(RF)链路等。计算 机数据信号可以包括能够在传输介质上传播的任何信号,其中所述传 输介质例如电子网络通道、光纤、空气、电磁、RF链路等。代码段 可以通过诸如因特网、内联网等的计算机网络下载。注意,本发明可以描述为一个过程,其通常可以被描写为程序框 图、流程图、结构图或方框图。虽然程序框图可以将操作描述为顺序 的过程,但是许多操作可以并行或并发地执行。此外,操作的顺序可 以重新排列。当操作完成时,过程终止。过程可以对应于方法、函数、 进程、子例程、子程序等。当过程对应于函数时,它的终止对应于将 函数返回到调用函数或主函数。
权利要求
1、一种装置,包括与第一硬盘驱动器进行接口的第一主机控制器,其中为了第一数据传送操作,在对所述第一主机控制器上的其他寄存器写入之前,对所述第一主机控制器上的设备/磁头寄存器中的设备位进行写入;以及其中基于写入到所述第一主机控制器上的设备/磁头寄存器中的数据,将传送数据写入所述第一主机控制器上的另一寄存器。
2、 如权利要求1所述的装置,进一步包括-与第二硬盘驱动器进行接口的第二主机控制器,其中为了第二数 据传送操作,在对所述第二主机控制器上的其他寄存器写入之前,对 所述第二主机控制器上的设备/磁头寄存器中的设备位进行写入;以 及其中基于写入到所述第二主机控制器上的设备/磁头寄存器中的 数据,将传送数据写入所述第二主机控制器上的另一寄存器。
3、 如权利要求2所述的装置,其中所述第一和第二硬盘驱动器是串行高级技术附加装置。
4、 如权利要求2所述的装置,其中所述第一和第二数据传送操 作包括并发且独立地在所述第一主机控制器和所述第一硬盘驱动器 之间,以及在所述第二主机控制器和所述第二硬盘驱动器之间传送数 据。
5、 如权利要求2所述的装置,其中所述第一和第二硬盘驱动器 中的一个被映射为主驱动器。
6、 一种装置,包括多个并行通道;连接到串行存储设备的多个串行端口 ,其中所述并行通道被映射到串行端口;第一串行端口上的设备/磁头寄存器,其中为了第一数据传送操 作,在写入所述第一串行端口上的其它寄存器之前,写入所述设备/磁头寄存器;以及其中基于写入到所述第一串行端口的设备/磁头寄存器中的数 据,访问所述第一串行端口上的另一寄存器。
7、 如权利要求6所述的装置,其中访问所述第一串行端口上的 另一寄存器包括向所述第一串行端口上的另一寄存器写入数据。
8、 如权利要求6所述的装置,其中访问所述第一串行端口上的 另 一寄存器包括从所述第一 串行端口上的另 一寄存器读取数据。
9、 如权利要求6所述的装置,进一步包括 第二串行端口上的设备/磁头寄存器,其中为了第数据传送操作,在写入所述第二串行端口上的其它寄存器之前,写入所述设备/ 磁头寄存器;以及其中基于写入到所述第二串行端口的设备/磁头寄存器中的数 据,访问所述第二串行端口上的另一寄存器。
10、 如权利要求9所述的装置,其中访问所述第二串行端口上的 另一寄存器包括向所述第二串行端口上的另一寄存器写入数据。
11、 如权利要求9所述的装置,其中访问所述第二串行端口上的 另一寄存器包括从所述第二串行端口上的另一寄存器读取数据。
12、 如权利要求9所述的装置,其中所述第一和第二数据传送操 作包括并发且独立地在所述第一串行端口和对应的串行存储设备之 间,以及在所述第二串行端口和对应的串行存储设备之间传送数据。
13、 如权利要求6所述的装置,其中在写入所述第一串行端口上的其它寄存器之前写入第一串行端口上的设备/磁头寄存器包括向 所述第一串行端口的设备/磁头寄存器中的设备位写入。
14、 如权利要求14所述的装置,其中在写入所述第一串行端口 上的其它寄存器之前,写入第一串行端口上的设备/磁头寄存器,包 括在向所述第一串行端口的总线主寄存器或任务文件寄存器写入之 前,向所述设备/磁头寄存器中的设备位写入。
15、 如权利要求6所述的装置,其中访问所述第一串行端口上的 另一寄存器包括访问对应于所述第一串行端口的总线主寄存器或任 务文件寄存器中的至少一个。
16、 一种系统,包括 多个串行存储设备;以及连接到所述串行存储设备的芯片集,所述芯片集具有串行存储控 制器,所述串行存储控制器包括-映射电路,用于将连接到所述串行存储设备的多个串行端口映射 到多个并行通道;连接到所述映射电路的状态机,用于基于访问类型对来自所述并 行通道中的一个的响应进行仿真;连接到所述状态机和所述串行端口的串行端口选择器,用于选择 所述串行端口中的一个;以及连接到所述状态机的多个寄存器,用于对映射到所选择的串行端 口的并行通道的任务文件寄存器进行仿真,其中在写入对应的总线主 寄存器或任务文件寄存器中的任何一个之前,写入所选择的串行端口 的设备/磁头寄存器中的设备位。
17、 如权利要求16所述的系统,其中所述状态机包括-第一写状态,用于根据所述设备位,向映射到所述并行通道中的所述一个的所选择的串行端口写入数据;以及第一读状态,用于根据所述设备位,从映射到所述并行通道中的 所述一个的所选择的串行端口读取数据。
18、 如权利要求16所述的系统,进一步包括 将数据写入到对应于所选择的串行端口的至少一个总线主寄存器或任务文件寄存器,而不将所述数据写入到对应于另一串行端口的 寄存器。
19、 如权利要求16所述的系统,进一步包括 访问检测器,用于检测对连接到所述串行存储设备的多个串行端口中的一个进行访问的第一访问类型,所述访问意图访问多个并行通 道中的一个。
20、 如权利要求16所述的系统,其中所述第一访问类型包括除 了将总线主命令寄存器的START位设置为逻辑一之外,对总线主寄 存器、非数据命令寄存器和设备控制寄存器中的一个的第一写访问。
全文摘要
访问检测器检测对连接到串行存储设备的多个串行端口中的一个进行访问的访问类型。该访问意图通过并行通道的任务文件寄存器访问连接到并行存储设备的多个并行通道中的一个。映射电路将串行端口映射到并行通道。状态机基于访问类型和映射的串行端口对来自并行通道中的一个的响应进行仿真。
文档编号G06F3/06GK101133386SQ200680006608
公开日2008年2月27日 申请日期2006年3月31日 优先权日2005年3月31日
发明者E·黄 申请人:英特尔公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1