WO2007097017A1 - バッファリング装置およびバッファリング方法 - Google Patents

バッファリング装置およびバッファリング方法 Download PDF

Info

Publication number
WO2007097017A1
WO2007097017A1 PCT/JP2006/303587 JP2006303587W WO2007097017A1 WO 2007097017 A1 WO2007097017 A1 WO 2007097017A1 JP 2006303587 W JP2006303587 W JP 2006303587W WO 2007097017 A1 WO2007097017 A1 WO 2007097017A1
Authority
WO
WIPO (PCT)
Prior art keywords
data
request
processing
waiting
state
Prior art date
Application number
PCT/JP2006/303587
Other languages
English (en)
French (fr)
Inventor
Kenji Shirase
Original Assignee
Fujitsu Limited
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Fujitsu Limited filed Critical Fujitsu Limited
Priority to JP2008501569A priority Critical patent/JP4779010B2/ja
Priority to PCT/JP2006/303587 priority patent/WO2007097017A1/ja
Publication of WO2007097017A1 publication Critical patent/WO2007097017A1/ja
Priority to US12/230,026 priority patent/US8533368B2/en

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1605Handling requests for interconnection or transfer for access to memory bus based on arbitration
    • G06F13/1642Handling requests for interconnection or transfer for access to memory bus based on arbitration with request queuing
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/90Buffering arrangements
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/90Buffering arrangements
    • H04L49/901Buffering arrangements using storage descriptor, e.g. read or write pointers

