TWI619078B - Host controller, method operational on a host controller for communicating with a target device and readable storage medium - Google Patents
Host controller, method operational on a host controller for communicating with a target device and readable storage medium Download PDFInfo
- Publication number
- TWI619078B TWI619078B TW103125378A TW103125378A TWI619078B TW I619078 B TWI619078 B TW I619078B TW 103125378 A TW103125378 A TW 103125378A TW 103125378 A TW103125378 A TW 103125378A TW I619078 B TWI619078 B TW I619078B
- Authority
- TW
- Taiwan
- Prior art keywords
- task
- target device
- host controller
- queue
- tasks
- Prior art date
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/52—Program synchronisation; Mutual exclusion, e.g. by means of semaphores
- G06F9/522—Barrier synchronisation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Debugging And Monitoring (AREA)
- Advance Control (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
- Communication Control (AREA)
- Information Transfer Systems (AREA)
Abstract
本發明提供一種單方面地支援佇列阻隔功能性之主機控制器。該主機控制器可接收經標記有一佇列阻隔指示符之一第一任務。因此,該主機控制器遲延該第一任務至一目標裝置的傳輸。另外,該主機控制器亦遲延在該第一任務之後出現之任何任務至該目標裝置的傳輸。一旦自該目標裝置接收到所有先前所發送任務已得到處理之一指示,該主機控制器便僅將該第一任務發送至該目標裝置。一旦自該目標裝置接收到該第一任務已得到處理之一指示,該主機控制器便僅將在該第一任務之後出現之任何任務發送至該目標裝置。 The present invention provides a host controller that unilaterally supports queue blocking functionality. The host controller may receive a first task labeled with one of a series of blocking indicators. Therefore, the host controller delays the transmission of the first task to a target device. In addition, the host controller also delays the transmission of any task appearing after the first task to the target device. Upon receiving an indication from the target device that all previously sent tasks have been processed, the host controller sends the first task only to the target device. Upon receiving an indication from the target device that the first task has been processed, the host controller sends to the target device only any tasks that occur after the first task.
Description
本實用專利申請案主張2013年7月23日申請之題為「當不被輸入/輸出協定或目標裝置所支援時提供佇列阻隔(Providing Queue Barriers When Unsupported By An I/O Protocol or Target Device)」之美國臨時專利申請案第61/857,570號的優先權,該臨時專利申請案已讓與給本受讓人且藉此明確地以引用之方式併入本文中。 This utility patent application claims that the application titled "Providing Queue Barriers When Unsupported By An I / O Protocol or Target Device" was filed on July 23, 2013. US Patent Provisional Patent Application No. 61 / 857,570, which has been assigned to the assignee and is hereby expressly incorporated herein by reference.
下文大體上係關於佇列內之任務執行,且更具體言之,係關於用於當佇列阻隔不被使用中之輸入/輸出(I/O)協定所支援時提供或促進此等佇列阻隔的方法及裝置。 The following is generally about performing tasks within a queue, and more specifically, about providing or facilitating such queues when they are not supported by an in-use input / output (I / O) agreement Row blocking method and device.
在主機裝置中之I/O主機控制器內操作之軟體可將由I/O主機控制器發送至目標I/O裝置之數個任務排入佇列以用於進行排入佇列及執行。在一些狀況下,執行次序可由接收目標I/O裝置來判定,該接收目標I/O裝置超出主機裝置之控制。因此,接收目標I/O裝置可改變任務之執行次序。 Software operating in the I / O host controller in the host device can queue several tasks sent by the I / O host controller to the target I / O device for enqueuing and execution. In some cases, the execution order can be determined by the receiving target I / O device, which is beyond the control of the host device. Therefore, the receiving target I / O device can change the execution order of the tasks.
在一些狀況下,主機裝置上之軟體將希望保證發送至目標I/O裝置之任務之某一執行次序。舉例而言,一些I/O通信協定提供用以指示任務是否無法不按順序處理之佇列阻隔。在其他狀況下,目標I/O 裝置及/或I/O通信協定(在主機裝置與目標I/O裝置之間所使用)可能並不提供用於強制執行此執行次序之攔截。 In some cases, the software on the host device will want to guarantee a certain execution order of tasks sent to the target I / O device. For example, some I / O communication protocols provide queue barriers to indicate whether tasks cannot be processed out of order. Target I / O in other situations The device and / or I / O communication protocol (used between the host device and the target I / O device) may not provide an interception to enforce this order of execution.
因此,需要提供佇列阻隔功能性,該功能性准許主機裝置在此功能性不被目標I/O裝置或I/O通信協定所支援之情形下控制目標I/O裝置處之執行次序。 Therefore, there is a need to provide queue blocking functionality that allows the host device to control the execution order at the target I / O device if this functionality is not supported by the target I / O device or I / O communication protocol.
提供一種主機控制器,其包含:一通信介面,其與一目標裝置通信;及一處理電路,其耦接至該通信介面。該處理電路可經調適以:(a)獲得經標記有一佇列阻隔指示符之一第一任務;(b)遲延該第一任務至該目標裝置的傳輸;及/或(c)一旦自該目標裝置接收到所有先前所發送任務已得到處理之一指示,便將該第一任務發送至該目標裝置。 A host controller is provided, which includes: a communication interface that communicates with a target device; and a processing circuit that is coupled to the communication interface. The processing circuit may be adapted to: (a) obtain a first task marked with a series of blocking indicators; (b) delay the transmission of the first task to the target device; and / or (c) once from the The target device receives an indication that all previously sent tasks have been processed, and sends the first task to the target device.
在一個實例中,該處理電路可經進一步調適以:(a)自一任務佇列順序地獲得多個任務,其中該第一任務為該多個任務之一;(b)查明每一任務是否經標記有一佇列阻隔指示符;及/或(c)判定該第一任務經標記有該佇列阻隔指示符。 In one example, the processing circuit may be further adapted to: (a) sequentially obtain multiple tasks from a task queue, wherein the first task is one of the multiple tasks; (b) identify each task Whether a queue blocking indicator is marked; and / or (c) determining that the queue blocking indicator is marked for the first task.
另外,該處理電路可經進一步調適以遲延在該第一任務之後出現之任何任務至該目標裝置的傳輸,直至自該目標裝置接收到所有先前所發送任務已得到處理之該指示為止。一旦自該目標裝置接收到該第一任務已得到處理之一指示,該處理電路便可接著將在該第一任務之後出現之任何任務發送至該目標裝置。 In addition, the processing circuit may be further adapted to delay the transmission of any task appearing after the first task to the target device until the target device receives the indication that all previously sent tasks have been processed. Upon receiving an indication from the target device that the first task has been processed, the processing circuit may then send any task that occurs after the first task to the target device.
在一個實施中,該主機控制器及該目標裝置可使用佇列阻隔指示符功能性不被支援之一協定通信。根據一個態樣,一單獨佇列阻隔指示符功能性在該目標裝置中不被支援。根據另一態樣,該佇列阻隔指示符可能不同於在該目標裝置中或在該主機控制器與該目標裝置之間的一輸入/輸出通信協定中所支援的一單獨佇列阻隔功能性。 In one implementation, the host controller and the target device may communicate using one of the protocol that the queue blocking indicator functionality is not supported. According to one aspect, a single queue blocking indicator functionality is not supported in the target device. According to another aspect, the queue blocking indicator may be different from a separate queue blocking functionality supported in the target device or in an input / output communication protocol between the host controller and the target device. .
在一個實施中,該主機控制器可為與該目標裝置分離之一裝置。在另一實施中,該主機控制器可與該目標裝置整合於一單一半導體裝置中。在一個實例中,該目標裝置可為一儲存裝置且該等任務包括讀取及/或寫入操作。 In one implementation, the host controller may be a device separate from the target device. In another implementation, the host controller can be integrated with the target device in a single semiconductor device. In one example, the target device may be a storage device and the tasks include read and / or write operations.
可將無該佇列阻隔指示符之該第一任務發送至該目標裝置。該第一任務及其他任務可由該處理電路自一任務佇列獲得,且該第一任務及其他任務中之每一者係由該處理電路按每一任務相對於經標記有一佇列阻隔指示符之其他任務置放於該任務佇列中之次序進行處理。 The first task without the queue blocking indicator may be sent to the target device. The first task and other tasks may be obtained by the processing circuit from a task queue, and each of the first task and the other tasks is provided by the processing circuit with a queue of blocking indicators relative to each task marked with each other. Other tasks are placed in the order of the task queue for processing.
亦提供一種可在一主機控制器上操作以用於與一目標裝置通信之方法,其包含:(a)獲得經標記有一佇列阻隔指示符之一第一任務;(b)遲延(例如,暫時中止、暫時停止)該第一任務至該目標裝置的傳輸;(c)一旦自該目標裝置接收到所有先前所發送任務已得到處理之一指示,便將該第一任務發送至該目標裝置。 A method operable on a host controller for communication with a target device is also provided, comprising: (a) obtaining a first task labeled with a queue of blocking indicators; (b) delaying (e.g., (Suspend, temporarily stop) the transmission of the first task to the target device; (c) once receiving an indication from the target device that all previously sent tasks have been processed, send the first task to the target device .
該方法可進一步包含:(a)自一任務佇列順序地獲得多個任務,其中該第一任務為該多個任務之一;(b)查明每一任務是否經標記有一佇列阻隔指示符;(c)判定該第一任務經標記有該佇列阻隔指示符;及/或(d)遲延在該第一任務之後出現之任何任務至該目標裝置的傳輸,直至自該目標裝置接收到所有先前所發送任務已得到處理之該指示為止。一旦自該目標裝置接收到該第一任務已得到處理之一指示,便可將在該第一任務之後出現之任何任務發送至該目標裝置。 The method may further include: (a) sequentially obtaining a plurality of tasks from a task queue, wherein the first task is one of the plurality of tasks; (b) determining whether each task is marked with a queue of blocking instructions (C) determine that the first task is marked with the queue blocking indicator; and / or (d) delay the transmission of any task that occurs after the first task to the target device until it is received from the target device Until all instructions for previously sent tasks have been processed. Upon receiving an indication from the target device that the first task has been processed, any task that occurs after the first task can be sent to the target device.
在一個實例中,該主機控制器及該目標裝置可使用佇列阻隔指示符功能性不被支援之一協定通信。在另一實例中,該佇列阻隔指示符可能不同於在該目標裝置中或在該主機控制器與該目標裝置之間的一輸入/輸出通信協定中所支援的一單獨佇列阻隔功能性。在又一實例中,佇列阻隔指示符功能性在該目標裝置中不被支援。 In one example, the host controller and the target device can communicate using one of the protocol that the queue blocking indicator functionality is not supported. In another example, the queue blocking indicator may be different from a separate queue blocking functionality supported in the target device or in an input / output communication protocol between the host controller and the target device. . In yet another example, the queue blocking indicator functionality is not supported in the target device.
提供一種非暫時性處理器可讀儲存媒體,其具有一或多個指 令,該一或多個指令在由至少一處理電路執行時使得該至少一處理電路進行以下操作:(a)獲得經標記有一佇列阻隔指示符之一第一任務;(b)遲延該第一任務至該目標裝置的傳輸;(c)一旦自該目標裝置接收到所有先前所發送任務已得到處理之一指示,便將該第一任務發送至該目標裝置;及/或(d)遲延在該第一任務之後出現之任何任務至該目標裝置的傳輸,直至自該目標裝置接收到所有先前所發送任務已得到處理之該指示為止。 Provide a non-transitory processor-readable storage medium having one or more instructions Order, when the one or more instructions are executed by the at least one processing circuit, the at least one processing circuit performs the following operations: (a) obtaining a first task marked with a queue of blocking indicators; (b) delaying the Transmission of a task to the target device; (c) once receiving an indication from the target device that all previously sent tasks have been processed, sending the first task to the target device; and / or (d) delayed Any task that occurs after the first task is transmitted to the target device until the target device receives the indication that all previously sent tasks have been processed.
該非暫時性處理器可讀儲存媒體可進一步包括一或多個指令,該一或多個指令在由至少一處理電路執行時使得該至少一處理電路進行以下操作:(a)自一任務佇列順序地獲得多個任務,其中該第一任務為該多個任務之一;(b)查明每一任務是否經標記有一佇列阻隔指示符;及/或(c)判定該第一任務經標記有該佇列阻隔指示符。一旦自該目標裝置接收到該第一任務已得到處理之一指示,便可將在該第一任務之後出現之任何任務發送至該目標裝置。 The non-transitory processor-readable storage medium may further include one or more instructions that, when executed by the at least one processing circuit, cause the at least one processing circuit to perform the following operations: (a) queue from a task Obtain a plurality of tasks in sequence, wherein the first task is one of the plurality of tasks; (b) find out whether each task is marked with a series of blocking indicators; and / or (c) determine the first task The queue blocking indicator is marked. Upon receiving an indication from the target device that the first task has been processed, any task that occurs after the first task can be sent to the target device.
102‧‧‧主機裝置 102‧‧‧Host device
104‧‧‧目標I/O裝置 104‧‧‧Target I / O device
106‧‧‧匯流排 106‧‧‧Bus
108‧‧‧主機軟體 108‧‧‧ host software
109‧‧‧任務佇列 109‧‧‧Task queue
110‧‧‧主機控制器 110‧‧‧Host Controller
112‧‧‧目標控制器 112‧‧‧Target Controller
114‧‧‧任務佇列 114‧‧‧Task queue
116‧‧‧儲存裝置 116‧‧‧Storage device
302‧‧‧第一任務佇列 302‧‧‧First task queue
304‧‧‧第二任務佇列 304‧‧‧Second task queue
502‧‧‧主機裝置 502‧‧‧Host device
504‧‧‧處理電路 504‧‧‧Processing Circuit
506‧‧‧主機控制器 506‧‧‧Host Controller
508‧‧‧處理器可讀儲存媒體/裝置 508‧‧‧ processor-readable storage medium / device
510‧‧‧匯流排 510‧‧‧Bus
512‧‧‧收發器電路 512‧‧‧Transceiver Circuit
514‧‧‧任務產生器模組/電路 514‧‧‧Task generator module / circuit
516‧‧‧佇列阻隔標記模組/電路 516‧‧‧Side barrier marking module / circuit
520‧‧‧佇列阻隔指示符檢查器 520‧‧‧Queue blocking indicator checker
522‧‧‧任務佇列 522‧‧‧Task queue
524‧‧‧任務產生器指令 524‧‧‧Task Generator Instructions
526‧‧‧佇列阻隔標記指令 526‧‧‧Queue Block Marker Instructions
530‧‧‧記憶體裝置 530‧‧‧Memory device
702‧‧‧主機控制器 702‧‧‧Host Controller
704‧‧‧控制器處理電路 704‧‧‧controller processing circuit
706‧‧‧儲存裝置 706‧‧‧Storage device
708‧‧‧暫存器 708‧‧‧Register
710‧‧‧輸入/輸出通信介面或電路 710‧‧‧ input / output communication interface or circuit
711‧‧‧任務處理模組/電路 711‧‧‧Task Processing Module / Circuit
712‧‧‧佇列阻隔指示符偵測模組/電路 712‧‧‧ queue blocking indicator detection module / circuit
714‧‧‧任務暫停模組/電路 714‧‧‧Task suspension module / circuit
716‧‧‧任務恢復模組/電路 716‧‧‧Task Recovery Module / Circuit
719‧‧‧任務處理指令 719‧‧‧ task processing instruction
720‧‧‧佇列阻隔指示符偵測指令 720‧‧‧ queue blocking indicator detection instruction
722‧‧‧任務暫停指令 722‧‧‧Task suspension instruction
724‧‧‧任務恢復指令 724‧‧‧Task resume instruction
726‧‧‧任務佇列 726‧‧‧Task queue
圖1為包含經由匯流排耦接至目標I/O裝置且經調適以實施佇列阻隔功能性之主機裝置之系統的方塊圖。 FIG. 1 is a block diagram of a system including a host device coupled to a target I / O device via a bus and adapted to implement queue blocking functionality.
圖2為說明可如何實施佇列阻隔功能之流程圖。 FIG. 2 is a flowchart illustrating how the queue blocking function can be implemented.
圖3(包含圖3A、圖3B及圖3C)以圖形方式說明主機裝置上之佇列阻隔指示符之例示性實施的處理。 FIG. 3 (including FIGS. 3A, 3B, and 3C) graphically illustrates a process of an exemplary implementation of a queue blocking indicator on a host device.
圖4為說明可由主機控制器操作以實施用於任務之佇列阻隔之方法的流程圖。 FIG. 4 is a flowchart illustrating a method operable by the host controller to implement queue blocking for tasks.
圖5為說明實施主機控制之佇列阻隔功能性之主機裝置的例示性實例的方塊圖。 FIG. 5 is a block diagram illustrating an illustrative example of a host device that implements host-controlled queue blocking functionality.
圖6為說明可在主機裝置處操作以實施佇列阻隔功能性之例示性方法的流程圖。 6 is a flowchart illustrating an exemplary method operable at a host device to implement queue blocking functionality.
圖7為說明經調適以促進佇列阻隔功能性之例示性主機控制器的方塊圖。 FIG. 7 is a block diagram illustrating an exemplary host controller adapted to facilitate queue blocking functionality.
圖8為說明可由經調適以促進佇列阻隔功能性之主機控制器操作之例示性方法的流程圖。 8 is a flowchart illustrating an exemplary method that can be operated by a host controller adapted to facilitate queue blocking functionality.
圖9為說明可由經調適以促進佇列阻隔功能性之主機控制器操作之例示性方法的另一流程圖。 FIG. 9 is another flowchart illustrating an exemplary method that can be operated by a host controller adapted to facilitate queue blocking functionality.
下文結合附圖闡述之描述意欲作為對各種組態之描述,且並不意欲表示可實踐本文中所描述之概念及特徵的僅有組態。以下描述包括特定細節以用於提供對各種概念之透徹理解之目的。然而,對於熟習此項技術者而言,以下情形將為顯而易見的:可在無此等特定細節之情況下實踐此等概念。在一些情況下,以方塊圖形式展示熟知之電路、結構、技術及組件以避免混淆所描述之概念及特徵。 The description set forth below with reference to the drawings is intended as a description of various configurations and is not intended to represent the only configurations that can implement the concepts and features described herein. The following description includes specific details for the purpose of providing a thorough understanding of various concepts. However, it will be apparent to those skilled in the art that these concepts can be practiced without these specific details. In some cases, well-known circuits, structures, technologies, and components are shown in block diagram form to avoid obscuring the concepts and features described.
貫穿本發明所呈現之各種概念可跨越廣泛多種電信系統、網路架構、電子裝置、行動裝置、計算裝置及通信標準來實施。下文參考特定協定、系統及技術來描述本發明之某些態樣。然而,一般熟習此項技術者將認識到,可在一或多個其他無線通信協定、系統及技術中使用及包括本發明之一或多個態樣。 Various concepts presented throughout the present invention can be implemented across a wide variety of telecommunication systems, network architectures, electronic devices, mobile devices, computing devices, and communication standards. Certain aspects of the invention are described below with reference to specific protocols, systems, and technologies. However, those of ordinary skill in the art will recognize that one or more aspects of the invention may be used in and include one or more other wireless communication protocols, systems, and technologies.
本發明之各種特徵及態樣係關於保證以某種排序執行任務,甚至在接收目標裝置或介面協定並不提供對此佇列排序之支援之情況下亦如此。在主機裝置上操作之主機軟體可對某一任務標記佇列阻隔(QBR)指示符(例如,標籤或標記)。然而,與主機裝置通信之目標I/O裝置及/或所使用之I/O通信協定可能不支援此QBR指示符。因此,當主機I/O控制器處理經加標籤有/經標記有QBR指示符之任務時,其不會將該任務發送至目標I/O裝置,直至先前經排入佇列(在目標I/O裝置 處)之所有任務得到執行為止。目標I/O裝置可在每一任務得到執行或處理時將執行應答發送至主機I/O控制器。主機裝置處之主機I/O控制器亦可遲延/保持在經標記有QBR之任務之後經排入佇列的所有任務且僅在經標記有QBR之任務得到執行之後將該等所有任務傳遞至目標I/O裝置。因此,佇列阻隔可在主機裝置之主機I/O控制器中作為I/O介面之部分來實施。舉例而言,在佇列阻隔不被I/O通信協定及/或目標I/O裝置原生地支援之情況下,主機I/O控制器處之此佇列阻隔可為有用的。在其他情況下,即使I/O通信協定支援佇列阻隔,主機I/O控制器處之此佇列阻隔亦可為有用的。舉例而言,可存在以下狀況:即使I/O通信協定支援佇列阻隔,亦仍可能需要允許主機I/O控制器亦實施佇列阻隔,諸如,當I/O通信協定可能不允許發送佇列阻隔命令而其他者仍處於進行中時。此概念預期在任一時刻(亦即,同時地)在佇列中使用一或多個經標記有/經加標籤有QBR之任務。 The various features and aspects of the present invention are related to ensuring that tasks are performed in a certain order, even when the receiving target device or interface protocol does not provide support for this queue ordering. Host software operating on the host device may mark a task with a queue blocking (QBR) indicator (eg, a label or tag). However, the target I / O device communicating with the host device and / or the I / O communication protocol used may not support this QBR indicator. Therefore, when the host I / O controller processes a task that is tagged / tagged with the QBR indicator, it will not send the task to the target I / O device until it is previously queued (at target I / O device Until all tasks are performed. The target I / O device can send an execution response to the host I / O controller when each task is executed or processed. The host I / O controller at the host device can also delay / maintain all tasks queued after the task marked with QBR and pass all these tasks to the task marked with QBR only after execution Target I / O device. Therefore, queue blocking can be implemented as part of the I / O interface in the host I / O controller of the host device. For example, where queue blocking is not natively supported by I / O communication protocols and / or target I / O devices, such queue blocking at the host I / O controller may be useful. In other cases, even if the I / O communication protocol supports queue blocking, this queue blocking at the host I / O controller can be useful. For example, there may be situations where even if the I / O protocol supports queue blocking, it may still be necessary to allow the host I / O controller to implement queue blocking as well, such as when the I / O protocol may not allow sending. While blocking commands while others are still in progress. This concept anticipates the use of one or more tasks labeled / tagged QBR in the queue at any one time (ie, simultaneously).
圖1為包含經由匯流排106耦接至目標I/O裝置104且經調適以實施佇列阻隔功能性之主機裝置102之系統的方塊圖。主機裝置102可包括主機軟體108、任務佇列109及主機控制器110。目標I/O裝置104可包括控制器112、任務佇列及儲存裝置116。主機任務佇列109可保持發送至目標I/O裝置104之任務。舉例而言,此主機任務佇列109可供主機軟體108使用以將任務提供至主機控制器110,且可用以保持該等任務,直至將該等任務發送至目標I/O裝置104為止。 FIG. 1 is a block diagram of a system including a host device 102 coupled to a target I / O device 104 via a bus 106 and adapted to implement queue blocking functionality. The host device 102 may include host software 108, a task queue 109, and a host controller 110. The target I / O device 104 may include a controller 112, a task queue, and a storage device 116. The host task queue 109 may keep tasks sent to the target I / O device 104. For example, the host task queue 109 may be used by the host software 108 to provide tasks to the host controller 110 and may be used to maintain the tasks until the tasks are sent to the target I / O device 104.
在各種實施中,目標I/O裝置104可為不同於主機裝置或與主機裝置分離之組件,或目標I/O裝置104可連同主機裝置102一起整合為單一半導體晶片之部分。舉例而言,目標I/O裝置104可為符合聯合電子裝置工程協會(JEDEC)之嵌入式多媒體控制器(eMMC)標準之快閃儲存裝置。有時藉由協定來定義佇列阻隔以允許相對於其他任務定義針 對一任務之執行次序。然而,此情形僅在目標I/O裝置辨識並遵守由此阻隔標籤/標記定義之執行次序時起作用。 In various implementations, the target I / O device 104 may be a component different from or separate from the host device, or the target I / O device 104 may be integrated with the host device 102 into a single semiconductor chip. For example, the target I / O device 104 may be a flash memory device that conforms to the Embedded Multimedia Controller (eMMC) standard of the Joint Electronic Device Engineering Association (JEDEC). Queue barriers are sometimes defined by agreement to allow defining pins relative to other tasks The order of execution of a task. However, this situation only works if the target I / O device recognizes and adheres to the execution order defined by this blocking tag / tag.
根據一種途徑,主機軟體108可產生應相對於其他任務而以某種次序執行之任務。舉例而言,第一任務必須在執行所有後續任務之前執行。因此,主機軟體108可對第一任務標記佇列阻隔(QBR)指示符(例如,標籤、標記或位元)以指示應相對於其他任務而以某種次序執行第一任務(例如,第一任務必須在於第一任務之前發出之所有任務之後執行,及/或第一任務必須在於第一任務之後發出之所有任務之前執行,等等)。主機控制器110可辨識第一任務經標記有QBR指示符。因此,主機控制器110可遲延或保持第一任務而不是將第一任務發送至目標I/O裝置104,直至接收到所有先前任務已由目標I/O裝置104執行之應答或指示為止。同樣地,主機控制器110可遲延或保持所有後續任務,而不是將所有後續任務發送至目標I/O裝置104。一旦主機控制器110接收到所有先前任務已由目標I/O裝置104執行之指示,主機控制器便將第一任務發送至目標I/O裝置104。在將後續任務發送至目標I/O裝置104之前,主機控制器110接著等待接收第一任務已由目標I/O裝置104執行之指示。應注意,本文中所揭示之「任務」可為資料及/或非資料任務(例如,命令、指令等)。在一個實例中,任務可包括讀取及/或寫入操作。 According to one approach, the host software 108 may generate tasks that should be performed in a certain order relative to other tasks. For example, the first task must be performed before all subsequent tasks are performed. Therefore, the host software 108 may mark a queued blocking (QBR) indicator (e.g., a tag, tag, or bit) for the first task to indicate that the first task (e.g., the first The task must be performed after all tasks issued before the first task, and / or the first task must be performed before all tasks issued after the first task, etc.). The host controller 110 may recognize that the first task is marked with a QBR indicator. Therefore, the host controller 110 may delay or maintain the first task instead of sending the first task to the target I / O device 104 until receiving a response or instruction that all previous tasks have been performed by the target I / O device 104. Likewise, the host controller 110 may delay or hold all subsequent tasks instead of sending all subsequent tasks to the target I / O device 104. Once the host controller 110 receives an indication that all previous tasks have been performed by the target I / O device 104, the host controller sends the first task to the target I / O device 104. Before sending subsequent tasks to the target I / O device 104, the host controller 110 then waits to receive an indication that the first task has been performed by the target I / O device 104. It should be noted that "tasks" disclosed herein may be data and / or non-data tasks (eg, commands, instructions, etc.). In one example, tasks may include read and / or write operations.
圖2為說明可如何實施佇列阻隔功能之流程圖。主機軟體108可產生任務1...n 204且將該等任務提供至主機控制器110。主機控制器110接著將任務1...n發送至目標控制器112,目標控制器將該等任務提供至任務佇列114,可自該任務佇列執行或處理該等任務208。 FIG. 2 is a flowchart illustrating how the queue blocking function can be implemented. The host software 108 may generate tasks 1... 204 and provide the tasks to the host controller 110. The host controller 110 then sends tasks 1 ... n to the target controller 112, which provides the tasks to a task queue 114 from which the tasks 208 can be executed or processed.
主機軟體108亦可產生經標記有佇列阻隔指示符212(例如,標記或標籤)之任務R 210。將任務R提供至主機控制器110。然而,因為任務R經加標籤/經標記為QBR,所以主機控制器110遲延或保持任務R 216。主機控制器110等待來自目標I/O裝置104之所有先前所發送任務已得到執行或處理之應答。在接收到任務1...n已由目標I/O裝置104執行或處理之應答217後,主機控制器110便將任務R發送至目標控制器112。應注意,在一些實施中,可在處理最後的任務(亦即,任務n)但此處理尚未完成的同時發送任務1...n已得到執行或處理之應答。將任務R自目標控制器112傳遞至任務佇列114,自該任務佇列處理或執行該任務226。 The host software 108 may also generate a task R 210 labeled with a queue blocking indicator 212 (eg, a tag or label). The task R is provided to the host controller 110. However, because task R is tagged / labeled as QBR, host controller 110 delays or maintains task R 216. The host controller 110 waits for a response that all previously sent tasks from the target I / O device 104 have been executed or processed. After receiving the response 217 that the tasks 1 ... n have been executed or processed by the target I / O device 104, the host controller 110 sends the task R to the target controller 112. It should be noted that in some implementations, a reply that tasks 1 ... n have been executed or processed may be sent while the last task (i.e. task n) is processed but this processing has not been completed. The task R is passed from the target controller 112 to the task queue 114, and the task 226 is processed or executed from the task queue.
在此期間,主機控制器110遲延或保持222在任務R之後產生之任何任務t...w 218,直至主機控制器接收到任務R已由目標I/O裝置104執行或處理之應答為止。在接收到任務R已由目標I/O裝置104執行或處理之應答224後,主機控制器110便將任務t...w發送至目標控制器112,該目標控制器將任務傳遞至任務佇列114,可自該任務佇列處理或執行該等任務228。 During this period, the host controller 110 delays or holds 222 any task t ... w 218 generated after the task R until the host controller receives a response that the task R has been executed or processed by the target I / O device 104. After receiving the response 224 that the task R has been executed or processed by the target I / O device 104, the host controller 110 sends the task t ... w to the target controller 112, which transmits the task to the task 伫Column 114 may process or perform such tasks 228 from the task queue.
以此方式,主機控制器110能夠單方面地實施用於任務之佇列阻隔,甚至在目標I/O控制器及/或I/O協定並不支援佇列阻隔時亦如此。因此,可由主機控制器110來實施任務執行排序。 In this way, the host controller 110 can unilaterally implement queue blocking for tasks, even when the target I / O controller and / or I / O protocol does not support queue blocking. Therefore, task execution sequencing may be implemented by the host controller 110.
應注意,可在任一時刻(亦即,同時地)在任務佇列中使用一或多個經標記有/經加標籤有QBR之任務。因此,可將經加標籤/經標記為QBR之多個任務置放於主機裝置佇列中,每一經標記有/經加標籤有QBR之任務係按每一經標記有/經加標籤有QBR之任務置放於主機裝置任務佇列中之次序而發送至目標I/O裝置。 It should be noted that one or more tasks that are tagged / tagged with QBR may be used in the task queue at any one time (i.e., simultaneously). Therefore, multiple tasks tagged / labeled with QBR can be placed in the host device queue. Each task labeled / labeled with QBR is assigned to each labeled / labeled QBR. The tasks are placed in the order of the host device's task queue and sent to the target I / O device.
圖3(包含圖3A、圖3B及圖3C)以圖形方式說明主機裝置上之佇列阻隔指示符之例示性實施的處理。主機裝置102可實施第一任務佇列302,任務被置放於該第一任務佇列中以供主機控制器110進行處理。目標裝置104可類似地實施第二任務佇列304,由目標控制器112接收之任務被置放於該第二任務佇列中以供目標裝置104進行處理。 FIG. 3 (including FIGS. 3A, 3B, and 3C) graphically illustrates a process of an exemplary implementation of a queue blocking indicator on a host device. The host device 102 may implement a first task queue 302, and tasks are placed in the first task queue for processing by the host controller 110. The target device 104 may similarly implement the second task queue 304, and the tasks received by the target controller 112 are placed in the second task queue for processing by the target device 104.
第一任務佇列302中之任務可經加標籤有或經標記有佇列阻隔指示符。舉例而言,佇列阻隔指示符=「0」指示無佇列阻隔,而佇列阻隔指示符=「1」指示佇列阻隔。主機控制器110可在執行或處理每一任務之前檢查每一任務之佇列阻隔指示符。若對於特定任務而言,佇列阻隔指示符=「0」,則主機控制器處理該任務。否則,若對於特定任務而言,佇列阻隔指示符=「1」,則主機控制器遲延或暫停彼任務(及可能的所有後續任務)之處理,直至主機控制器接收到所有先前所發送任務已由目標裝置104處理之指示或應答為止。 The tasks in the first task queue 302 may be labeled or marked with a queue blocking indicator. For example, the queue barrier indicator = "0" indicates no queue barrier, and the queue barrier indicator = "1" indicates queue barrier. The host controller 110 may check the queue blocking indicator of each task before executing or processing each task. If the queue blocking indicator = "0" for a specific task, the host controller processes the task. Otherwise, if the queue blocking indicator = "1" for a specific task, the host controller delays or suspends processing of that task (and all possible subsequent tasks) until the host controller receives all previously sent tasks Until the instruction or response has been processed by the target device 104.
在時間k,主機控制器110可藉由將任務n發送至目標裝置104來執行或處理任務n,在目標裝置中,任務n被置放至第二任務佇列304中。當目標裝置104處理每一任務時,目標裝置可將每一任務之執行應答發送至主機裝置102。 At time k, the host controller 110 may execute or process task n by sending task n to the target device 104. In the target device, task n is placed in the second task queue 304. When the target device 104 processes each task, the target device may send an execution response for each task to the host device 102.
在時間k+i,主機控制器110可藉由將任務n+i發送至目標裝置104來執行或處理任務n+i,在目標裝置中,任務n+i被置放至第二任務佇列304中。 At time k + i, the host controller 110 may execute or process task n + i by sending task n + i to the target device 104. In the target device, task n + i is placed in the second task queue. 304.
在時間k+i+1,主機控制器110可準備好執行或處理任務p。在針對任務p檢查佇列阻隔指示符後,主機控制器隨即偵測到該指示符經啟用或經設定至「1」,從而指示對於任務p,確證了佇列阻隔。因此,主機控制器110暫停或遲延任務p(及所有後續任務)之處理,直至主機控制器接收到發送至目標裝置104之所有先前任務已得到處理之應答或指示為止。 At time k + i + 1, the host controller 110 may be ready to perform or process task p. After checking the queue blocking indicator for task p, the host controller then detects that the indicator is enabled or set to "1", thereby indicating that queue blocking is confirmed for task p. Therefore, the host controller 110 suspends or delays the processing of task p (and all subsequent tasks) until the host controller receives a response or instruction that all previous tasks sent to the target device 104 have been processed.
至時間k+i+j時止,主機控制器110可能已接收到包括任務n+i之所有先前任務已由目標裝置104執行或處理之應答。因此,在時間k+i+j+1,主機控制器110可處理任務p。主機控制器110可遲延所有後續任務,直至任務p(亦即,具有佇列阻隔指示符之任務)已由目標裝置處理之指示或應答為止。在時間k+i+j+2,主機控制器110可接收任 務p之執行應答。接著,在時間k+i+j+3,主機控制器110可處理後續任務p+1,等等。 By the time k + i + j, the host controller 110 may have received a response that all previous tasks including the task n + i have been executed or processed by the target device 104. Therefore, at time k + i + j + 1, the host controller 110 can process task p. The host controller 110 may delay all subsequent tasks until the task p (ie, the task with the queue blocking indicator) has been instructed or answered by the target device. At time k + i + j + 2, the host controller 110 may receive any The execution response of task p. Then, at time k + i + j + 3, the host controller 110 can process subsequent tasks p + 1, and so on.
應注意,在一個實例中,佇列阻隔指示符可為隨附至每一任務之位元。在另一實例中,可將用於每一任務之佇列阻隔指示符維持於單獨記憶體區段中。 It should be noted that in one example, the queue blocking indicator may be a bit attached to each task. In another example, the queue blocking indicators for each task may be maintained in separate memory segments.
圖4為說明可由主機控制器操作以實施用於任務之佇列阻隔之方法的流程圖。此方法可(例如)由圖1、圖2及圖3中所說明之主機控制器110來實施。主機控制器可包括通信介面,主機控制器經由該通信介面而與目標裝置通信。主機控制器內之處理電路可經調適以進行以下操作:(a)獲得經標記有佇列阻隔指示符之第一任務402;(b)遲延第一任務至目標裝置的傳輸404;(c)遲延在第一任務之後出現之任何任務至目標裝置的傳輸406;(d)一旦自目標裝置接收到所有先前所發送任務已得到處理之指示408,便將第一任務發送至目標裝置410;及/或(e)一旦自目標裝置接收到第一任務已得到處理之指示414,便將在第一任務之後出現之任何任務發送至目標裝置416。否則,遲延在第一任務之後出現之任何任務412,直至接收到此指示為止。應注意,在一些實施中,並不將佇列阻隔指示符發送至目標裝置。 FIG. 4 is a flowchart illustrating a method operable by the host controller to implement queue blocking for tasks. This method may be implemented, for example, by the host controller 110 illustrated in FIGS. 1, 2 and 3. The host controller may include a communication interface through which the host controller communicates with the target device. The processing circuit in the host controller can be adapted to perform the following operations: (a) obtaining a first task 402 marked with a queue blocking indicator; (b) delaying the transmission of the first task to the target device 404; (c) Delaying the transmission of any task to the target device after the first task 406; (d) sending the first task to the target device 410 upon receiving from the target device an indication 408 that all previously sent tasks have been processed; and / Or (e) Upon receiving from the target device an indication 414 that the first task has been processed, any task that occurs after the first task is sent to the target device 416. Otherwise, any task 412 that appears after the first task is delayed until this instruction is received. It should be noted that in some implementations, the queue blocking indicator is not sent to the target device.
在一些實施中,主機控制器及目標裝置可使用佇列阻隔指示符功能性不被支援之協定通信。另外,佇列阻隔指示符功能性亦可能在目標裝置中不被支援。主機控制器可與目標裝置整合於單一半導體裝置中。在一個實例中,目標裝置可為儲存裝置(例如,非揮發性儲存器、揮發性儲存器、快閃儲存器等)。 In some implementations, the host controller and the target device may communicate using a protocol in which queue blocking indicator functionality is not supported. In addition, queue blocking indicator functionality may not be supported on the target device. The host controller can be integrated with the target device in a single semiconductor device. In one example, the target device may be a storage device (eg, non-volatile storage, volatile storage, flash storage, etc.).
圖5為說明實施主機控制之佇列阻隔功能性之主機裝置的例示性實例的方塊圖。主機裝置502可包括處理電路504、主機控制器506、處理器可讀儲存媒體/裝置508、記憶體裝置530、收發器電路512及匯 流排510。 FIG. 5 is a block diagram illustrating an illustrative example of a host device that implements host-controlled queue blocking functionality. The host device 502 may include a processing circuit 504, a host controller 506, a processor-readable storage medium / device 508, a memory device 530, a transceiver circuit 512, and a sink. Stream 510.
處理電路504可包括任務產生器模組/電路514,其經調適以產生一或多個任務且將該等任務置放於共用記憶體裝置530內之任務佇列522中。處理電路504亦可包括佇列阻隔標記模組/電路516,其經調適以對一或多個任務標記如由作業系統、主機軟體或編譯器指示之佇列阻隔指示符。在一個實例中,處理器可讀儲存媒體裝置508可包括任務產生器指令524及佇列阻隔標記指令526以准許在處理電路504上操作之主機軟體執行此等功能。 The processing circuit 504 may include a task generator module / circuit 514 that is adapted to generate one or more tasks and place the tasks in a task queue 522 within the shared memory device 530. The processing circuit 504 may also include a queue blocking marking module / circuit 516 adapted to mark one or more tasks, such as a queue blocking indicator instructed by an operating system, host software, or compiler. In one example, the processor-readable storage media device 508 may include a task generator instruction 524 and a queue blocking flag instruction 526 to allow host software operating on the processing circuit 504 to perform these functions.
主機控制器506可自記憶體裝置530內之任務佇列522獲得任務。佇列阻隔指示符檢查器520可在執行之前檢查每一任務以查明針對彼特定任務是否設定佇列阻隔指示符。若針對任務未設定佇列阻隔指示符,則主機控制器506可處理該任務,例如,經由收發器電路512將該任務(例如,資料及命令)發送至目標裝置。若針對任務設定佇列阻隔指示(例如,「1」),則主機控制器506可遲延、暫時中止或暫停該任務及所有後續任務之執行或處理。在一個實例中,任務可包括待對目標裝置執行之讀取及/或寫入操作。 The host controller 506 can obtain tasks from the task queue 522 in the memory device 530. The queue blocking indicator checker 520 may check each task before execution to find out whether a queue blocking indicator is set for that particular task. If no queue blocking indicator is set for the task, the host controller 506 can process the task, for example, send the task (eg, data and commands) to the target device via the transceiver circuit 512. If a queue blocking instruction is set for a task (for example, "1"), the host controller 506 may delay, temporarily suspend or suspend the execution or processing of the task and all subsequent tasks. In one example, the tasks may include read and / or write operations to be performed on the target device.
主機控制器506可維持用於處理中任務之狀態資訊。目標裝置可針對目標裝置已處理之每一任務將應答發送至主機控制器506。在接收到所有先前任務已得到處理之指示後,主機控制器506便可處理(例如,發送)經暫時中止或經暫停之任務及所有後續任務。 The host controller 506 can maintain status information for tasks in progress. The target device may send a response to the host controller 506 for each task that the target device has processed. After receiving an indication that all previous tasks have been processed, the host controller 506 can process (eg, send) tasks that were temporarily suspended or suspended and all subsequent tasks.
圖6為說明可在主機裝置處操作以實施佇列阻隔功能性之例示性方法的流程圖。在主機裝置上操作之主機軟體可獲得或產生一或多個任務602。對於每一任務,主機軟體可查明是否應對該任務標記佇列阻隔指示符604。若應對該任務標記佇列阻隔指示符,則設定或啟用用於該任務之阻隔佇列指示符606。接著將每一任務儲存於與主機控制器共用之任務佇列中608。 6 is a flowchart illustrating an exemplary method operable at a host device to implement queue blocking functionality. Host software operating on the host device may obtain or generate one or more tasks 602. For each task, the host software can ascertain whether the task should mark the queue blocking indicator 604 or not. If the queue blocking indicator is to be marked for the task, a blocking queue indicator 606 for the task is set or enabled. Each task is then stored in a task queue 608 shared with the host controller.
圖7為說明經調適以促進佇列阻隔功能性之例示性主機控制器的方塊圖。在此實例中,主機控制器702可包括控制器處理電路704,其耦接至一或多個暫存器708及/或輸入/輸出通信介面或電路710。控制器處理電路704可包括任務處理模組/電路711、佇列阻隔指示符偵測模組/電路712、任務暫停模組/電路714,及/或任務恢復模組/電路716。 FIG. 7 is a block diagram illustrating an exemplary host controller adapted to facilitate queue blocking functionality. In this example, the host controller 702 may include a controller processing circuit 704 that is coupled to one or more registers 708 and / or an input / output communication interface or circuit 710. The controller processing circuit 704 may include a task processing module / circuit 711, a queue blocking indicator detection module / circuit 712, a task suspension module / circuit 714, and / or a task recovery module / circuit 716.
任務處理模組/電路711可自任務佇列726擷取任務,處理所擷取之任務,且接著處理任務佇列726中之下一任務。此等任務可包括(例如)執行自外部目標裝置/至外部目標裝置之讀取或寫入操作。佇列阻隔指示符偵測模組/電路712可在處理特定任務之前查明彼任務是否經標記有或經加標籤有佇列阻隔指示符。若針對特定任務偵測到佇列阻隔指示符,則任務暫停模組/電路714可凍結、暫停或暫時中止該任務及後續任務之處理(例如,暫停當前任務及在任務佇列中處於申請中之任何後續任務之處理)。任務恢復模組/電路716可監視目標裝置處之先前任務之完成且,在接收到所有先前任務已由目標裝置處理之指示後,便恢復任務佇列中之任務之處理。 The task processing module / circuit 711 may retrieve a task from the task queue 726, process the captured task, and then process the next task in the task queue 726. Such tasks may include, for example, performing a read or write operation from / to an external target device. The queue blocking indicator detection module / circuit 712 can find out whether a task is marked or tagged with a queue blocking indicator before processing a specific task. If a queue blocking indicator is detected for a specific task, the task suspension module / circuit 714 may freeze, suspend, or temporarily suspend processing of the task and subsequent tasks (e.g., suspend the current task and be in the queue for an application Any subsequent tasks). The task recovery module / circuit 716 may monitor the completion of previous tasks at the target device and resume the processing of the tasks in the task queue after receiving the instructions that all previous tasks have been processed by the target device.
在一個實例中,主機控制器702可耦接至儲存裝置706(例如,經由I/O介面電路710)以便獲得一或多個操作指令。舉例而言,儲存裝置706可包括用以處理來自任務佇列726之任務的任務處理指令719、用以偵測阻隔指示符之存在或出現的佇列阻隔指示符偵測指令720、用以在偵測到阻隔指示符時暫停來自任務佇列之任務之處理的任務暫停指令722,及/或用以一旦阻隔指示符已清除便恢復任務之處理的任務恢復指令724。 In one example, the host controller 702 may be coupled to the storage device 706 (eg, via the I / O interface circuit 710) in order to obtain one or more operation instructions. For example, the storage device 706 may include a task processing instruction 719 to process a task from the task queue 726, a queue blocking indicator detection instruction 720 to detect the presence or presence of a blocking indicator, A task pause instruction 722 that suspends processing of tasks from the task queue when a blocking indicator is detected, and / or a task resume instruction 724 that resumes processing of the task once the blocking indicator has been cleared.
在一個實例中,輸入/輸出通信介面或電路710可用來將控制器處理電路704通信地耦接至匯流排,該輸入/輸出通信介面或電路經由該 匯流排而耦接至至/自目標裝置之收發器電路。或者,輸入/輸出通信介面或電路710可將控制器處理電路704直接耦接至目標裝置。 In one example, the input / output communication interface or circuit 710 may be used to communicatively couple the controller processing circuit 704 to the bus, the input / output communication interface or circuit being via the The bus is coupled to / from the transceiver circuit of the target device. Alternatively, the input / output communication interface or circuit 710 may directly couple the controller processing circuit 704 to the target device.
圖8為說明可由經調適以促進佇列阻隔功能性之主機控制器操作之例示性方法的流程圖。主機控制器可自任務佇列獲得任務802。主機控制器接著查明該任務是否經標記有佇列阻隔指示符804。若該任務經標記有佇列阻隔指示符,則主機控制器遲延任務至目標裝置的傳輸806。一旦主機控制器接收到目標裝置已完成所有先前所發送任務之處理之指示808,主機控制器便將該任務發送至目標裝置810。可針對任務佇列中之每一任務重複此處理程序。 8 is a flowchart illustrating an exemplary method that can be operated by a host controller adapted to facilitate queue blocking functionality. The host controller can obtain task 802 from the task queue. The host controller then determines if the task is marked with a queue blocking indicator 804. If the task is marked with a queue blocking indicator, the host controller delays the transmission of the task to the target device 806. Once the host controller receives an indication 808 that the target device has completed processing of all previously sent tasks, the host controller sends the task to the target device 810. This process can be repeated for each task in the task queue.
圖9為說明可由經調適以促進佇列阻隔功能性之主機控制器操作之例示性方法的另一流程圖。主機控制器可順序地自任務佇列獲得多個任務,其中第一任務為該多個任務之一902。當獲得或擷取每一任務時,主機控制器可查明每一任務是否經標記有佇列阻隔指示符904。舉例而言,可判定第一任務經標記有佇列阻隔指示符906。因此,主機控制器遲延第一任務至目標裝置的傳輸908。同樣地,主機控制器亦可遲延在第一任務之後出現之任何任務至目標裝置的傳輸,直至自目標裝置接收到所有先前所發送任務已得到處理之指示為止910。一旦自目標裝置接收到所有先前所發送任務已得到處理之指示,便將第一任務發送至目標裝置912。一旦自目標裝置接收到第一任務已得到處理之指示,便可將在第一任務之後出現之任何任務發送至目標裝置914。 FIG. 9 is another flowchart illustrating an exemplary method that can be operated by a host controller adapted to facilitate queue blocking functionality. The host controller may sequentially obtain a plurality of tasks from the task queue, wherein the first task is one of the plurality of tasks 902. When each task is obtained or retrieved, the host controller can ascertain whether each task is marked with a queue blocking indicator 904. For example, it may be determined that the first task is marked with a queue blocking indicator 906. Therefore, the host controller delays the transmission 908 of the first task to the target device. Similarly, the host controller may delay the transmission of any task that occurs after the first task to the target device until the target device receives an indication that all previously sent tasks have been processed 910. Upon receiving an indication from the target device that all previously sent tasks have been processed, the first task is sent to the target device 912. Once an indication is received from the target device that the first task has been processed, any tasks that occur after the first task can be sent to the target device 914.
在一個實例中,主機控制器及目標裝置使用佇列阻隔指示符功能性不被支援之一協定通信。在另一實例中,佇列阻隔指示符功能性在目標裝置中不被支援。在又一實例中,佇列阻隔指示符可能不同於在目標裝置中或在主機控制器與目標裝置之間的輸入/輸出通信協定中所支援的單獨佇列阻隔功能性。 In one example, the host controller and the target device communicate using one of the protocol that the queue blocking indicator functionality is not supported. In another example, the queue blocking indicator functionality is not supported in the target device. In yet another example, the queue blocking indicator may differ from the separate queue blocking functionality supported in the target device or in an input / output communication protocol between the host controller and the target device.
在一個實施中,主機控制器可為與目標裝置分離之裝置。在另一實施中,主機控制器可與目標裝置整合於單一半導體裝置中。在又一實施中,目標裝置為儲存裝置且該等任務包括讀取及/或寫入操作。根據一個態樣,將無佇列阻隔指示符之第一任務發送至目標裝置。 In one implementation, the host controller may be a device separate from the target device. In another implementation, the host controller can be integrated with the target device in a single semiconductor device. In yet another implementation, the target device is a storage device and the tasks include read and / or write operations. According to one aspect, the first task without the queue blocking indicator is sent to the target device.
雖然上文所論述之態樣、配置及實施例係以特定細節及特殊性加以論述,但圖1、圖2、圖3、圖4、圖5、圖6、圖7及/或圖8中所說明之組件、步驟、特徵及/或功能中之一或多者可經重新配置及/或組合成單一組件、步驟、特徵或功能,或體現於若干組件、步驟或功能中。在不脫離本發明之情況下,亦可添加或不利用額外元件、組件、步驟及/或功能。圖1、圖2、圖3、圖5及/或圖7中所說明之設備、裝置及/或組件可經組態以執行或使用圖2、圖3、圖4、圖6及/或圖8中所描述之方法、特徵、參數及/或步驟中之一或多者。本文中所描述之新穎演算法亦可有效率地實施於軟體中及/或嵌入於硬體中。 Although the aspects, configurations, and embodiments discussed above are discussed with specific details and particularities, in FIG. 1, FIG. 2, FIG. 3, FIG. 4, FIG. 5, FIG. 6, FIG. 7, and / or FIG. One or more of the illustrated components, steps, features, and / or functions may be reconfigured and / or combined into a single component, step, feature, or function, or embodied in several components, steps, or functions. Additional elements, components, steps, and / or functions may be added or not used without departing from the invention. The equipment, devices, and / or components illustrated in FIG. 1, FIG. 2, FIG. 3, FIG. 5, and / or FIG. 7 may be configured to perform or use FIG. 2, FIG. 3, FIG. 4, FIG. 6, and / or FIG. One or more of the methods, features, parameters and / or steps described in 8. The novel algorithms described herein can also be efficiently implemented in software and / or embedded in hardware.
又,應注意,至少一些實施已被描述為處理程序,該處理程序經描繪為流程圖(flowchart或flow diagram)、結構圖或方塊圖。儘管流程圖可能將操作描述為順序處理程序,但許多操作可並行地或同時地執行。另外,可重新配置操作之次序。當處理程序之操作完成時,該處理程序終止。處理程序可對應於方法、函式、程序、次常式、子程式等。當處理程序對應於函式時,處理程序之終止對應於函式返回至呼叫函式或主函式。本文中所描述之各種方法可部分地或完全地藉由程式設計(例如,指令及/或資料)來實施,該程式設計可儲存於非暫時性機器可讀、電腦可讀及/或處理器可讀儲存媒體中,且由一或多個處理器、機器及/或裝置來執行。 Also, it should be noted that at least some implementations have been described as a processing program, which is depicted as a flowchart or flow diagram, a structure diagram, or a block diagram. Although a flowchart may describe operations as a sequential handler, many operations can be performed in parallel or concurrently. In addition, the order of operations can be reconfigured. When the operation of the processing program is completed, the processing program is terminated. The processing procedure may correspond to a method, a function, a procedure, a subroutine, a subroutine, and the like. When the handler corresponds to a function, the termination of the handler corresponds to the function returning to the calling function or the main function. The methods described herein may be implemented partially or completely by programming (e.g., instructions and / or data), which may be stored in a non-transitory machine-readable, computer-readable, and / or processor The readable storage medium is executed by one or more processors, machines, and / or devices.
熟習此項技術者應進一步瞭解,結合本文中所揭示之實施例而描述之各種說明性邏輯區塊、模組、電路及演算法步驟可實施為硬 體、軟體、韌體、中間軟體、微碼或其任何組合。為了清楚地說明此可互換性,上文已大體上關於功能性描述了各種說明性組件、區塊、模組、電路及步驟。將此功能性實施為硬體抑或軟體取決於特定應用及強加於整個系統之設計約束。 Those skilled in the art should further understand that the various illustrative logical blocks, modules, circuits, and algorithm steps described in connection with the embodiments disclosed herein can be implemented as hard Software, firmware, firmware, middleware, microcode, or any combination thereof. To clearly illustrate this interchangeability, various illustrative components, blocks, modules, circuits, and steps have been described generally above with regard to functionality. Whether such functionality is implemented as hardware or software depends upon the particular application and design constraints imposed on the overall system.
在不脫離本發明之範疇之情況下,可在不同實例及實施中實施與本文中所描述及附圖中所展示之實例相關聯的各種特徵。因此,儘管已描述並在附圖中展示某些特定構造及配置,但此等實施例僅為說明性的且並不限制本發明之範疇,此係由於對於一般熟習此項技術者而言,對所描述實施例之各種其他添加及修改及刪除將為顯而易見的。因此,本發明之範疇僅藉由跟隨之申請專利範圍之文字語言及合法等效物來判定。 Various features associated with the examples described herein and shown in the drawings may be implemented in different examples and implementations without departing from the scope of the invention. Therefore, although certain specific configurations and configurations have been described and shown in the accompanying drawings, these embodiments are merely illustrative and do not limit the scope of the present invention. Various other additions, modifications, and deletions to the described embodiments will be apparent. Therefore, the scope of the present invention is determined only by the written language and legal equivalents of the scope of the patent application that follows.
102‧‧‧主機裝置 102‧‧‧Host device
104‧‧‧目標I/O裝置 104‧‧‧Target I / O device
302‧‧‧第一任務佇列 302‧‧‧First task queue
304‧‧‧第二任務佇列 304‧‧‧Second task queue
Claims (23)
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201361857570P | 2013-07-23 | 2013-07-23 | |
US61/857,570 | 2013-07-23 | ||
US14/338,235 | 2014-07-22 | ||
US14/338,235 US20150033234A1 (en) | 2013-07-23 | 2014-07-22 | Providing queue barriers when unsupported by an i/o protocol or target device |
Publications (2)
Publication Number | Publication Date |
---|---|
TW201516875A TW201516875A (en) | 2015-05-01 |
TWI619078B true TWI619078B (en) | 2018-03-21 |
Family
ID=52391622
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW103125378A TWI619078B (en) | 2013-07-23 | 2014-07-24 | Host controller, method operational on a host controller for communicating with a target device and readable storage medium |
Country Status (7)
Country | Link |
---|---|
US (1) | US20150033234A1 (en) |
EP (1) | EP3025231A1 (en) |
JP (1) | JP2016532950A (en) |
CN (1) | CN105453043B (en) |
AR (1) | AR099258A1 (en) |
TW (1) | TWI619078B (en) |
WO (1) | WO2015013458A1 (en) |
Families Citing this family (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9824004B2 (en) | 2013-10-04 | 2017-11-21 | Micron Technology, Inc. | Methods and apparatuses for requesting ready status information from a memory |
US10108372B2 (en) * | 2014-01-27 | 2018-10-23 | Micron Technology, Inc. | Methods and apparatuses for executing a plurality of queued tasks in a memory |
JP6356624B2 (en) * | 2015-03-23 | 2018-07-11 | 東芝メモリ株式会社 | Memory device and information processing apparatus |
TWI582684B (en) * | 2015-11-10 | 2017-05-11 | 慧榮科技股份有限公司 | Storage device and task execution method thereof, corresponding host and task execution method thereof, and control unit applied therein |
US10534540B2 (en) * | 2016-06-06 | 2020-01-14 | Micron Technology, Inc. | Memory protocol |
KR102327878B1 (en) | 2017-11-07 | 2021-11-17 | 삼성전자주식회사 | Semiconductor device and semiconductor system |
CN110501511B (en) * | 2019-08-13 | 2023-08-08 | 迈克医疗电子有限公司 | Online reagent adjusting method, device and analysis and detection system |
CN116339944B (en) * | 2023-03-14 | 2024-05-17 | 海光信息技术股份有限公司 | Task processing method, chip, multi-chip module, electronic device and storage medium |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6079012A (en) * | 1994-04-28 | 2000-06-20 | Hewlett-Packard Company | Computer that selectively forces ordered execution of store and load operations between a CPU and a shared memory |
TW521186B (en) * | 2000-08-11 | 2003-02-21 | Via Tech Inc | Sequencing method for accessing shared system resources and its bridging system |
US20040013124A1 (en) * | 2002-07-18 | 2004-01-22 | Peebles Brian E. | Apparatus and method for virtual output queue feedback |
TW200712889A (en) * | 2005-09-13 | 2007-04-01 | Via Tech Inc | Microprocessors and cache line requesting methods thereof |
Family Cites Families (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6643718B1 (en) * | 2000-07-21 | 2003-11-04 | Silicon Integrated Systems Corporation | Method and apparatus for controlling order dependency of items in a multiple FIFO queue structure |
US6901463B2 (en) * | 2003-03-05 | 2005-05-31 | Sun Microsystems, Inc. | Method and device for linking work requests with completion queue entries |
WO2004104838A1 (en) * | 2003-05-21 | 2004-12-02 | Fujitsu Limited | Data access response system, storage system, client device, cache device, and data access response system access method |
JP2005293066A (en) * | 2004-03-31 | 2005-10-20 | Nec Corp | Completion queuing system and completion queuing program |
US7725618B2 (en) * | 2004-07-29 | 2010-05-25 | International Business Machines Corporation | Memory barriers primitives in an asymmetric heterogeneous multiprocessor environment |
US8645959B2 (en) * | 2005-03-30 | 2014-02-04 | Intel Corporaiton | Method and apparatus for communication between two or more processing elements |
CN101165655A (en) * | 2006-10-20 | 2008-04-23 | 国际商业机器公司 | Multiple processor computation system and its task distribution method |
US7743191B1 (en) * | 2007-12-20 | 2010-06-22 | Pmc-Sierra, Inc. | On-chip shared memory based device architecture |
US8214604B2 (en) * | 2008-02-01 | 2012-07-03 | International Business Machines Corporation | Mechanisms to order global shared memory operations |
FR2939922B1 (en) * | 2008-12-16 | 2011-03-04 | Bull Sas | PHYSICAL MANAGER OF SYNCHRONIZATION BARRIER BETWEEN MULTIPLE PROCESSES |
US8352682B2 (en) * | 2009-05-26 | 2013-01-08 | Qualcomm Incorporated | Methods and apparatus for issuing memory barrier commands in a weakly ordered storage system |
US8607234B2 (en) * | 2009-07-22 | 2013-12-10 | Empire Technology Development, Llc | Batch scheduling with thread segregation and per thread type marking caps |
US8250576B2 (en) * | 2009-09-30 | 2012-08-21 | Microsoft Corporation | Structured task hierarchy for a parallel runtime |
US8332564B2 (en) * | 2009-10-20 | 2012-12-11 | Arm Limited | Data processing apparatus and method for connection to interconnect circuitry |
GB2489278B (en) * | 2011-03-24 | 2019-12-25 | Advanced Risc Mach Ltd | Improving the scheduling of tasks to be performed by a non-coherent device |
-
2014
- 2014-07-22 US US14/338,235 patent/US20150033234A1/en not_active Abandoned
- 2014-07-23 WO PCT/US2014/047906 patent/WO2015013458A1/en active Application Filing
- 2014-07-23 AR ARP140102736A patent/AR099258A1/en unknown
- 2014-07-23 JP JP2016529873A patent/JP2016532950A/en not_active Ceased
- 2014-07-23 CN CN201480041360.4A patent/CN105453043B/en active Active
- 2014-07-23 EP EP14755734.2A patent/EP3025231A1/en not_active Ceased
- 2014-07-24 TW TW103125378A patent/TWI619078B/en not_active IP Right Cessation
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6079012A (en) * | 1994-04-28 | 2000-06-20 | Hewlett-Packard Company | Computer that selectively forces ordered execution of store and load operations between a CPU and a shared memory |
TW521186B (en) * | 2000-08-11 | 2003-02-21 | Via Tech Inc | Sequencing method for accessing shared system resources and its bridging system |
US20040013124A1 (en) * | 2002-07-18 | 2004-01-22 | Peebles Brian E. | Apparatus and method for virtual output queue feedback |
TW200712889A (en) * | 2005-09-13 | 2007-04-01 | Via Tech Inc | Microprocessors and cache line requesting methods thereof |
Also Published As
Publication number | Publication date |
---|---|
CN105453043A (en) | 2016-03-30 |
US20150033234A1 (en) | 2015-01-29 |
CN105453043B (en) | 2019-12-13 |
JP2016532950A (en) | 2016-10-20 |
AR099258A1 (en) | 2016-07-13 |
TW201516875A (en) | 2015-05-01 |
WO2015013458A1 (en) | 2015-01-29 |
EP3025231A1 (en) | 2016-06-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI619078B (en) | Host controller, method operational on a host controller for communicating with a target device and readable storage medium | |
US9164908B2 (en) | Managing out-of-order memory command execution from multiple queues while maintaining data coherency | |
US10482047B2 (en) | Slave device connected to master device via I2C bus and communication method thereof | |
CN105095128B (en) | Interrupt processing method and interrupt controller | |
TWI591478B (en) | Host controller and/or device, and method operational therein and/or stored in a processor-storage medium to perform error detection and/or correction | |
KR102683728B1 (en) | Method of achieving low write latency in a data starage system | |
US20140344536A1 (en) | Storage systems that create snapshot queues | |
US9569303B2 (en) | Information processing apparatus | |
US20150100745A1 (en) | Method and apparatus for efficiently processing storage commands | |
US8671230B2 (en) | Data transfer device and data transfer method | |
JP2009529722A (en) | Apparatus, method and computer program product for generating tracking data | |
JP6138482B2 (en) | Embedded system | |
KR102036124B1 (en) | Method and apparatus for efficiently processing storage commands | |
KR101133879B1 (en) | Computer system and method for queuing interrupt messages in a device coupled to a parallel communication bus | |
JP2012038187A (en) | Electronic device | |
KR20080113052A (en) | An apparatus, method and computer program product for generting trace data |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
MM4A | Annulment or lapse of patent due to non-payment of fees |