Definitions

  • the present invention relates to a buffering apparatus and a buffering method for buffering data used for processing that requires an order guarantee and / or a process that does not require an order guarantee.
  • the present invention relates to a buffering apparatus and a buffering method capable of executing a process that requires order guarantee and an unnecessary process on a circuit scale.
  • processing performed by an information processing apparatus such as a computer may or may not require order assurance.
  • the next process is not executed until the previous process is completed.
  • two or more processes can be executed in parallel if they can be executed. Executed.
  • Patent Document 1 Japanese Patent Application Laid-Open No. 10-207831
  • the present invention has been made in view of the strong point, and provides a noffering device and a buffering method capable of executing processing requiring order assurance and unnecessary processing with a small circuit scale.
  • the purpose is to provide.
  • the present invention provides a buffering device for buffering data used for any of processing that requires order guarantee and processing that does not require order guarantee.
  • Storage means for storing a plurality of data waiting for the data, reading means for reading out the data to be processed one by one from the storage means, and each data stored in the storage means which is stored in the storage means
  • a control unit that sets a waiting flag indicating whether to wait for completion of data processing in association with each data and controls a reading order by the reading unit in accordance with the waiting flag associated with each data. It is characterized by that.
  • control means sets a waiting flag in accordance with whether or not the data is used for processing that requires order guarantee.
  • control unit may process a data waiting flag stored in the storage unit prior to the data, for a data waiting flag used for processing that requires order assurance. It is set to wait for completion.
  • control unit waits only for completion of reading of data being read by the reading unit for a data queuing flag used for processing that does not require an order guarantee. It is characterized by setting to.
  • the present invention further includes a writing unit that writes data to the storage unit one by one, and the control unit relates to a waiting flag when the writing unit writes the data.
  • the wait flag information is added to the data and then written.
  • control unit determines a read standby state, a response standby state, and a process completion state for each piece of data stored in the storage unit, and stores the data in the storage unit.
  • the state transition is reflected in the waiting flag.
  • control unit may use a data queuing flag used for processing that requires order guarantee when any of the data states transitions from response waiting to processing completion. Waits for completion of processing of data whose state has changed It is characterized by unnecessary changes.
  • the control unit waits for data to be used for a process that does not require an order guarantee when any of the data states transitions from a read standby to a response standby.
  • the flag is characterized in that the completion of processing of data whose state has changed is changed so that no waiting is required.
  • the present invention is a buffering method for buffering data used for any of processing that requires order guarantee and processing that does not require order guarantee, and a plurality of data waiting for processing.
  • a storage step for storing data, a setting step for setting each data stored in the storage step in correspondence with each data, and setting a waiting flag indicating which data processing should be waited for, and the setting A control process for controlling the data reading order in accordance with the waiting flag associated with each data in the process, and a reading process for reading out the data to be processed one by one in accordance with the reading order in the control process. It is characterized by.
  • a plurality of data waiting for processing is stored, and a waiting flag that indicates which data stored should be waited for completion of processing is set in association with each data.
  • the data to be processed is read one by one while controlling the reading order according to the waiting flag associated with each data. For this reason, data can be read in an appropriate order by referring to the waiting flag of each data, even if data is mixed and stored in one place, regardless of whether or not order guarantee is required. It is possible to execute a process that requires processing and an unnecessary process.
  • the waiting flag is set according to whether or not the data is used for processing that requires order guarantee, the data used for the process that requires order guarantee is set in advance.
  • the wait flag is set so that it waits for the completion of processing of the data to be processed.
  • the wait flag is set so that it does not wait for the preceding data to be processed. Even in the case of misalignment data, the processing delay can be minimized.
  • data waiting to be used for processing that requires order guarantee is performed. Since the flag is set to wait for completion of processing of data stored before that data, the next data can be read after processing of one data is completed for data that requires order guarantee. The order can be reliably maintained.
  • the data waiting flag used for processing that does not require order assurance is set so as to wait only for completion of reading of the data being read. As soon as the data transmission path becomes available, the next data can be read out and processing delay can be suppressed.
  • the wait flag information related to the wait flag is added to the data and then written, so the correspondence between each data and the wait flag is clear.
  • the reading order can be accurately controlled.
  • a read waiting state, a response waiting state, and a processing completion state are determined, and when the data state transitions, the state transition is waited for. Reflect in the flag. For this reason, even when there is a response during processing for the read data, it is possible to control the read timing of the thin data more and further suppress the processing delay.
  • the state of any of the data transitions from response waiting to processing completion
  • the state is set according to the data waiting flag used for processing that requires order guarantee. Change the processing completion of the transitioned data so that it does not need to wait. For this reason, it is possible to efficiently update the waiting flag for data that requires order guarantee and to minimize the waiting time until the data is read.
  • the data whose state has been changed in the data waiting flag used for processing that does not require the order guarantee Change the completion of processing to no need for waiting. Therefore, it is possible to efficiently update the wait flag for data that does not require order guarantees, and to minimize the waiting time until data is read.
  • FIG. 1 is a block diagram showing a main configuration of an information processing apparatus according to an embodiment of the present invention.
  • FIG. 1 is a block diagram showing a main configuration of an information processing apparatus according to an embodiment of the present invention.
  • FIG. 2 is a block diagram showing an internal configuration of an IZO controller according to one embodiment.
  • FIG. 3 is a diagram illustrating an example of queue entries according to an embodiment.
  • FIG. 4 is a flowchart showing the operation of the cocoon controller according to the embodiment.
  • FIG. 5 is a flowchart showing an operation of setting a waiting flag according to an embodiment.
  • FIG. 6 is a flowchart showing a request issuing operation according to an embodiment.
  • FIG. 7-1 is a diagram showing a specific example of a list of waiting flags according to an embodiment.
  • Figure 7--2 is a diagram following Figure 7-1.
  • Figure 7--3 is a diagram following Figure 7--2.
  • Figure 7--4 is a continuation of Figure 7--3.
  • Figure 7--5 is a continuation of Figure 7--4.
  • Figure 7-6 is a diagram following Figure 7-5.
  • Figure 7--7 is a continuation of Figure 7--6.
  • Figure 7-8 is a figure following Figure 7-7.
  • Figure 7--9 is a continuation of Figure 7--8.
  • Fig. 7-10 is a diagram following Fig. 7-9.
  • Figure 7-11 is a figure following Figure 7-10.
  • Figure 7-12 is a continuation of Figure 7-11.
  • the present invention can also be applied to buffering in, for example, ATM (Asynchronous Transfer Mode) cell transfer.
  • ATM Asynchronous Transfer Mode
  • FIG. 1 is a block diagram showing a main configuration of an information processing apparatus according to an embodiment of the present invention.
  • the information processing apparatus shown in FIG. 1 includes an IZO (Input / Output) controller 100, a system controller 200, a CPU 300, and a memory 400.
  • IZO Input / Output
  • the IZO controller 100 controls data input / output between the information processing apparatus and another apparatus.
  • the ⁇ controller 100 outputs requests for various processing requests output from other devices to the system controller 200.
  • the I / O controller 100 outputs a request that requires an order guarantee after the request (hereinafter referred to as “preceding request” t) input to the controller 100 before this request has been issued.
  • the other device that issued the request may be in the same device as the information processing device, or may be an external device of the information processing device.
  • the IZO controller 100 and other devices are connected by, for example, PCI Express.
  • another device that issues a request is not limited to one device, and a plurality of other device capabilities may be issued.
  • the system controller 200 controls the CPU 300 and the memory 400, outputs a request from another device to the CPU 300, and outputs the result of arithmetic processing by the CPU 300 to the other device that issued the request via the IZO controller 100. .
  • CPU 300 reads out programs and data stored in memory 400, performs arithmetic processing, and outputs the results to system controller 200.
  • the information processing apparatus has a configuration in which two CPUs 300 are used.
  • the number of CPUs 300 may be one or three or more.
  • the memory 400 stores programs and data used by the CPU 300. For example, it consists of multiple DIMMs (Dual Inline Memory Module).
  • FIG. 2 is a block diagram showing an internal configuration of the IZO controller 100 according to the present embodiment. In the figure, only the part related to the output of the request of the I / O controller 100 is shown. 2 includes a writing unit 110, a buffer 120, a reading unit 130, and a sequence control unit 140.
  • the writing unit 110 writes the request output from the other device into any free queue in the buffer 120. At this time, the writing unit 110 adds the request state information and the waiting flag information according to the instruction of the order control unit 140, and writes the obtained entry in the empty queue.
  • the entry has a format in which a state and a waiting flag are added to a command and an address corresponding to the main body of the request.
  • the state represents the status of the request, waiting for the issuance of a preceding request (hereinafter referred to as “PR”), waiting for its own issuance (hereinafter referred to as this state).
  • PR a preceding request
  • RA the state waiting for a response from the system controller 200
  • SR request issuance completed and invalidated
  • the wait flag indicates a request that each request should wait for completion of issue. For example, a request stored in queue # 1 waits for completion of issue of a request stored in queue # 0. If it should, the queue # 0 flag is set in the queue # 1 request waiting flag.
  • the nofer 120 has a storage capacity capable of storing a plurality of requests, and is divided into a plurality of (eight in FIG. 2) queues, each of which stores one request. Queues # 0 to # 7 in the buffer 120 store entries in which state information and waiting flag information are added to the request.
  • the reading unit 130 reads out a request that includes any of the queuing powers in the buffer 120 in accordance with an instruction from the sequence control unit 140, and outputs the request to the system controller 200.
  • the order control unit 140 receives this request.
  • the state relating to the strike is set to PR, a wait flag is set according to the request type and the presence / absence of a preceding request, and the writing unit 110 is instructed to write the entry to the empty queue in the buffer 120.
  • the sequence control unit 140 refers to the states and waiting flags of the respective queues # 0 to # 7 in the nota 120, and reads the requests while controlling the issue order of the requests stored in the respective queues. To the reading unit 130.
  • the order control unit 140 rewrites the state information and the waiting flag information of the entries of the queues # 0 to # 7 in the buffer 120.
  • the specific request issue order control by the order control unit 140 will be described in detail later.
  • the sequence control unit 140 causes the queues # 0 to # 7 in the buffer 120 to be used.
  • a free queue is selected (step S200).
  • the state where the queue is empty means a state where no entry is stored in the queue, and a state where the entry stored in the queue is INV. If the state is INV, the corresponding request has already been issued, and the reception response from the system controller 200 has also been returned. Therefore, the request has been invalidated and can be handled as none.
  • the order control unit 140 can select any free queue. For example, the free queue with the smallest number is selected as a queue for a new request.
  • the order control unit 140 instructs the writing unit 110 to set the state of the new request to PR (step S300).
  • a new request is always a PR indicating that the preceding request is waiting to be issued. If all the preceding requests have been issued or if the preceding request is ineffective, the sequence control unit will be written after the new request is written to the queue. By 140, the state of this request is rewritten to SR indicating its own issuance waiting.
  • step S400 The waiting flag for this request is determined and set by the writing unit 110 (step S400).
  • the wait flag is set according to the flowchart shown in Fig. 5.
  • the order control unit 140 determines whether the new request is an s (strong order) type request that requires an order guarantee or a w (weakly order) type request that does not require an order guarantee (step S401). If the new request is type w (No in step S401), there is no need to wait for the completion of the previous request, so the flags corresponding to all the queues are set to 0 indicating no waiting is required (step S404). ).
  • step S401 Yes if the new request is the s type (step S401 Yes), this request needs to wait for completion of the issuance of the preceding request, and the order controller 140 precedes any queue in the nota 120. It is determined whether there is a request (step S402). As a result, if there is no preceding request in any queue (step S402 No), all flags are set to 0 (step S404), and if there is a preceding request in any queue (step S402 Yes), this preceding request is supported. The queue flag to be set is set to 1 indicating that waiting is required (step S403).
  • a request is written to each queue of the nota 120 by setting a wait flag based on the type of the new request and the presence / absence of the preceding request. It is possible to judge whether only the flag can be issued or not.
  • the writing unit 110 selects the entry in which the state information and the waiting flag information are added to the new request by the order control unit 140. Is written to the free queue in the designated buffer 120 (step S500). Thereafter, the order control unit 140 determines the order in which the requests of the queues # 0 to # 7 are issued, and the reading unit 130 reads and issues the requests in the determined issue order (step S600). Specifically, the request issuance is performed by the sequence control unit 140 and the reading unit 130 operating according to the flowchart shown in FIG.
  • the sequence control unit 140 stores the queues in the queues # 0 to # 7 in the nota 120.
  • a request whose status is PR is selected (step S601). At this time, if there are multiple requests whose state is PR, the request with the smallest number is selected. Then, the order control unit 140 confirms the waiting flag for the selected request to be issued, and determines whether all the flags are 0 (step S602).
  • step S603 As soon as the transmission path between the IZO controller 100 and the system controller 200 is opened, the request is read by the reading unit 130 (step S604) and output to the system controller 200. Then, the order control unit 140 rewrites the state of the read request in the notper 120 to RA indicating standby for a reception response (step S605).
  • the sequence control unit 140 rewrites the state of the read request in the notifier 120 to INV indicating invalidation. . This completes the issuance of the request to be issued.
  • step S606 the order control unit 140 confirms whether or not the request is of the s type. If the request to be issued is of type s (Yes in step S606), a request with a flag of 1 is issued, and it is monitored whether the state has changed to INV (step S607). When the state of the request with the flag 1 transits to INV (step S607 Yes), the issue of the preceding request that had to wait for the issue completion is completed. The flag power ⁇ of the preceding request is rewritten (step S608), and it is determined again whether or not the flag is 0 (step S602).
  • step S606 No If the request to be issued is w type (step S606 No), a request with a flag of 1 is read by the reading unit 130, and it is monitored whether the state has changed to RA (Ste S609). When the state of the request whose flag is 1 changes to RA (step S609 Yes), the transmission path is no longer occupied by the previous request. The flag is rewritten to 0 (step S610), and it is determined again whether or not the force is all flags set to 0 (step S602).
  • Figure 7-1 shows that all queues # 0 to # 7 in buffer 120 are free queues, in other words, the state of requests stored in all queues # 0 to # 7 is INV. It is a diagram showing a list of waiting flags in each queue in a certain state. In the state shown in Figure 7-1, since no valid request is stored in any queue, the queue flag for all queues is set to the full flag power SO.
  • the request si is written into the queue # 0 by the writing unit 110.
  • the state of the request si is PR indicating that the preceding request is waiting to be issued. Since request si is stored with no preceding request, all the flags remain 0 in the waiting flag of request si. This state is shown in Figure 7-2.
  • the request wl is written to the queue # 1 by the writing unit 110.
  • the state of the request wl is PR.
  • the state of request si which is the preceding request, transits to SR indicating its own issuance wait. This state is shown in Figure 7-3.
  • the request s2 is output from another device as a new request, the request s2 is written to the queue # 2 by the writing unit 110. At this time, the state of request s2 is set to PR.
  • request si and request wl are already stored in queue # 0 and queue # 1, respectively, so queue # 0 corresponding to these requests in the wait flag of request s2 And the flag force of queue # 1. Furthermore, since request wl does not need to wait for completion of issuing request si, the state can be rewritten to SR. Since the transmission path is occupied by preceding request si, request wl corresponds to request si in the wait flag of request wl. Queue # 0 flag to be set to 1. This state is shown in Figure 7-4.
  • the request w2 is written to the queue # 3 by the writing unit 110.
  • the state of the request w2 is set to PR.
  • the request si is output from the reading unit 130 to the system controller 200, and the state transits to RA.
  • the transmission path from the reading unit 130 to the system controller 200 becomes usable, so that the flag power of queue # 0 corresponding to the request si is set in the waiting flag of the request wl.
  • the request wl is read by the reading unit 130 and output to the system controller 200. This state is shown in Fig. 75.
  • the request wl is output from the reading unit 130 to the system controller 200, and the state transits to RA.
  • the transmission path from the reading unit 130 to the system controller 200 becomes usable, so that the queue # 1 flag corresponding to the request wl is set to 0 in the waiting flag of the request w2.
  • the request w2 is read by the reading unit 130 and output to the system controller 200. This state is shown in Figure 7-7.
  • the request si is invalidated and the state of the queue # 0 becomes INV.
  • the request s2 waits for the completion of the issuance of the request si. Therefore, the queue # 0 flag corresponding to the request si is set to 0 in the waiting flag of the request s2. This state is shown in Fig. 79.
  • a waiting flag indicating whether or not it is necessary to wait for issuing requests corresponding to all queues in the notifier is associated with each request.
  • set the flag of each request appropriately in the wait flag, and set the wait flag for the request to be issued so that all flags do not need to be waited In this case, issue the request to be issued. For this reason, multiple requests written in one buffer can be issued while performing the necessary order control, and processing that requires order guarantee and unnecessary processing can be executed with a small circuit scale.
  • the buffering in the IZO controller 100 connected to the system controller 200 has been described as an example.
  • the present invention is not limited to various types that require order assurance or priority control. Can be applied to buffers. At this time, in the above-described embodiment, no information is added to the force data itself, which is determined to add the state and waiting flag information to the data itself. It is conceivable to control the reading order of the reading unit 130 by managing the list as shown in ⁇ 7-12.
  • the present invention can be applied to a case where a process requiring an order guarantee and an unnecessary process can be executed with a small circuit scale.

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Information Transfer Systems (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

 小さい回路規模で順序保証が必要な処理と不要な処理とを実行可能にすること。書込部(110)は、リクエストを空きキューに書き込む。バッファ(120)は、複数のリクエストを記憶可能な記憶容量を有しており、それぞれ1つのリクエストを記憶する領域である複数のキューに別れている。読出部(130)は、順序制御部(140)の指示に従って、バッファ(120)内のいずれかのキューからリクエストを読み出し、システムコントローラ200へ出力する。順序制御部(140)は、バッファ(120)内の各キュー#0~#7のステートおよび待ち合わせフラグを参照し、リクエストの読み出しを読出部(130)へ指示する。そして、順序制御部(140)は、リクエストの読み出しに伴ってステートおよび待ち合わせフラグが変化すると、バッファ(120)内の各キュー#0~#7のステート情報および待ち合わせフラグ情報を書き換える。

Description

明 細 書
バッファリング装置およびバッファリング方法
技術分野
[0001] 本発明は、順序保証が必要な処理および順序保証が不要な処理の!/、ずれかの処 理に用いられるデータをバッファリングするバッファリング装置およびバッファリング方 法に関し、特に、小さい回路規模で順序保証が必要な処理と不要な処理とを実行可 能にすることができるバッファリング装置およびバッファリング方法に関する。
背景技術
[0002] 一般に、コンピュータなどの情報処理装置によって行われる処理には、順序保証す べきものと順序保証が不要なものとがある。順序保証すべき処理においては、前段の 処理が完了するまでは次の処理が実行されないのに対し、順序保証が不要な処理 においては、実行可能であれば、 2つ以上の処理が並行して実行される。
[0003] これらの 2種類の処理が混在している場合、通常は処理の順序を調停することが不 可欠となる。具体的には、例えば特許文献 1に記載されているように、処理対象のデ ータを分類して複数のノ ッファに一時的に記憶し、処理の優先度や順序を考慮しな がら、データを 、ずれかのバッファ力 読み出すことが行われる。
[0004] 特許文献 1 :特開平 10— 207831号公報
発明の開示
発明が解決しょうとする課題
[0005] し力しながら、順序保証のために複数のバッファが設けられる場合、回路規模が増 大してしまうという問題がある。すなわち、順序保証が必要な処理と順序保証が不要 な処理との両方が混在して!/ヽる場合には、少なくとも順序保証が必要な処理対象の データ用のバッファと順序保証が不要な処理対象のデータ用のバッファとの 2つのバ ッファが必要となり、バッファを構成する回路が複雑かつ大規模となってしまう。
[0006] 本発明は力かる点に鑑みてなされたものであり、小さい回路規模で順序保証が必 要な処理と不要な処理とを実行可能にすることができるノッファリング装置およびバッ ファリング方法を提供することを目的とする。 課題を解決するための手段
[0007] 上記課題を解決するために、本発明は、順序保証が必要な処理および順序保証 が不要な処理のいずれかの処理に用いられるデータをバッファリングするバッファリン グ装置であって、処理を待機する複数のデータを記憶する記憶手段と、前記記憶手 段から処理対象のデータを 1つずつ読み出す読出手段と、前記記憶手段に記憶さ れた各データが前記記憶手段に記憶されたどのデータの処理完了を待機すべきか を示す待ち合わせフラグをデータそれぞれに対応付けて設定し、各データに対応付 けられた待ち合わせフラグに応じて前記読出手段による読出順序を制御する制御手 段とを有することを特徴とする。
[0008] また、本発明は、上記発明において、前記制御手段は、データが順序保証が必要 な処理に用いられる力否かに応じて待ち合わせフラグを設定することを特徴とする。
[0009] また、本発明は、上記発明において、前記制御手段は、順序保証が必要な処理に 用 ヽられるデータの待ち合わせフラグを、当該データよりも先に前記記憶手段に記憶 されたデータの処理完了を待機するように設定することを特徴とする。
[0010] また、本発明は、上記発明において、前記制御手段は、順序保証が不要な処理に 用いられるデータの待ち合わせフラグを、前記読出手段によって読み出し中のデー タの読み出し完了のみを待機するように設定することを特徴とする。
[0011] また、本発明は、上記発明において、前記記憶手段にデータを 1つずつ書き込む 書込手段をさらに有し、前記制御手段は、前記書込手段がデータを書き込む際に、 待ち合わせフラグに関する待ち合わせフラグ情報をデータに付加させた上で書き込 ませることを特徴とする。
[0012] また、本発明は、上記発明において、前記制御手段は、前記記憶手段に記憶され たデータそれぞれについて読み出し待機、応答待機、および処理完了のいずれか のステートを決定し、前記記憶手段に記憶されたデータのステートが遷移するとステ ートの遷移を待ち合わせフラグに反映することを特徴とする。
[0013] また、本発明は、上記発明において、前記制御手段は、いずれかのデータのステ ートが応答待機から処理完了に遷移した場合、順序保証が必要な処理に用いられる データの待ち合わせフラグにおいて、ステートが遷移したデータの処理完了を待機 不要に変更することを特徴とする。
[0014] また、本発明は、上記発明において、前記制御手段は、いずれかのデータのステ ートが読み出し待機から応答待機に遷移した場合、順序保証が不要な処理に用いら れるデータの待ち合わせフラグにおいて、ステートが遷移したデータの処理完了を待 機不要に変更することを特徴とする。
[0015] また、本発明は、順序保証が必要な処理および順序保証が不要な処理の 、ずれ かの処理に用いられるデータをバッファリングするバッファリング方法であって、処理 を待機する複数のデータを記憶する記憶工程と、前記記憶工程にて記憶された各デ ータがどのデータの処理完了を待機すべきかを示す待ち合わせフラグをデータそれ ぞれに対応付けて設定する設定工程と、前記設定工程にて各データに対応付けら れた待ち合わせフラグに応じてデータの読出順序を制御する制御工程と、前記制御 工程における読出順序に従って処理対象のデータを 1つずつ読み出す読出工程と、 を有することを特徴とする。
発明の効果
[0016] 本発明によれば、処理を待機する複数のデータを記憶し、記憶された各データがど のデータの処理完了を待機すべきかを示す待ち合わせフラグをデータそれぞれに対 応付けて設定し、各データに対応付けられた待ち合わせフラグに応じて読出順序を 制御しながら処理対象のデータを 1つずつ読み出す。このため、順序保証の要不要 に関わらずデータを 1箇所に混在させて記憶させても、各データの待ち合わせフラグ を参照して適切な順序でデータを読み出すことができ、小さい回路規模で順序保証 が必要な処理と不要な処理とを実行可能にすることができる。
[0017] また、本発明によれば、データが順序保証が必要な処理に用いられる力否かに応 じて待ち合わせフラグを設定するため、順序保証が必要な処理に用いられるデータ については、先行するデータの処理完了を待機するように待ち合わせフラグを設定 する一方、順序保証が不要な処理に用いられるデータについては、先行するデータ の処理完了を待機しな 、ように待ち合わせフラグを設定し、 V、ずれのデータにつ 、て も処理遅延を最小限に抑制することができる。
[0018] また、本発明によれば、順序保証が必要な処理に用いられるデータの待ち合わせ フラグを、当該データよりも先に記憶されたデータの処理完了を待機するように設定 するため、順序保証が必要なデータに関しては、 1つのデータの処理完了後に次の データを読み出すことができ、確実に順序を維持することができる。
[0019] また、本発明によれば、順序保証が不要な処理に用いられるデータの待ち合わせ フラグを、読み出し中のデータの読み出し完了のみを待機するように設定するため、 順序保証が不要なデータに関しては、データの伝送路が使用可能になると即座に次 のデータを読み出すことができ、処理遅延を抑制することができる。
[0020] また、本発明によれば、データを 1つずつ書き込む際に、待ち合わせフラグに関す る待ち合わせフラグ情報をデータに付加した上で書き込むため、各データと待ち合 わせフラグとの対応が明確に記憶され、正確に読み出しの順序を制御することができ る。
[0021] また、本発明によれば、記憶されたデータそれぞれにつ 、て読み出し待機、応答 待機、および処理完了のいずれかのステートを決定し、データのステートが遷移する とステートの遷移を待ち合わせフラグに反映する。このため、読み出されたデータに 対する処理中に応答がある場合でも、より細力べデータの読み出しタイミングを制御 することができ、処理遅延をさらに抑制することができる。
[0022] また、本発明によれば、 、ずれかのデータのステートが応答待機から処理完了に遷 移した場合、順序保証が必要な処理に用いられるデータの待ち合わせフラグにぉ 、 て、ステートが遷移したデータの処理完了を待機不要に変更する。このため、順序保 証が必要なデータの待ち合わせフラグを効率良く更新するとともに、データが読み出 されるまでの待機時間を最小限に抑制することができる。
[0023] また、本発明によれば、いずれかのデータのステートが読み出し待機力も応答待機 に遷移した場合、順序保証が不要な処理に用いられるデータの待ち合わせフラグに おいて、ステートが遷移したデータの処理完了を待機不要に変更する。このため、順 序保証が不要なデータの待ち合わせフラグを効率良く更新するとともに、データが読 み出されるまでの待機時間を最小限に抑制することができる。
図面の簡単な説明
[0024] [図 1]図 1は、本発明の一実施の形態に係る情報処理装置の要部構成を示すブロッ ク図である。
[図 2]図 2は、一実施の形態に係る IZOコントローラの内部構成を示すブロック図であ る。
[図 3]図 3は、一実施の形態に係るキューのエントリの一例を示す図である。
[図 4]図 4は、一実施の形態に係る ΙΖΟコントローラの動作を示すフロー図である。 圆 5]図 5は、一実施の形態に係る待ち合わせフラグの設定動作を示すフロー図であ る。
[図 6]図 6は、一実施の形態に係るリクエストの発行動作を示すフロー図である。
[図 7-1]図 7— 1は、一実施の形態に係る待ち合わせフラグの一覧の具体例を示す図 である。
圆 7- - 2]図 7— -2は、図 7- 1に続く図である。
圆 7- -3]図 7 - -3は、図 7- -2に続く図である。
圆 7- - 4]図 7— -4は、図 7- -3に続く図である。
圆 7- -5]図 7 - -5は、図 7- -4に続く図である。
圆 7- - 6]図 7— -6は、図 7- -5に続く図である。
圆 7- -7]図 7— -7は、図 7- -6に続く図である。
圆 7- -8]図 7 - -8は、図 7- -7に続く図である。
圆 7- - 9]図 7— -9は、図 7- -8に続く図である。
[図 7-10]図 7— 10は、図 7— 9に続く図である。
[図 7- 11]図 7— 11は、図 7— 10に続く図である。
[図 7- 12]図 7— 12は、図 7— 11に続く図である。
符号の説明
100 ιζοコントローラ
110 書込部
120 バッファ
130 読出部
140 順序制御部
200 システムコントローラ 300 CPU
400 メモリ
発明を実施するための最良の形態
[0026] 以下、本発明の一実施の形態について、図面を参照して詳細に説明する。以下に おいては、情報処理装置におけるリクエスト発行を例に挙げて説明する力 本発明は 、例えば ATM (Asynchronous Transfer Mode)セルの転送におけるバッファリング などにも適用することができる。
[0027] 図 1は、本発明の一実施の形態に係る情報処理装置の要部構成を示すブロック図 である。同図に示す情報処理装置は、 IZO (Input/Output)コントローラ 100、システ ムコントローラ 200、 CPU300、およびメモリ 400を有している。
[0028] IZOコントローラ 100は、情報処理装置と他装置間のデータの入出力を制御する。
具体的には、 ΙΖΟコントローラ 100は、他装置から出力される様々な処理要求のた めのリクエストをシステムコントローラ 200へ出力する。このとき、 I/Oコントローラ 100 は、順序保証が必要なリクエストに関しては、このリクエスト以前に ιΖοコントローラ 1 00に入力されたリクエスト(以下「先行リクエスト」 t 、う)の発行が完了した後に出力 する。なお、リクエストの発行元である他装置は、情報処理装置と同一装置内にある ものでも良ぐ情報処理装置の外部機器などでも良い。 IZOコントローラ 100と他装 置とは、例えば PCIエクスプレス(PCI Express)などによって接続されている。なお、 本実施の形態においては、リクエストを発行する他装置は 1つの装置とは限らず、複 数の他装置力 様々なリクエストが発行されても良い。
[0029] システムコントローラ 200は、 CPU300やメモリ 400を制御し、他装置からのリクエス トを CPU300へ出力し、 CPU300による演算処理の結果を IZOコントローラ 100経 由でリクエスト発行元の他装置へ出力する。
[0030] CPU300は、メモリ 400に記憶されたプログラムやデータを読み出して演算処理を 行い、その結果をシステムコントローラ 200へ出力する。図 1においては、情報処理 装置が CPU300を 2つ有する構成とした力 CPU300は 1つでも良ぐ 3つ以上でも 良い。
[0031] メモリ 400は、 CPU300によって使用されるプログラムやデータを記憶しており、例 えば複数の DIMM (Dual Inline Memory Module)などから構成されている。
[0032] 図 2は、本実施の形態にかかる IZOコントローラ 100の内部構成を示すブロック図 である。同図においては、 I/Oコントローラ 100のリクエストの出力に関する部分のみ を示している。図 2に示す ΙΖΟコントローラ 100は、書込部 110、バッファ 120、読出 部 130、および順序制御部 140を有して 、る。
[0033] 書込部 110は、他装置から出力されたリクエストをバッファ 120内のいずれかの空 いているキューに書き込む。このとき、書込部 110は、順序制御部 140の指示に従つ て、リクエストのステート情報および待ち合わせフラグ情報を付加し、得られたエントリ を空きキューに書き込む。
[0034] ここでエントリは、例えば図 3に示すように、リクエストの本体に相当するコマンドおよ びアドレスに、ステートおよび待ち合わせフラグが付加されたフォーマットとなっている 。ステートとは、リクエストの状態を表しており、先行リクエストの発行を待機している状 態 (以下、この状態を「PR」という)、自己の発行を待機している状態 (以下、この状態 を「SR」という)、システムコントローラ 200からの受信応答を待機している状態(以下、 この状態を「RA」という)、およびリクエスト発行が完了し無効化された状態 (以下、こ の状態を「INV」という)の 4種類があり、この順に遷移していく。また、待ち合わせフラ グとは、各リクエストが発行の完了を待機すべきリクエストを示すものであり、例えばキ ユー # 1に記憶されたリクエストがキュー # 0に記憶されたリクエストの発行の完了を 待機すべきである場合は、キュー # 1のリクエストの待ち合わせフラグにおいて、キュ 一 # 0のフラグが立つ。
[0035] ノ ッファ 120は、複数のリクエストを記憶可能な記憶容量を有しており、それぞれ 1 つのリクエストを記憶する領域である複数(図 2では 8つ)のキューに別れている。バッ ファ 120内のキュー # 0〜# 7は、リクエストにステート情報および待ち合わせフラグ 情報が付加されたエントリを記憶する。
[0036] 読出部 130は、順序制御部 140の指示に従って、バッファ 120内のいずれかのキ ユー力もエントリに含まれて 、るリクエストを読み出し、システムコントローラ 200へ出 力する。
[0037] 順序制御部 140は、他装置から書込部 110へ新規リクエストが入力されると、このリ タエストに関するステートを PRとし、リクエストのタイプおよび先行リクエストの有無など に応じて待ち合わせフラグを設定し、バッファ 120内の空きキューへのエントリの書き 込みを書込部 110へ指示する。また、順序制御部 140は、ノ ッファ 120内の各キュー # 0〜 # 7のステートおよび待ち合わせフラグを参照し、それぞれのキューに記憶さ れているリクエストの発行順序を制御しながら、リクエストの読み出しを読出部 130へ 指示する。そして、順序制御部 140は、リクエストの読み出しに伴ってステートおよび 待ち合わせフラグが変化すると、バッファ 120内の各キュー # 0〜# 7のエントリのス テート情報および待ち合わせフラグ情報を書き換える。順序制御部 140による具体 的なリクエスト発行順序の制御については、後に詳述する。
[0038] 次いで、上記のように構成された IZOコントローラ 100の動作について、図 4〜6に 示すフロー図を参照しながら説明する。
[0039] まず、他装置力も新規リクエストが出力され、 ΙΖΟコントローラ 100内の書込部 110 に受け付けられると (ステップ S100)、順序制御部 140によって、バッファ 120内のキ ユー # 0〜# 7から空いているキューが選択される(ステップ S200)。ここで、キューが 空いている状態とは、そもそもキューにエントリが記憶されていない状態力、キューに 記憶されたエントリのステートが INVである状態のことである。ステートが INVであれ ば、対応するリクエストは既に発行済みであり、システムコントローラ 200からの受信 応答も返ってきているため、リクエストは無効化されており、無いものとして扱うことが できる。複数のキューが空いている場合は、順序制御部 140によって、任意の空きキ ユーの選択が可能だ力 例えば番号が最も小さい空きキューが新規リクエスト用のキ ユーとして選択される。
[0040] そして、順序制御部 140によって、新規リクエストのステートを PRに設定するように 書込部 110へ指示が出される (ステップ S300)。新規リクエストは、常に先行リクエスト の発行待機を示す PRとされ、もし先行リクエストがすべて発行済みであったり、先行リ タエストが無力つたりすれば、キューに新規リクエストが書き込まれた後に、順序制御 部 140によって、このリクエストのステートが自己の発行待機を示す SRに書き換えら れる。
[0041] 書込部 110によって新規リクエストのステートが設定された後、順序制御部 140によ つてこのリクエストの待ち合わせフラグが決定され、書込部 110によって設定される( ステップ S400)。待ち合わせフラグの設定は、図 5に示すフロー図に従って行われる
[0042] すなわち、順序制御部 140によって、新規リクエストが順序保証を必要とする s (stro ng order)タイプのリクエストか順序保証が不要な w (weakly order)タイプのリクエスト かが判定される(ステップ S401)。新規リクエストが wタイプであれば (ステップ S401 No)、このリクエストは先行リクエストの発行完了を待つ必要が無いため、すべてのキ ユーに対応するフラグが待ち合わせ不要を示す 0に設定される (ステップ S404)。
[0043] 一方、新規リクエストが sタイプであれば (ステップ S401 Yes)、このリクエストは先行 リクエストの発行完了を待つ必要があり、順序制御部 140によって、ノ ッファ 120内の いずれかのキューに先行リクエストがあるか否かが判定される(ステップ S402)。この 結果、いずれのキューにも先行リクエストが無ければ (ステップ S402No)、全フラグが 0に設定され (ステップ S404)、いずれかのキューに先行リクエストがあれば (ステップ S402Yes)、この先行リクエストに対応するキューのフラグが待ち合わせ必要を示す 1に設定される(ステップ S403)。
[0044] このように他装置力も新規リクエストが出力されるたびに、新規リクエストのタイプと 先行リクエストの有無とから待ち合わせフラグを設定しておくことにより、ノ ッファ 120 の各キューにリクエストが書き込まれた時点で発行可能であるか否かを待ち合わせフ ラグのみ力 判断することができる。
[0045] 図 4に戻って、新規リクエストのステートおよび待ち合わせフラグが設定されると、書 込部 110によって、新規リクエストにステート情報および待ち合わせフラグ情報が付 カロされたエントリが順序制御部 140によって選択されたバッファ 120内の空きキュー に書き込まれる (ステップ S500)。その後、順序制御部 140によって、各キュー # 0〜 # 7のリクエストの発行順序が決定され、決定された発行順序で読出部 130によって リクエストが読み出されて発行される (ステップ S600)。具体的には、リクエスト発行は 、順序制御部 140および読出部 130が図 6に示すフロー図に従って動作することに より行われる。
[0046] すなわち、順序制御部 140によって、ノ ッファ 120内のキュー # 0〜# 7に記憶され ているステートが PRのリクエストが選択される(ステップ S601)。このとき、ステートが P Rのリクエストが複数ある場合は、番号が最も小さ 、キューのリクエストが選択される。 そして、順序制御部 140によって、選択された発行対象のリクエストの待ち合わせフ ラグが確認され、全フラグが 0であるか否かが判定される(ステップ S602)。
[0047] この結果、待ち合わせフラグがすべて 0であれば (ステップ S602Yes)、先行リクェ ストの発行を待つ必要が無いため、発行対象のリクエストのステートが発行待機を示 す SRに設定され (ステップ S603)、 IZOコントローラ 100とシステムコントローラ 200 との間の伝送路が開放され次第、読出部 130によってリクエストが読み出され (ステツ プ S604)、システムコントローラ 200へ出力される。そして、順序制御部 140によって 、 ノッファ 120内の読み出されたリクエストのステートが受信応答の待機を示す RAに 書き換えられる (ステップ S605)。その後、システムコントローラ 200からの受信応答( ACK)力 ZOコントローラ 100へ返ってくると、順序制御部 140によって、ノ ッファ 12 0内の読み出されたリクエストのステートが無効化を示す INVに書き換えられる。これ により、発行対象のリクエストの発行が完了する。
[0048] 一方、発行対象リクエストの待ち合わせフラグに 1が含まれていれば (ステップ S602 No)、順序制御部 140によって、このリクエストが sタイプである力否かが確認される( ステップ S606)。そして、発行対象のリクエストが sタイプである場合は (ステップ S60 6Yes)、フラグが 1であるリクエストが発行され、ステートが INVに遷移した力否かが 監視される(ステップ S607)。フラグが 1であるリクエストのステートが INVに遷移する と (ステップ S607Yes)、発行完了を待つ必要があった先行リクエストの発行が完了し たことになるため、発行対象のリクエストの待ち合わせフラグにおいて、この先行リクェ ストのフラグ力^に書き換えられ (ステップ S608)、再び全フラグが 0になった力否かが 判定される(ステップ S602)。
[0049] また、発行対象のリクエストが wタイプである場合は (ステップ S606No)、フラグが 1 であるリクエストが読出部 130によって読み出され、ステートが RAに遷移したか否か が監視される (ステップ S609)。そして、フラグが 1であるリクエストのステートが RAに 遷移すると (ステップ S609Yes)、先行リクエストによる伝送路の占有がなくなつたこと になるため、発行対象のリクエストの待ち合わせフラグにおいて、この先行リクエストの フラグが 0に書き換えられ (ステップ S610)、再び全フラグが 0になった力否かが判定 される(ステップ S602)。
[0050] 以降、発行対象のリクエストの待ち合わせフラグにおいて、すべてのフラグが 0にな るまで上記の処理が繰り返され、すべての先行リクエストがシステムコントローラ 200 へ出力されて全フラグが 0となると、発行対象のリクエストが発行されてステートが RA および INVに順次書き換えられる。そして、発行対象のリクエストのステートが RAに なることにより、後続の wタイプのリクエストの待ち合わせフラグにおいて、発行対象で あったリクエストのフラグが 0に書き換えられることになる。また、発行対象のリクエスト のステートが INVになることにより、後続の sタイプのリクエストの待ち合わせフラグに おいて、発行対象であったリクエストのフラグが 0に書き換えられることになる。
[0051] 次いで、本実施の形態に係るリクエスト発行の順序について、具体的に例を挙げて 説明する。ここでは、 sタイプのリクエスト sl、 wタイプのリクエスト wl、 sタイプのリクェ スト s2、および wタイプのリクエスト w2がこの順に他装置から出力された場合につい て説明する。
[0052] 図 7—1は、バッファ 120内のすべてのキュー # 0〜# 7が空きキューである状態、 換言すれば、すべてのキュー # 0〜 # 7に記憶されたリクエストのステートが INVであ る状態の各キューにおける待ち合わせフラグの一覧を示す図である。図 7— 1の状態 では、いずれのキューにも有効なリクエストが記憶されていないため、すべてのキュー の待ち合わせフラグにぉ 、ては、全フラグ力 SOに設定されて 、る。
[0053] その後、新規リクエストとしてリクエスト siが他装置から出力されると、リクエスト siは 、書込部 110によってキュー # 0に書き込まれる。このとき、リクエスト siのステートは 先行リクエストの発行待機を示す PRとされる。リクエスト siは、先行リクエストが無い状 態で記憶されるため、リクエスト siの待ち合わせフラグにおいては、全フラグが 0のま まである。この状態を図 7— 2に示す。
[0054] 次に、新規リクエストとしてリクエスト wlが他装置から出力されると、リクエスト wlは、 書込部 110によってキュー # 1に書き込まれる。このとき、リクエスト wlのステートは P Rとされる。また、先行リクエストであるリクエスト siのステートは自己の発行待機を示 す SRへ遷移する。この状態を図 7— 3に示す。 [0055] そして、新規リクエストとしてリクエスト s2が他装置から出力されると、リクエスト s2は、 書込部 110によってキュー # 2に書き込まれる。このとき、リクエスト s2のステートは PR とされる。また、リクエスト s2の書き込み時には、リクエスト siおよびリクエスト wlがそれ ぞれキュー # 0およびキュー # 1に既に記憶されているため、リクエスト s2の待ち合わ せフラグにおいて、これらのリクエストに対応するキュー # 0およびキュー # 1のフラグ 力 に設定される。さらに、リクエスト wlは、リクエスト siの発行完了を待つ必要が無 いため、ステートが SRに書き換えられる力 先行するリクエスト siによって伝送路が 占有されているため、リクエスト wlの待ち合わせフラグにおいて、リクエスト siに対応 するキュー # 0のフラグが 1に設定される。この状態を図 7—4に示す。
[0056] 次に、新規リクエストとしてリクエスト w2が他装置から出力されると、リクエスト w2は、 書込部 110によってキュー # 3に書き込まれる。このとき、リクエスト w2のステートは P Rとされる。また、リクエスト siは読出部 130からシステムコントローラ 200へ出力され、 ステートが RAに遷移する。これに伴って、読出部 130からシステムコントローラ 200 への伝送路が使用可能となるため、リクエスト wlの待ち合わせフラグにおいて、リク ェスト siに対応するキュー # 0のフラグ力^に設定される。そして、リクエスト wlが読出 部 130によって読み出され、システムコントローラ 200へ出力される。この状態を図 7 5に示す。
[0057] そして、リクエスト w2は、すべての先行リクエストの発行完了を待つ必要が無いため 、ステートが SRに書き換えられる力 先行するリクエスト wlによって伝送路が占有さ れているため、リクエスト w2の待ち合わせフラグにおいて、リクエスト wlに対応するキ ユー # 1のフラグが 1に設定される。この状態を図 7— 6に示す。
[0058] 次に、リクエスト wlが読出部 130からシステムコントローラ 200へ出力され、ステート が RAに遷移する。これに伴って、読出部 130からシステムコントローラ 200への伝送 路が使用可能となるため、リクエスト w2の待ち合わせフラグにおいて、リクエスト wlに 対応するキュー # 1のフラグが 0に設定される。そして、リクエスト w2が読出部 130に よって読み出され、システムコントローラ 200へ出力される。この状態を図 7— 7に示 す。
[0059] そして、リクエスト wlの受信応答がシステムコントローラ 200から返ってくると、リクェ スト wlは無効化され、キュー # 1のステートが INVとなる。これに伴って、リクエスト s2 はリクエスト wlの発行完了を待ったことになるため、リクエスト s2の待ち合わせフラグ において、リクエスト wlに対応するキュー # 1のフラグが 0に設定される。また、リクェ スト w2が読出部 130からシステムコントローラ 200へ出力され、ステートが RAに遷移 する。この状態を図 7— 8に示す。
[0060] 次に、リクエスト siの受信応答がシステムコントローラ 200から返ってくると、リクエス ト siは無効化され、キュー # 0のステートが INVとなる。これに伴って、リクエスト s2は リクエスト siの発行完了を待ったことになるため、リクエスト s2の待ち合わせフラグに おいて、リクエスト siに対応するキュー # 0のフラグが 0に設定される。この状態を図 7 9に示す。
[0061] そして、リクエスト s2の待ち合わせフラグにおいて、全フラグ力 ^になったことから、リ タエスト s2のステートが SRに遷移し、リクエスト s2が読出部 130によってシステムコン トローラ 200へ出力される。この状態を図 7— 10に示す。
[0062] 続けて、リクエスト w2の受信応答がシステムコントローラ 200から返ってくると、リクェ スト w2は無効化され、キュー # 3のステートが INVとなる。また、リクエスト s2が読出部 130からシステムコントローラ 200へ出力され、ステートが RAに遷移する。この状態を 図 7— 11に示す。
[0063] 最後に、リクエスト s2の受信応答がシステムコントローラ 200から返ってくると、リクェ スト s2は無効化され、キュー # 2のステートが INVとなる。こうして、すべてのキュー # 0〜# 7力 図 7— 12に示すように、再び空きキューとなる。
[0064] 以上のように、本実施の形態によれば、ノ ッファ内のすべてのキューに対応するリク ェストとの発行の待ち合わせの要不要を示す待ち合わせフラグを各リクエストに対応 付けておき、リクエストのタイプおよび先行リクエストのステート遷移に応じて、待ち合 わせフラグにおける各リクエストのフラグを適切に設定し、発行対象のリクエストの待 ち合わせフラグにぉ 、て、すべてのフラグが待ち合わせ不要であることを示して 、る 場合に、発行対象のリクエストを発行する。このため、 1つのバッファ内に書き込まれ た複数のリクエストに対して、必要な順序制御を行いながら発行することができ、小さ い回路規模で順序保証が必要な処理と不要な処理とを実行可能にすることができる [0065] なお、上記一実施の形態においては、システムコントローラ 200に接続された IZO コントローラ 100におけるバッファリングを例に挙げて説明したが、本発明は順序保証 や優先度制御を必要とする様々なバッファに適用することができる。その際、上記一 実施の形態においては、データそのものにステートおよび待ち合わせフラグの情報を 付加することとした力 データ自体には何の情報も付加せず、例えば順序制御部 14 0が図 7— 1〜7— 12に示したような一覧表を管理することにより、読出部 130の読出 順序を制御することなどが考えられる。
産業上の利用可能性
[0066] 本発明は、小さい回路規模で順序保証が必要な処理と不要な処理とを実行可能に する場合に適用することができる。

Claims

請求の範囲
[1] 順序保証が必要な処理および順序保証が不要な処理の 、ずれかの処理に用いら れるデータをバッファリングするバッファリング装置であって、
処理を待機する複数のデータを記憶する記憶手段と、
前記記憶手段から処理対象のデータを 1つずつ読み出す読出手段と、 前記記憶手段に記憶された各データが前記記憶手段に記憶されたどのデータの 処理完了を待機すべきかを示す待ち合わせフラグをデータそれぞれに対応付けて 設定し、各データに対応付けられた待ち合わせフラグに応じて前記読出手段による 読出順序を制御する制御手段と
を有することを特徴とするバッファリング装置。
[2] 前記制御手段は、
データが順序保証が必要な処理に用いられる力否かに応じて待ち合わせフラグを 設定することを特徴とする請求項 1記載のバッファリング装置。
[3] 前記制御手段は、
順序保証が必要な処理に用いられるデータの待ち合わせフラグを、当該データより も先に前記記憶手段に記憶されたデータの処理完了を待機するように設定すること を特徴とする請求項 2記載のバッファリング装置。
[4] 前記制御手段は、
順序保証が不要な処理に用いられるデータの待ち合わせフラグを、前記読出手段 によって読み出し中のデータの読み出し完了のみを待機するように設定することを特 徴とする請求項 2記載のバッファリング装置。
[5] 前記記憶手段にデータを 1つずつ書き込む書込手段をさらに有し、
前記制御手段は、
前記書込手段がデータを書き込む際に、待ち合わせフラグに関する待ち合わせフ ラグ情報をデータに付加させた上で書き込ませることを特徴とする請求項 1記載のバ ッファリング装置。
[6] 前記制御手段は、
前記記憶手段に記憶されたデータそれぞれについて読み出し待機、応答待機、お よび処理完了のいずれかのステートを決定し、前記記憶手段に記憶されたデータの ステートが遷移するとステートの遷移を待ち合わせフラグに反映することを特徴とする 請求項 1記載のバッファリング装置。
[7] 前記制御手段は、
V、ずれかのデータのステートが応答待機から処理完了に遷移した場合、順序保証 が必要な処理に用いられるデータの待ち合わせフラグにおいて、ステートが遷移した データの処理完了を待機不要に変更することを特徴とする請求項 6記載のバッファリ ング装置。
[8] 前記制御手段は、
いずれかのデータのステートが読み出し待機力 応答待機に遷移した場合、順序 保証が不要な処理に用いられるデータの待ち合わせフラグにおいて、ステートが遷 移したデータの処理完了を待機不要に変更することを特徴とする請求項 6記載のバ ッファリング装置。
[9] 順序保証が必要な処理および順序保証が不要な処理の 、ずれかの処理に用いら れるデータをバッファリングするバッファリング方法であって、
処理を待機する複数のデータを記憶する記憶工程と、
前記記憶工程にて記憶された各データがどのデータの処理完了を待機すべきかを 示す待ち合わせフラグをデータそれぞれに対応付けて設定する設定工程と、 前記設定工程にて各データに対応付けられた待ち合わせフラグに応じてデータの 読出順序を制御する制御工程と、
前記制御工程における読出順序に従って処理対象のデータを 1つずつ読み出す 読出工程と
を有することを特徴とするバッファリング方法。
PCT/JP2006/303587 2006-02-27 2006-02-27 バッファリング装置およびバッファリング方法 WO2007097017A1 (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP2008501569A JP4779010B2 (ja) 2006-02-27 2006-02-27 バッファリング装置およびバッファリング方法
PCT/JP2006/303587 WO2007097017A1 (ja) 2006-02-27 2006-02-27 バッファリング装置およびバッファリング方法
US12/230,026 US8533368B2 (en) 2006-02-27 2008-08-21 Buffering device and buffering method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2006/303587 WO2007097017A1 (ja) 2006-02-27 2006-02-27 バッファリング装置およびバッファリング方法

Related Child Applications (1)

Application Number Title Priority Date Filing Date
US12/230,026 Continuation US8533368B2 (en) 2006-02-27 2008-08-21 Buffering device and buffering method

Publications (1)

Publication Number Publication Date
WO2007097017A1 true WO2007097017A1 (ja) 2007-08-30

Family

ID=38437077

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/JP2006/303587 WO2007097017A1 (ja) 2006-02-27 2006-02-27 バッファリング装置およびバッファリング方法

Country Status (3)

Country Link
US (1) US8533368B2 (ja)
JP (1) JP4779010B2 (ja)
WO (1) WO2007097017A1 (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010118020A (ja) * 2008-11-14 2010-05-27 Fujitsu Ltd リクエスト順序制御システム、リクエスト順序制御方法およびリクエスト順序制御プログラム
WO2021193542A1 (ja) * 2020-03-27 2021-09-30 日本電気株式会社 通信システム

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102929562B (zh) * 2012-10-09 2015-05-06 无锡江南计算技术研究所 基于识别标识的可扩展重排序方法
US9594713B2 (en) * 2014-09-12 2017-03-14 Qualcomm Incorporated Bridging strongly ordered write transactions to devices in weakly ordered domains, and related apparatuses, methods, and computer-readable media

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001337822A (ja) * 2000-05-24 2001-12-07 Nec Corp 命令バッファ及びバッファキュー制御

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH04190435A (ja) * 1990-11-26 1992-07-08 Hitachi Ltd マルチプロセッサシステムのメモリアクセス順序保証方式
US5778438A (en) * 1995-12-06 1998-07-07 Intel Corporation Method and apparatus for maintaining cache coherency in a computer system with a highly pipelined bus and multiple conflicting snoop requests
JP3110334B2 (ja) 1997-01-23 2000-11-20 甲府日本電気株式会社 アービトレーション制御装置
JP3199035B2 (ja) * 1998-09-25 2001-08-13 日本電気株式会社 プロセッサ及びその実行制御方法
JP2000181891A (ja) * 1998-12-18 2000-06-30 Hitachi Ltd 共有メモリアクセス順序保証方式
JP2001051845A (ja) * 1999-08-12 2001-02-23 Hitachi Ltd アウトオブオーダー実行方式
JP2002108703A (ja) * 2000-10-02 2002-04-12 Fujitsu Ltd キャッシュ制御装置及びプロセッサ
JP2003242097A (ja) * 2002-02-15 2003-08-29 Hitachi Ltd クロスコール機能を備えるディスク制御装置
WO2004031944A1 (ja) * 2002-10-04 2004-04-15 Fujitsu Limited プロセッサ及び命令制御方法
US20050125634A1 (en) * 2002-10-04 2005-06-09 Fujitsu Limited Processor and instruction control method
JP4128551B2 (ja) * 2004-07-29 2008-07-30 富士通株式会社 情報処理装置及びストア命令制御方法
US20060129764A1 (en) * 2004-12-09 2006-06-15 International Business Machines Corporation Methods and apparatus for storing a command
US7284102B2 (en) * 2005-02-09 2007-10-16 International Business Machines Corporation System and method of re-ordering store operations within a processor
US7457905B2 (en) * 2005-08-29 2008-11-25 Lsi Corporation Method for request transaction ordering in OCP bus to AXI bus bridge design
US8115773B2 (en) * 2007-06-07 2012-02-14 Apple Inc. Serializing command streams for graphics processors

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001337822A (ja) * 2000-05-24 2001-12-07 Nec Corp 命令バッファ及びバッファキュー制御

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010118020A (ja) * 2008-11-14 2010-05-27 Fujitsu Ltd リクエスト順序制御システム、リクエスト順序制御方法およびリクエスト順序制御プログラム
WO2021193542A1 (ja) * 2020-03-27 2021-09-30 日本電気株式会社 通信システム
JP7416211B2 (ja) 2020-03-27 2024-01-17 日本電気株式会社 通信システム

Also Published As

Publication number Publication date
US20080320185A1 (en) 2008-12-25
JPWO2007097017A1 (ja) 2009-07-09
JP4779010B2 (ja) 2011-09-21
US8533368B2 (en) 2013-09-10

Similar Documents

Publication Publication Date Title
US6938253B2 (en) Multiprocessor communication system and method
US7234004B2 (en) Method, apparatus and program product for low latency I/O adapter queuing in a computer system
US7724984B2 (en) Image processing apparatus
KR20070104929A (ko) 스위치 매트릭스를 통한 데이터 전송을 개선하는 흐름 제어방법
US6584529B1 (en) Intermediate buffer control for improving throughput of split transaction interconnect
JP2006099731A (ja) リソース管理装置
TW200302417A (en) Data transfer mechanism
WO2007097017A1 (ja) バッファリング装置およびバッファリング方法
JP2000293436A (ja) パイプラインメモリシステムにおける複数のターゲットへの複数の未解決要求のサポート
JP4373255B2 (ja) ダイレクトメモリアクセス制御装置および方法
JP4642531B2 (ja) データ要求のアービトレーション
JPH01120660A (ja) マイクロコンピュータ装置
WO2007099583A1 (ja) システムコントローラおよびキャッシュ制御方法
US6735677B1 (en) Parameterizable queued memory access system
US5638538A (en) Turbotable: apparatus for directing address and commands between multiple consumers on a node coupled to a pipelined system bus
JPH06214875A (ja) 記憶制御装置
US6968409B1 (en) Method and apparatus of establishing a dynamically adjustable loop of delayed read commands for completion in a queue buffer
JP2002198987A (ja) ハブおよびポート付き転送コントローラのアクティブ・ポート
US6219761B1 (en) Load/store assist engine
JP4633334B2 (ja) 情報処理装置およびメモリアクセス調停方法
US20030041190A1 (en) System and method for efficiently performing a command swapping procedure
US7216194B2 (en) Methods and systems for improving delayed read handling
JP5000858B2 (ja) データ処理装置
US6085297A (en) Single-chip memory system including buffer
JP2007109199A (ja) バッファ装置、、バッファ装置の制御方法、情報処理装置

Legal Events

Date Code Title Description
121 Ep: the epo has been informed by wipo that ep was designated in this application
ENP Entry into the national phase

Ref document number: 2008501569

Country of ref document: JP

Kind code of ref document: A

NENP Non-entry into the national phase

Ref country code: DE

122 Ep: pct application non-entry in european phase

Ref document number: 06714724

Country of ref document: EP

Kind code of ref document: A1