JP2008097312A - Multiplexer and information processor - Google Patents

Multiplexer and information processor Download PDF

Info

Publication number
JP2008097312A
JP2008097312A JP2006278185A JP2006278185A JP2008097312A JP 2008097312 A JP2008097312 A JP 2008097312A JP 2006278185 A JP2006278185 A JP 2006278185A JP 2006278185 A JP2006278185 A JP 2006278185A JP 2008097312 A JP2008097312 A JP 2008097312A
Authority
JP
Japan
Prior art keywords
bandwidth
channel
request
time frame
requests
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2006278185A
Other languages
Japanese (ja)
Other versions
JP4979332B2 (en
Inventor
Danish Rizvi Ali
アリ・ダニッシュ・リズビ
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Sony Interactive Entertainment Inc
Original Assignee
Sony Computer Entertainment Inc
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 Sony Computer Entertainment Inc filed Critical Sony Computer Entertainment Inc
Priority to JP2006278185A priority Critical patent/JP4979332B2/en
Publication of JP2008097312A publication Critical patent/JP2008097312A/en
Application granted granted Critical
Publication of JP4979332B2 publication Critical patent/JP4979332B2/en
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Abstract

<P>PROBLEM TO BE SOLVED: To solve the problem that it is difficult to fairly multiplex requests from a plurality of request sources. <P>SOLUTION: A storage multiplexer 30 includes a plurality of reservation channels 32 to which the request of each request source is input and an output port 42. The output port 42 outputs the request to be transferred from the plurality of reservation channels 32 to a disk scheduler 20. Each reservation channel 32 accepts the reservation of bandwidth for processing the request from each request source. Time frames as time units for multiplexing the requests from the plurality of request sources are prepared, and the reservation channel 32 whose reservation bandwidth has been at least partially seized in response to the request to be output from the other reservation channel 32 in a certain time frame receives the compensation of the seized reservation bandwidth in the next time frame. <P>COPYRIGHT: (C)2008,JPO&INPIT

Description

この発明は、複数の要求元からのリクエストを多重化する技術に関する。   The present invention relates to a technique for multiplexing requests from a plurality of request sources.

オペレーティングシステムは、動画像や音声などの連続メディアを利用するリアルタイムアプリケーションや、WWW(World Wide Web)サーバやデータベースサーバからのファイル転送、ワードプロセッサなどのインタラクティブなアプリケーションなど、幅広いアプリケーションをサポートする必要がある。これらのアプリケーションは、ハードディスクなどの記憶装置に対するアクセスを伴うが、サービス品質(QoS)の要求は、それぞれ異なっている。テキスト編集などのインタラクティブなアプリケーションは、リクエストの平均レスポンスタイムが最小であることを要求する。一方、ファイル転送はスループットが最大であることを要求する。また、ビデオや音声などのマルチメディアアプリケーションは、動画のフレームがデッドラインよりも前に到着することを要求するが、フレーム落ちが生じることをある程度許容する。   The operating system must support a wide range of applications, including real-time applications that use continuous media such as moving images and audio, file transfers from WWW (World Wide Web) servers and database servers, and interactive applications such as word processors. . These applications involve access to storage devices such as hard disks, but the quality of service (QoS) requirements are different. Interactive applications such as text editing require that the average response time of requests is minimal. On the other hand, file transfer requires maximum throughput. Also, multimedia applications such as video and audio require that frames of moving images arrive before the deadline, but to some extent allow frame dropping.

このようなサービス品質に対する幅広い要求に応えるためには、ディスク装置において個々のアプリケーションのリクエストを適切にスケジューリングすることが必要である。ディスクは、一般に、シリンダ、トラックおよびセクタの組み合わせで論理ブロックアドレスが付けられている。ディスクのアクセス時間は、ディスクヘッドがアクセス対象のトラック位置に移動するのに要するシーク時間、アクセス対象のセクタがディスクヘッドの位置に来るまで待つ回転待ち時間、およびアクセス対象のセクタから読み取ったデータを転送するのにかかるデータ転送時間を足し合わせたものである。ディスクアクセス時間の中で特に支配的なものはシーク時間、すなわちディスクヘッドの移動にかかる時間であり、これをいかにして減らすかがディスク性能を決める。   In order to meet such a wide range of service quality requirements, it is necessary to appropriately schedule requests for individual applications in the disk device. A disk is generally assigned a logical block address by a combination of cylinders, tracks and sectors. The disk access time is determined by the seek time required for the disk head to move to the track position to be accessed, the rotation waiting time until the sector to be accessed reaches the disk head position, and the data read from the sector to be accessed. It is the sum of the data transfer time taken to transfer. A particularly dominant disk access time is a seek time, that is, a time required for moving the disk head, and how to reduce this determines the disk performance.

代表的なディスクスケジューリング方式として、SSTF(Shortest Seek Time First)アルゴリズムやエレベータアルゴリズムがある。SSTFアルゴリズムでは、シーク時間順、すなわちアームの移動が小さいリクエストから順に処理するものであり、ディスクヘッドの移動距離を小さくすることができる。また、エレベータアルゴリズムでは、アームが一方向に動くようにリクエストの処理順序を変え、ディスクヘッドをディスクの内周から外周の方向、あるいは外周から内周の方向に連続的に移動させ、端に到達するまではディスクヘッドの移動方向を変えないようにする。   Typical disk scheduling methods include SSTF (Shortest Seek Time First) algorithm and elevator algorithm. In the SSTF algorithm, processing is performed in order of seek time, that is, in order from the request with the smallest arm movement, and the movement distance of the disk head can be reduced. In the elevator algorithm, the request processing order is changed so that the arm moves in one direction, and the disk head is continuously moved from the inner circumference to the outer circumference or from the outer circumference to the inner circumference to reach the end. Do not change the moving direction of the disk head until this is done.

オペレーティングシステムは、幅広いアプリケーションの様々なサービス品質要求に応える必要があり、ディスク装置からのデータ転送の品質は個々のアプリケーションのサービス品質要求に合ったものでなければならない。しかし、個々のアプリケーションのサービス品質を最優先にリクエストをスケジューリングすると、シーク時間や回転待ち時間などのディスクのアクセス時間が増大し、ディスク性能が落ち、ディスク装置からのデータ転送の帯域幅が減少することになる。一方、ディスク性能を最大化するスケジューリング方式を採用すると、個々のアプリケーションのリクエストがそのサービス品質要求を無視する形でスケジューリングされるため、アプリケーションのサービス品質要求を満足させることができなくなる。   The operating system needs to meet various service quality requirements for a wide range of applications, and the quality of data transfer from the disk device must meet the service quality requirements of the individual applications. However, scheduling requests with the highest priority on the quality of service of each application increases disk access time such as seek time and rotation latency, reduces disk performance, and reduces data transfer bandwidth from disk devices. It will be. On the other hand, if a scheduling method that maximizes the disk performance is adopted, requests for individual applications are scheduled in a manner that ignores the service quality requirements, so that the service quality requirements of the applications cannot be satisfied.

サービス品質要求の異なる複数の要求元からのリクエストをスケジューリングして実行する際、複数の要求元からのリクエストの多重化処理が必要になる。リクエストの多重化処理を効率的に行わなければ、リクエストの実行に支障を来す。また、リクエストの多重化に当たって、複数の要求元の間で公平性を担保することも必要である。   When scheduling and executing requests from a plurality of request sources having different service quality requirements, it is necessary to multiplex requests from the plurality of request sources. If the request multiplexing process is not performed efficiently, the execution of the request will be hindered. Further, in multiplexing requests, it is necessary to ensure fairness among a plurality of request sources.

本発明はこうした課題に鑑みてなされたものであり、その目的は、複数の要求元からのリクエストを公平に多重化することのできる多重化処理技術を提供することにある。   The present invention has been made in view of such problems, and an object of the present invention is to provide a multiplexing processing technique capable of fairly multiplexing requests from a plurality of request sources.

上記課題を解決するために、本発明のある態様のマルチプレクサは、複数のチャネルと出力ポートとを含む。前記チャネルは、サービスの要求元毎に設けられ、各要求元からリクエストを処理するための帯域幅の予約を受け付け、各要求元からリクエストが入力される。前記出力ポートは、複数の前記チャネルから渡されるリクエストを出力する。複数の要求元からのリクエストを多重化するための時間単位であるタイムフレームが設けられ、あるタイムフレームにおいて、他のチャネルから出力されるリクエストによって、予約帯域幅の少なくとも一部が横取りされたチャネルは、次のタイムフレームにおいて、横取りされた予約帯域幅の補償を受ける。   In order to solve the above problems, a multiplexer according to an aspect of the present invention includes a plurality of channels and an output port. The channel is provided for each request source of the service, accepts a bandwidth reservation for processing the request from each request source, and receives a request from each request source. The output port outputs requests passed from a plurality of the channels. A channel in which a time frame that is a time unit for multiplexing requests from multiple request sources is provided, and at least a part of the reserved bandwidth is intercepted by a request output from another channel in a certain time frame Will be compensated for the intercepted reserved bandwidth in the next time frame.

本発明の別の態様は、情報処理装置である。この装置は、サービスの1つ以上の要求元から入力されるリクエストを出力するマルチプレクサと、前記マルチプレクサから出力されたリクエストをスケジューリングして実行するスケジューラとを含む。前記マルチプレクサは、複数のチャネルと出力ポートとを含む。前記チャネルは、前記要求元毎に設けられ、各要求元からリクエストを処理するための帯域幅の予約を受け付け、各要求元からリクエストが入力される。前記出力ポートは、複数の前記チャネルから渡されるリクエストを出力する。複数の要求元からのリクエストを多重化するための時間単位であるタイムフレームが設けられ、あるタイムフレームにおいて、他のチャネルから出力されるリクエストによって、予約帯域幅の少なくとも一部が横取りされたチャネルは、次のタイムフレームにおいて、横取りされた予約帯域幅の補償を受ける。   Another aspect of the present invention is an information processing apparatus. The apparatus includes a multiplexer that outputs a request input from one or more request sources of a service, and a scheduler that schedules and executes the request output from the multiplexer. The multiplexer includes a plurality of channels and an output port. The channel is provided for each request source, receives a bandwidth reservation for processing a request from each request source, and receives a request from each request source. The output port outputs requests passed from a plurality of the channels. A channel in which a time frame that is a time unit for multiplexing requests from multiple request sources is provided, and at least a part of the reserved bandwidth is intercepted by a request output from another channel in a certain time frame Will be compensated for the intercepted reserved bandwidth in the next time frame.

ここで、「リクエスト」は、ハードディスクなどのストレージデバイスに対するリクエストに限らず、プロセッサ、メモリ、周辺機器などの各種のデバイスに対するリクエストや、ネットワークを経由したサーバなどのデバイスに対するリクエストを含む。また「スケジューリング」は、ディスクスケジューリング以外に、プロセッサ、メモリ、周辺機器などの各種のデバイスに対するアクセススケジューリングや、ネットワークを経由したサーバなどのデバイスに対するアクセススケジューリングを含む。   Here, the “request” is not limited to a request for a storage device such as a hard disk but includes a request for various devices such as a processor, a memory, and a peripheral device, and a request for a device such as a server via a network. In addition to disk scheduling, “scheduling” includes access scheduling for various devices such as processors, memories, and peripheral devices, and access scheduling for devices such as servers via a network.

なお、以上の構成要素の任意の組合せ、本発明の表現を方法、装置、システム、コンピュータプログラム、データ構造などの間で変換したものもまた、本発明の態様として有効である。   It should be noted that any combination of the above-described constituent elements and a representation of the present invention converted between a method, an apparatus, a system, a computer program, a data structure, etc. are also effective as an aspect of the present invention.

本発明によれば、複数の要求元からのリクエストを公平に多重化してサービス品質を向上させることができる。   According to the present invention, it is possible to improve the quality of service by fairly multiplexing requests from a plurality of request sources.

[1]構成
図1は、ストレージサブシステム100の構成を説明する図である。ストレージサブシステム100は、オペレーティングシステム140内にファイルシステム130とともに設けられる。
[1] Configuration FIG. 1 is a diagram illustrating the configuration of the storage subsystem 100. The storage subsystem 100 is provided with a file system 130 in the operating system 140.

ファイルシステム130は、ストレージインタフェース120を介してストレージサブシステム100との間でコネクションを構築し、構築されたコネクションを用いて、ストレージデバイス150に対するアクセスリクエストをストレージサブシステム100に供給する。ファイルシステム130はストレージサブシステム100と複数のコネクションを構築することができる。ファイルシステム130は、アプリケーションタイプ毎にコネクションを設定してもよい。アプリケーションタイプとして、マルチメディアアプリケーション、リアルタイムアプリケーション、インタラクティブアプリケーション、ファイル転送などがある。   The file system 130 establishes a connection with the storage subsystem 100 via the storage interface 120, and supplies an access request for the storage device 150 to the storage subsystem 100 using the established connection. The file system 130 can establish a plurality of connections with the storage subsystem 100. The file system 130 may set a connection for each application type. Application types include multimedia applications, real-time applications, interactive applications, and file transfers.

ストレージサブシステム100は、ストレージサービスプロバイダ60、SCSI(Small Computer System Interface)クラスドライバ50、リクエストスケジューラ40、およびデバイスドライバ10を含む。ストレージサービスプロバイダ60は、ファイルシステム130からのコネクションを管理し、ストレージへのアクセスサービスをファイルシステム130に提供する。ストレージサービスプロバイダ60は、アプリケーションタイプやアプリケーションからの要求によってコネクション毎にストレージデバイス150のデータ転送の帯域幅を予約することができる。   The storage subsystem 100 includes a storage service provider 60, a SCSI (Small Computer System Interface) class driver 50, a request scheduler 40, and a device driver 10. The storage service provider 60 manages a connection from the file system 130 and provides a storage access service to the file system 130. The storage service provider 60 can reserve the data transfer bandwidth of the storage device 150 for each connection according to the application type or a request from the application.

SCSIクラスドライバ50は、SCSI規格にしたがったドライバであり、各コネクションからのストレージデバイス150に対するアクセスリクエストを発行し、リクエストスケジューラ40に供給する。   The SCSI class driver 50 is a driver according to the SCSI standard, issues an access request to the storage device 150 from each connection, and supplies it to the request scheduler 40.

リクエストスケジューラ40は、ストレージマルチプレクサ30とディスクスケジューラ20を含み、1以上のコネクションからのリクエストを多重化してデバイスドライバ10に与える。   The request scheduler 40 includes a storage multiplexer 30 and a disk scheduler 20, and multiplexes requests from one or more connections and gives them to the device driver 10.

デバイスドライバ10は、ストレージデバイス150のデバイス情報をもつデバイス固有のドライバである。デバイスドライバ10は、ディスクスケジューラ20から渡されるリクエストを実行して、ストレージデバイス150に対するデータの読み書きを行い、SCSIクラスドライバ50に結果を通知する。   The device driver 10 is a device-specific driver having device information of the storage device 150. The device driver 10 executes a request passed from the disk scheduler 20, reads / writes data from / to the storage device 150, and notifies the SCSI class driver 50 of the result.

図2は、リクエストスケジューラ40の構成図である。リクエストスケジューラ40は、ストレージデバイス150に対するリクエストを多重化し、スケジュールする。同図は機能に着目したブロック図を描いており、これらの機能ブロックはハードウエアのみ、ソフトウエアのみ、またはそれらの組合せによっていろいろな形で実現することができる。   FIG. 2 is a configuration diagram of the request scheduler 40. The request scheduler 40 multiplexes and schedules requests for the storage device 150. This figure depicts a block diagram focusing on functions, and these functional blocks can be realized in various forms by hardware only, software only, or a combination thereof.

リクエストスケジューラ40は、ストレージマルチプレクサ(以下、単に「マルチプレクサ」と呼ぶ)30とディスクスケジューラ20を含む。マルチプレクサ30は、各コネクションからのリクエストを後述の「タイムフレーム」(time-frame)単位で多重化するとともに、各コネクションの帯域幅を確保する。ディスクスケジューラ20は、マルチプレクサ30から供給されたリクエストの実行順序をタイムフレーム単位でスケジューリングしてデバイスドライバ10に供給する。   The request scheduler 40 includes a storage multiplexer (hereinafter simply referred to as “multiplexer”) 30 and a disk scheduler 20. The multiplexer 30 multiplexes requests from each connection in “time-frame” units described later, and secures the bandwidth of each connection. The disk scheduler 20 schedules the execution order of the requests supplied from the multiplexer 30 in units of time frames and supplies them to the device driver 10.

マルチプレクサ30は、各コネクションのリクエストが入力される複数のチャネル(符号31、32)と、出力ポート42と、タイマ38と、空き帯域幅ポート44とを含む。   The multiplexer 30 includes a plurality of channels (reference numerals 31 and 32) into which requests for each connection are input, an output port 42, a timer 38, and a free bandwidth port 44.

チャネルは、マルチプレクサ30内に設けられた、リクエストが入出力される論理的な経路であり、チャネル内のポートの開閉によりマルチプレクサ30に入力されたリクエストの出力を制御する。チャネルの帯域幅は、そのチャネルからの最大データ転送レートで与えられる。チャネルには、メインチャネル31と予約チャネル32の二種類がある。   The channel is a logical path provided in the multiplexer 30 through which requests are input and output, and controls the output of requests input to the multiplexer 30 by opening and closing ports in the channel. The bandwidth of a channel is given by the maximum data transfer rate from that channel. There are two types of channels: main channel 31 and reserved channel 32.

メインチャネル31は、帯域幅を予約しないコネクション用のチャネルである。メインチャネル31からのデータ転送には、予約可能な総帯域幅(後述の「総予約可能帯域幅net_bw」)の内、残存する未予約帯域が用いられる。予約チャネル32が全く生成されなかった場合、メインチャネル31はデータ転送のために全帯域を用いることができる。   The main channel 31 is a connection channel that does not reserve a bandwidth. For the data transfer from the main channel 31, the remaining unreserved bandwidth out of the total bandwidth that can be reserved (“total reserved bandwidth net_bw” described later) is used. If no reserved channel 32 is generated, the main channel 31 can use the entire band for data transfer.

予約チャネル32は、帯域幅を予約する各コネクション毎に設けられる。予約チャネル32は、帯域幅を予約するコネクションが構築される度にランタイムで生成され、コネクションの消滅とともに破棄される。   The reservation channel 32 is provided for each connection that reserves bandwidth. The reservation channel 32 is generated at runtime each time a connection for reserving bandwidth is established, and is discarded when the connection disappears.

メインチャネル31はチャネルポート33とチャネルキュー35をもつ。同様に、予約チャネル32もチャネルポート34とチャネルキュー36をもつ。各チャネル31、32のチャネルポート33、34にはSCSIクラスドライバ50から各コネクションのリクエストが入力される。チャネルポート33、34が開いている場合、チャネルポート33、34に入力されたリクエストは、チャネルキュー35、36にキューイングされることなく、直接、出力ポート42に送られる。チャネルポート33、34は、予約された量のリクエストがポートを通過した後、閉じられる。チャネルポート33、34が閉じられている場合、リクエストは、チャネルキュー35、36にキューイングされる。   The main channel 31 has a channel port 33 and a channel queue 35. Similarly, the reserved channel 32 has a channel port 34 and a channel queue 36. A request for each connection is input from the SCSI class driver 50 to the channel ports 33 and 34 of the channels 31 and 32. When the channel ports 33 and 34 are open, the request input to the channel ports 33 and 34 is sent directly to the output port 42 without being queued to the channel queues 35 and 36. Channel ports 33 and 34 are closed after a reserved amount of requests has passed through the ports. If the channel ports 33, 34 are closed, the request is queued in the channel queues 35, 36.

各チャネルキュー35、36は、現在のタイムフレームに対してチャネルポート33、34が閉じられている間、チャネルポート33、34に入力されたリクエストを蓄積する。予約チャネル32のチャネルポート34は、各タイムフレームの開始時点で開き、予約された量のリクエストがポートを通過した時点で閉じることで、予約された量のリクエストだけが出力ポート42に送られる。メインチャネル31のチャネルポート33も、各タイムフレームの開始時点で開き、予約可能な総帯域幅の内、未予約帯域幅内に収まる量のリクエストがポートを通過した時点で閉じることで、未予約帯域範囲内の量のリクエストだけが出力ポート42に送られる。   Each channel queue 35, 36 accumulates requests input to the channel ports 33, 34 while the channel ports 33, 34 are closed for the current time frame. The channel port 34 of the reserved channel 32 opens at the start of each time frame and closes when the reserved amount of requests passes through the port, so that only the reserved amount of requests is sent to the output port 42. The channel port 33 of the main channel 31 is also opened at the start of each time frame, and is closed when the amount of requests that can be accommodated within the unreserved bandwidth out of the total reserved bandwidth passes through the port. Only requests in the bandwidth range are sent to the output port 42.

タイマ38は1タイムフレーム分の時間経過をクロックによって計測しており、1タイムフレームの経過をメインチャネル31、予約チャネル32、および出力ポート42に通知する。タイマ38からの通知を受けて、メインチャネル31、予約チャネル32、および出力ポート42において、新しいタイムフレームの開始に当たり、各種パラメータが適宜リセットされる。タイマ38から1タイムフレームの経過を通知されると、各チャネル31、32においてチャネルポート33、34が開かれ、まず各チャネル31、32のチャネルキュー35、36にキューイングされたリクエストが開かれたチャネルポート33、34から出力ポート42に送られる。   The timer 38 measures the passage of time for one time frame using a clock, and notifies the main channel 31, the reserved channel 32, and the output port 42 of the passage of one time frame. In response to the notification from the timer 38, various parameters are appropriately reset at the start of a new time frame in the main channel 31, the reserved channel 32, and the output port 42. When the timer 38 notifies that one time frame has elapsed, the channel ports 33 and 34 are opened in the channels 31 and 32, and first, the requests queued in the channel queues 35 and 36 of the channels 31 and 32 are opened. Sent from the channel ports 33 and 34 to the output port 42.

出力ポート42は、各チャネル31、32から渡されたリクエストを多重化してディスクスケジューラ20に送る。これにより、マルチプレクサ30に入力されたリクエストは、出力ポート42を通じて多重化されてディスクスケジューラ20のディスクスケジューリング用のキュー(以下、「ディスクスケジューラキュー」という)22に渡される。なお、タイムフレームの開始時点で、チャネルキュー35、36で待ち状態になっていたリクエストは、開かれたチャネルポート33、34から出力ポート42に出力され、出力ポート42を経由してディスクスケジューラキュー22に送られる。ディスクスケジューラキュー22には、タイムフレーム単位でリクエストがキューイングされる。同図では、タイムフレームnではリクエスト24a〜24cが、タイムフレームn+1ではリクエスト25a〜25dがキューイングされている様子が模式的に示されている。   The output port 42 multiplexes the requests passed from the channels 31 and 32 and sends them to the disk scheduler 20. As a result, the request input to the multiplexer 30 is multiplexed through the output port 42 and passed to the disk scheduling queue 22 (hereinafter referred to as “disk scheduler queue”) 22 of the disk scheduler 20. It should be noted that a request that has been waiting in the channel queues 35 and 36 at the start of the time frame is output to the output port 42 from the opened channel ports 33 and 34, and the disk scheduler queue via the output port 42. 22 is sent. Requests are queued in the disk scheduler queue 22 in units of time frames. In the figure, a state in which requests 24a to 24c are queued in time frame n and requests 25a to 25d are queued in time frame n + 1 is schematically shown.

ディスクスケジューラ20は、マルチプレクサ30からフレーム単位で多重化されたリクエストを受け取り、ディスクスケジューラキュー22にキューイングし、フレーム毎にフレーム内のリクエストの実行順序をスケジューリングする。ディスクスケジューラ20は、ディスク性能を最大化するために、フレーム内の各リクエストのディスクアクセスパターンを考慮して、スケジューリングを行い、スケジューリングされたリクエストをデバイスドライバ10に供給する。   The disk scheduler 20 receives a request multiplexed in units of frames from the multiplexer 30, queues the requests in the disk scheduler queue 22, and schedules the execution order of the requests in the frame for each frame. In order to maximize the disk performance, the disk scheduler 20 performs scheduling in consideration of the disk access pattern of each request in the frame, and supplies the scheduled request to the device driver 10.

ディスクスケジューラキュー22にリクエストが全くないとき、ディスクスケジューラ20は、空き帯域幅ポート44にリクエストを要求する。ディスクスケジューラ20からの要求を受けて、マルチプレクサ30は、リクエストをキューイングしている最も高い優先度のチャネルを選び、そのチャネルにキューイングされたリクエストを取り出して空き帯域幅ポート44に渡す。ディスクスケジューラ20は、空き帯域幅ポート44からリクエストを受け取って実行に移す(すなわちリクエストをデバイスドライバ10に渡す)。   When there is no request in the disk scheduler queue 22, the disk scheduler 20 requests a request from the free bandwidth port 44. In response to the request from the disk scheduler 20, the multiplexer 30 selects the highest priority channel that queues the request, extracts the request queued in that channel, and passes it to the free bandwidth port 44. The disk scheduler 20 receives a request from the free bandwidth port 44 and executes it (that is, passes the request to the device driver 10).

以上述べたように、マルチプレクサ30に入力されたリクエストは次の3つのパスのいずれかを通ってディスクスケジューラ20に渡される。
(1)チャネルポート33、34が開いているとき、リクエストがチャネルキュー35、36にキューイングされることなく(チャネルキュー35、36をバイパスして)、直接、出力ポート42に渡され、出力ポート42からディスクスケジューラキュー22にキューイングされるパス。
(2)チャネルポート33、34が閉じているとき、リクエストがチャネルキュー35、36にいったんキューイングされた後、次のタイムフレームの始まりにおいて、開かれたチャネルポート33、34から出力ポート42に渡され、出力ポート42からディスクスケジューラキュー22にキューイングされるパス。
(3)ディスクスケジューラキュー22が空いているとき、優先度の高いチャネルのチャネルキュー35、36にキューイングされたリクエストが空き帯域幅ポート44に渡され、ディスクスケジューラキュー22にキューイングされることなく、実行されるパス。
As described above, the request input to the multiplexer 30 is passed to the disk scheduler 20 through one of the following three paths.
(1) When the channel ports 33 and 34 are open, the request is not directly queued in the channel queues 35 and 36 (bypassing the channel queues 35 and 36), but directly passed to the output port 42 and output. A path queued from the port 42 to the disk scheduler queue 22.
(2) When the channel ports 33 and 34 are closed, the request is once queued in the channel queues 35 and 36, and then from the opened channel ports 33 and 34 to the output port 42 at the beginning of the next time frame. A path that is passed and queued from the output port 42 to the disk scheduler queue 22.
(3) When the disk scheduler queue 22 is free, the requests queued in the channel queues 35 and 36 of the channel having a high priority are passed to the free bandwidth port 44 and are queued in the disk scheduler queue 22 Not the path to be executed.

図3(a)、(b)を参照して、メインチャネル31および予約チャネル32の内部構成とリクエストの入出力制御を詳しく説明する。メインチャネル31と予約チャネル32の内部構成と入出力制御は共通しているので、まとめて説明する。図3(a)に示すように、チャネル31、32のチャネルポート33、34は、入力側ポート45と出力側ポート46を含む。入力側ポート45、出力側ポート46はそれぞれ開端子と閉端子をもち、どちらかに切り替えることでポートが開閉される。   The internal configuration of the main channel 31 and the reserved channel 32 and the request input / output control will be described in detail with reference to FIGS. The internal configuration and input / output control of the main channel 31 and the reserved channel 32 are common and will be described together. As shown in FIG. 3A, the channel ports 33 and 34 of the channels 31 and 32 include an input side port 45 and an output side port 46. Each of the input side port 45 and the output side port 46 has an open terminal and a closed terminal, and the ports are opened and closed by switching to either one.

チャネル31、32の入力側ポート45と出力側ポート46の開閉状態により、図3(b)に示すような3通りのチャネルポートの状態が作られる。状態Aは、入力側ポート45が「開」かつ出力側ポート46が「閉」の状態であり、入力側ポート45の開端子に入力されたリクエストは、出力側ポート46の閉端子を通ってチャネルキュー35、36にキューイングされる。   Depending on the open / closed states of the input port 45 and the output port 46 of the channels 31 and 32, three channel port states as shown in FIG. State A is a state in which the input side port 45 is “open” and the output side port 46 is “closed”, and a request input to the open terminal of the input side port 45 passes through the closed terminal of the output side port 46. It is queued in the channel queues 35 and 36.

状態Bは、入力側ポート45が「開」かつ出力側ポート46が「開」の状態であり、入力側ポート45の開端子に入力されたリクエストは、出力側ポート46の開端子を通って出力ポート42に出力される(チャネルキュー35、36をバイパスする)。   State B is a state in which the input side port 45 is “open” and the output side port 46 is “open”, and a request input to the open terminal of the input side port 45 passes through the open terminal of the output side port 46. The data is output to the output port 42 (bypass the channel queues 35 and 36).

状態Cは、入力側ポート45が「閉」かつ出力側ポート46が「開」の状態であり、入力側ポート45が閉じられているため、新しいリクエストが入力されることはなく、チャネルキュー35、36にキューイングされたリクエストが入力側ポート45の閉端子に入力され、出力側ポート46の開端子を通って出力ポート42に出力される。   In state C, the input side port 45 is “closed” and the output side port 46 is “open”, and the input side port 45 is closed. Therefore, no new request is input, and the channel queue 35 , 36 are input to the closed terminal of the input side port 45, and output to the output port 42 through the open terminal of the output side port 46.

「チャネルポート33、34が閉じている」とは、状態Aをいう。このとき、入力されたリクエストはチャネルキュー35、36にキューイングされる。   “Channel ports 33 and 34 are closed” means state A. At this time, the input request is queued in the channel queues 35 and 36.

「チャネルポート33、34が開いている」とは、状態Bと状態Cの2通りを指す。新しいタイムフレームが始まると、最初は、チャネルポート33、34は状態Cになって、チャネルキュー35、36にキューイングされたリクエストがチャネルポート33、34から出力ポート42に出力される。この後、チャネルの帯域幅がまだ残っていれば、チャネルポート33、34は、状態Bになり、新しく到着するリクエストがチャネルキュー35、36をバイパスしてチャネルポート33、34から出力ポート42に出力される。もし、状態Cにおいてキューイングされたリクエストをチャネルポート33、34から出力したことにより、チャネルの帯域幅を使い切った場合は、チャネルポート33、34は、状態Aになり、新しく到着するリクエストはチャネルキュー35、36にキューイングされる。   “Channel ports 33 and 34 are open” refers to two states, state B and state C. When a new time frame starts, the channel ports 33 and 34 are initially in the state C, and the requests queued in the channel queues 35 and 36 are output from the channel ports 33 and 34 to the output port 42. After this, if the channel bandwidth still remains, the channel ports 33, 34 will be in state B, and a newly arriving request will bypass the channel queues 35, 36 and pass from the channel ports 33, 34 to the output port 42. Is output. If the channel bandwidth is used up by outputting the queued requests in the state C from the channel ports 33 and 34, the channel ports 33 and 34 are in the state A, and the newly arriving request is the channel. It is queued in the queues 35 and 36.

このように、チャネルポート33、34は、入力側ポート45と出力側ポート46を内部構成としてもち、それらの開閉状態により、リクエストの入出力経路が制御されるが、以下の説明では、簡単のため、内部構成とリクエストの入出力経路の制御動作については触れずに、出力側ポート46の開閉状態のみに注目して、チャネルポート33、34の開閉状態を説明していることに留意する。   As described above, the channel ports 33 and 34 have the input side port 45 and the output side port 46 as internal configurations, and the input / output path of the request is controlled according to the open / closed state thereof. Therefore, it should be noted that the open / closed states of the channel ports 33 and 34 are described by focusing only on the open / closed state of the output port 46, without touching the control operation of the internal configuration and the request input / output path.

[2]パラメータ
図2のリクエストスケジューラ40で用いられる各種パラメータを説明する。
[2.1]タイムフレーム
タイムフレームは、マルチプレクサ30において帯域幅が計算される時間単位である。タイムフレームは、ディスクスケジューラ20において多重化されるリクエストを区切るタイムウインドウでもある。異なるタイムフレームで発行されたリクエスト間では順番が入れ替えられることはなく、発行された順序で実行される。一つのタイムフレーム内で発行されたリクエスト間ではディスクスケジューラ20において順番が入れ替えられることがある。
[2] Parameters Various parameters used in the request scheduler 40 of FIG. 2 will be described.
[2.1] Time Frame The time frame is a time unit in which the bandwidth is calculated in the multiplexer 30. The time frame is also a time window that divides requests multiplexed in the disk scheduler 20. The order is not exchanged between requests issued in different time frames, and the requests are executed in the order in which they are issued. The order may be changed in the disk scheduler 20 between requests issued within one time frame.

タイムフレームはシステム内で可変の値である。タイムフレームが長いほどスループットが良くなり、タイムフレームが短いほど平均レスポンスタイムがより良くなる。レスポンスタイムとスループットの間にはトレードオフがあり、スケジュール対象のコネクションの種類やその組み合わせなどによってタイムフレームを適宜変えることができる。   The time frame is a variable value in the system. The longer the time frame, the better the throughput, and the shorter the time frame, the better the average response time. There is a trade-off between response time and throughput, and the time frame can be appropriately changed depending on the type of connection to be scheduled and the combination thereof.

[2.2]予約パラメータ
予約パラメータは、帯域幅予約に使われるパラメータであり、帯域幅予約の変更に伴って調整される。以下の帯域幅の定義は、タイムフレームの値によってスケーリングされることに留意する。予約パラメータには以下のものがある。
[2.2] Reservation parameter The reservation parameter is a parameter used for bandwidth reservation, and is adjusted in accordance with the change of the bandwidth reservation. Note that the following bandwidth definition is scaled by the value of the time frame. The reservation parameters are as follows.

[2.2.1]最小デバイス帯域幅と最大デバイス帯域幅
ストレージデバイス150が提供することができるデータ転送レートをデバイス帯域幅という。ディスクのシークタイムが変動することから、ストレージデバイス150は、単位時間当たりに同じ量のデータ転送を実行できるとは限らない。データ転送レートは、最小値と最大値の間で変動する。最小デバイス帯域幅は、ストレージデバイス150が提供できる最小の帯域幅である。ワーストケースの評価にもとづいて、デバイスドライバ10は最小デバイス帯域幅を求めて通知することができる。マルチプレクサ30は、予約された帯域幅の合計が最小デバイス帯域幅を超えない範囲で、帯域幅予約を許可する。最大デバイス帯域幅は、ストレージデバイス150がベストの条件下で提供可能な持続的なデータ転送レートである。
[2.2.1] Minimum Device Bandwidth and Maximum Device Bandwidth The data transfer rate that can be provided by the storage device 150 is referred to as device bandwidth. Since the seek time of the disk fluctuates, the storage device 150 cannot always perform the same amount of data transfer per unit time. The data transfer rate varies between a minimum value and a maximum value. The minimum device bandwidth is the minimum bandwidth that the storage device 150 can provide. Based on the worst case evaluation, the device driver 10 can determine and notify the minimum device bandwidth. The multiplexer 30 permits the bandwidth reservation in such a range that the total reserved bandwidth does not exceed the minimum device bandwidth. The maximum device bandwidth is a sustained data transfer rate that the storage device 150 can provide under the best conditions.

[2.2.2]総予約可能帯域幅、総予約帯域幅、および総未予約帯域幅
総予約可能帯域幅net_bwは、1つ以上のチャネルによって予約可能な総帯域幅であり、最小デバイス帯域幅に等しい。総予約帯域幅net_reservedは、すべてのチャネルの予約帯域幅の合計である。総未予約帯域幅net_unreservedは、予約可能な残存する帯域幅であり、総予約可能帯域幅net_bwから総予約帯域幅net_reservedを引いた値に等しい。
[2.2.2] Total Reservable Bandwidth, Total Reserved Bandwidth, and Total Unreserved Bandwidth Total reserved bandwidth net_bw is the total bandwidth that can be reserved by one or more channels, and is the minimum device bandwidth Equal to width. The total reserved bandwidth net_reserved is the total reserved bandwidth of all channels. The total unreserved bandwidth net_unreserved is a remaining bandwidth that can be reserved, and is equal to a value obtained by subtracting the total reserved bandwidth net_reserved from the total reserved bandwidth net_bw.

[2.3]タイムフレームパラメータ
タイムフレームパラメータは、マルチプレクサ30において用いられるパラメータである。タイムフレームパラメータは、すべてのチャネルに共通するパラメータであり、タイムフレーム毎に変化する。タイムフレームパラメータには以下のものがある。
[2.3] Time Frame Parameter The time frame parameter is a parameter used in the multiplexer 30. The time frame parameter is a parameter common to all channels, and changes for each time frame. The time frame parameters are as follows.

[2.3.1]仮空き帯域幅net_credit
どのチャネルからも要求されないディスク帯域幅は、仮空き帯域幅net_creditと呼ばれる。帯域幅を予約したコネクションは、必ずしも各タイムフレームで予約した帯域幅を利用するとは限らない。帯域幅を予約したコネクションであっても、タイムフレーム内で帯域幅を要求しない、すなわちリクエストを発行しないことがあり、空き帯域幅が生じる。現タイムフレームに対する仮空き帯域幅net_creditには最小デバイス帯域幅と最大デバイス帯域幅の差も加算される。
[2.3.1] Temporary free bandwidth net_credit
The disk bandwidth that is not requested from any channel is called the provisional free bandwidth net_credit. A connection that reserves bandwidth does not necessarily use the bandwidth reserved in each time frame. Even a connection with reserved bandwidth may not request bandwidth within the time frame, that is, may not issue a request, resulting in free bandwidth. The difference between the minimum device bandwidth and the maximum device bandwidth is also added to the provisional free bandwidth net_credit for the current time frame.

各コネクションのリクエストはタイムフレームの始まりに到着することも、タイムフレームの終わり近くになって到着することもあり、リクエストの到着時間は予測不可能である。そのため、タイムフレームの途中で、ある予約チャネルからのリクエストが未到着で帯域に空きが生じる場合は、とりあえず空き帯域が生じたと仮定して、その都度、他の予約チャネルや帯域予約のないメインチャネルからのリクエストに帯域を割り当てる。しかし、そのタイムフレーム内に予約チャネルからリクエストが遅れて到着し、予約した帯域幅が要求されることがある。すなわち、予約リクエストが到着しないために、空き帯域幅であると想定して他のチャネルのリクエストのためにその空き帯域幅を使ってしまうと、遅れて到着した予約チャネルのリクエストに割り当てる帯域が足りなくなり、そのリクエストを実行することができない事態が発生する。これが次に述べる「偽空き帯域幅」が発生した状態である。   Requests for each connection may arrive at the beginning of the time frame or near the end of the time frame, and the arrival time of the request is unpredictable. Therefore, in the middle of a time frame, if a request from a certain reserved channel has not arrived and a bandwidth is vacant, it is assumed that a vacant bandwidth has been created for the time being. Allocate bandwidth for requests from. However, a request arrives late from the reserved channel within the time frame, and the reserved bandwidth may be required. In other words, because the reservation request does not arrive, assuming that it is free bandwidth, and using that free bandwidth for requests on other channels, there is not enough bandwidth allocated for the reservation channel requests that arrived late. It happens that the request cannot be executed. This is the state in which the “false free bandwidth” described below has occurred.

[2.3.2]偽空き帯域幅net_deficit
1つ以上の予約チャネルのリクエストが現タイムフレームにおいて帯域不足で実行できない状態になった場合、現タイムフレームにおいて以前に「空き帯域幅が生じた」と仮定したことが誤りであったことを意味する。仮定した空き帯域幅は、実際は、「偽空き帯域幅」であったのであるから、その帯域幅を要求したチャネルは、次のタイムフレームにおいて、帯域幅が奪われたチャネルに帯域幅を返さなければならない。このように誤って空き帯域幅であると仮定して使用してしまった帯域幅を偽空き帯域幅net_deficitという。
[2.3.2] False free bandwidth net_deficit
If one or more reserved channel requests become unexecutable due to lack of bandwidth in the current time frame, it means that it was an error to assume that there was "free bandwidth" in the current time frame. To do. The assumed free bandwidth was actually a “pseudo free bandwidth”, so the channel that requested the bandwidth must return the bandwidth to the deprived channel in the next time frame. I must. The bandwidth that has been used by assuming that it is an empty bandwidth by mistake is called a false empty bandwidth net_deficit.

[2.3.3]総浪費帯域幅net_wasted
マルチプレクサ30とディスクスケジューラ20がともにリクエストをもたないとき、デバイスドライバ10はアイドル状態になり、ディスク帯域幅は浪費される。デバイスドライバ10がアイドルである、すなわちストレージデバイス150がアイドルである間の帯域幅を総浪費帯域幅net_wastedという。
[2.3.3] Total waste bandwidth net_wasteed
When neither multiplexer 30 nor disk scheduler 20 has a request, device driver 10 is idle and disk bandwidth is wasted. The bandwidth while the device driver 10 is idle, that is, the storage device 150 is idle is referred to as the total wasted bandwidth net_waste.

[2.3.4]総使用帯域幅net_used
総使用帯域幅net_usedは、現タイムフレームにおいて出力ポート42を通過したリクエストのサイズ(バイト単位)の合計である。
[2.3.4] Total bandwidth used net_used
The total used bandwidth net_used is the total size (in bytes) of requests that have passed through the output port 42 in the current time frame.

[2.3.5]総未使用帯域幅net_unused
総未使用帯域幅net_unusedは、現タイムフレームにおいて利用可能な帯域幅の残存量であり、総予約可能帯域幅net_bwから総浪費帯域幅net_wastedと総使用帯域幅net_usedを引いた値である。
net_unused = net_bw - (net_wasted + net_used)
[2.3.5] Total unused bandwidth net_unused
The total unused bandwidth net_unused is the remaining amount of bandwidth that can be used in the current time frame, and is a value obtained by subtracting the total wasted bandwidth net_waste and the total used bandwidth net_used from the total reservable bandwidth net_bw.
net_unused = net_bw-(net_wasted + net_used)

[2.4]チャネルパラメータ
チャネルパラメータも、マルチプレクサ30において用いられるパラメータである。チャネルパラメータはチャネル毎に設定されるパラメータであり、チャネルの状態を示す。チャネルパラメータには以下のものがある。
[2.4] Channel Parameter The channel parameter is also a parameter used in the multiplexer 30. The channel parameter is a parameter set for each channel and indicates a channel state. Channel parameters include the following:

[2.4.1]チャネル予約帯域幅c_reserved
チャネルに割り当てられた帯域幅をチャネル予約帯域幅c_reservedという。
[2.4.2]チャネル使用帯域幅c_used
チャネル使用帯域幅c_usedは、現タイムフレームにおいてチャネルを通過したリクエストのサイズ(バイト単位)の合計である。
[2.4.3]チャネル未使用帯域幅c_unused
チャネルが現タイムフレームにおいてデータ転送に用いることができる帯域幅の残存量である。チャネル未使用帯域幅c_unusedは、チャネル予約帯域幅c_reservedからチャネル使用帯域幅c_usedと次に述べるチャネル浪費帯域幅c_wastedを引いたものである。
c_unused = c_reserved - (c_used + c_wasted)
[2.4.1] Channel reserved bandwidth c_reserved
The bandwidth allocated to the channel is referred to as channel reserved bandwidth c_reserved.
[2.4.2] Channel usage bandwidth c_used
The channel use bandwidth c_used is the total size (in bytes) of requests that have passed through the channel in the current time frame.
[2.4.3] Channel unused bandwidth c_unused
The remaining amount of bandwidth that the channel can use for data transfer in the current time frame. The unused channel bandwidth c_unused is the reserved channel bandwidth c_reserved minus the used channel bandwidth c_used and the channel wasted bandwidth c_waste described below.
c_unused = c_reserved-(c_used + c_wasted)

[2.4.4]チャネル浪費帯域幅c_wasted
総浪費帯域幅net_wastedの内、各チャネルの割り当て分をチャネル浪費帯域幅c_wastedという。各チャネルのチャネル浪費帯域幅c_wastedは、そのチャネルのチャネル未使用帯域幅c_unusedに比例する。すなわち、総浪費帯域幅net_wastedは、チャネル未使用帯域幅c_unusedの比でチャネル間に配分される。
[2.4.4] Channel wasted bandwidth c_wasteed
Of the total wasted bandwidth net_waste, the portion allocated to each channel is referred to as channel wasted bandwidth c_wasteed. The channel waste bandwidth c_wasteed of each channel is proportional to the channel unused bandwidth c_unused of that channel. That is, the total wasted bandwidth net_waste is distributed among the channels at a ratio of the unused channel bandwidth c_unused.

[2.4.5]チャネルクレジット帯域幅c_credit
チャネルが、割り当てられた帯域幅を超えて使用した場合、チャネルクレジット帯域幅c_creditは、その超過量だけインクリメントされる。チャネルが、自分自身に割り当てられた帯域幅を他のチャネルに奪われたとき、チャネルクレジット帯域幅c_creditは、その奪われた量だけデクリメントされる。正のチャネルクレジット帯域幅c_creditの値は、そのチャネルが予約量を超えて使ったことを意味し、負のチャネルクレジット帯域幅c_creditの値は、そのチャネルが予約量よりも少ない量しか使っていないことを意味する。
[2.4.5] Channel credit bandwidth c_credit
If the channel uses more than the allocated bandwidth, the channel credit bandwidth c_credit is incremented by the excess amount. When a channel is deprived of the bandwidth allocated to it by another channel, the channel credit bandwidth c_credit is decremented by the deprived amount. A positive channel credit bandwidth c_credit value means that the channel has used more than the reserved amount, and a negative channel credit bandwidth c_credit value uses less than the reserved amount for the channel. Means that.

チャネルクレジット帯域幅c_creditは、次のタイムフレームに対してチャネル使用帯域幅c_usedを設定するために用いられる。あるチャネルが他のチャネルの帯域幅を横取りして、より多くの帯域幅を使った場合、次のタイムフレームにおいて、そのチャネルは超過分を償うために帯域幅の使用量を少なくする。あるチャネルが自分が使用する帯域幅を奪われた場合、次のタイムフレームにおいて、そのチャネルはチャネルクレジット帯域幅c_creditの補償を受ける。   The channel credit bandwidth c_credit is used to set the channel usage bandwidth c_used for the next time frame. If a channel steals the bandwidth of another channel and uses more bandwidth, in the next time frame, that channel will use less bandwidth to make up for the excess. If a channel is deprived of the bandwidth that it uses, it will be compensated for the channel credit bandwidth c_credit in the next time frame.

[2.4.6]チャネル優先度c_priority
チャネル優先度c_priorityは、チャネルが空き帯域幅を使用する際の優先度である。優先度が高いほど、チャネルが空き帯域幅を取得できる確率が高くなる。チャネル優先度c_priorityの調整の仕方は後述する。
[2.4.6] Channel priority c_priority
The channel priority c_priority is a priority when a channel uses an empty bandwidth. The higher the priority, the higher the probability that the channel can acquire free bandwidth. A method for adjusting the channel priority c_priority will be described later.

[2.5]帯域幅予約タイプ
各コネクションは、ストレージデバイス150のデータ転送の帯域幅を絶対量で予約する。すべてのコネクションで予約された帯域幅の合計は、ストレージデバイス150の総予約可能帯域幅net_bwを超えることはできない。帯域幅を予約することにより、ある単位時間内で最低限、ある量のデータが転送されることが保証されるため、レスポンスタイムが予測できないものになるのを防ぐことができる。また、帯域幅を予約することにより、コネクション間でストレージデバイス150のデータ転送能力を公平に共有することが可能になる。
[2.5] Bandwidth Reservation Type Each connection reserves the absolute bandwidth of the data transfer bandwidth of the storage device 150. The sum of the bandwidths reserved for all connections cannot exceed the total reservable bandwidth net_bw of the storage device 150. By reserving the bandwidth, it is guaranteed that a certain amount of data is transferred at a minimum within a certain unit time, so that the response time can be prevented from becoming unpredictable. In addition, by reserving the bandwidth, the data transfer capability of the storage device 150 can be shared fairly between the connections.

帯域幅予約には、最小帯域幅を指定する予約と、最大帯域幅を指定する予約の2種類がある。最小帯域幅予約では、帯域幅の指定量は最小要求として扱われる。最小帯域幅を予約したコネクションは、その指定量の帯域幅を保証され、他の帯域幅予約に影響を与えない限り、より高いデータ転送速度が得られることもある。   There are two types of bandwidth reservations: reservations that specify a minimum bandwidth and reservations that specify a maximum bandwidth. In the minimum bandwidth reservation, the specified amount of bandwidth is treated as a minimum request. A connection that reserves a minimum bandwidth is guaranteed a specified amount of bandwidth, and a higher data transfer rate may be obtained as long as it does not affect other bandwidth reservations.

最大帯域幅予約では、帯域幅の指定量は最大要求として扱われる。最大帯域幅を予約したコネクションは、その指定量を超えるデータ転送速度が得られることはない。最大帯域幅予約は、チャネルが最大帯域幅を超えて空き帯域幅を要求しないように制限するために用いられる。   In maximum bandwidth reservation, a specified amount of bandwidth is treated as a maximum request. A connection that reserves the maximum bandwidth will never have a data transfer rate that exceeds the specified amount. Maximum bandwidth reservation is used to limit a channel from exceeding the maximum bandwidth and requesting free bandwidth.

[3]リクエストの多重化処理
[3.1]概要
リクエストスケジューラ40によるリクエストの多重化処理手順を説明する。リクエスト多重化処理は、帯域幅割り当てのエラー(前述の「偽空き帯域幅」)を補償する処理を含む。あるタイムフレームで発生した帯域幅割り当てのエラーは、次のタイムフレームで補償される。エラー補償処理を用いることで、マルチプレクサ30による多重化処理を高い精度をもたせたままで計算量的に軽量にすることができる。望ましい多重化処理の振る舞いは2つのフレームにまたがって実現されるから、完全な多重化処理が保証される単位時間は2フレーム分の長さになる。
[3] Request Multiplexing Process [3.1] Overview A request multiplexing process procedure by the request scheduler 40 will be described. The request multiplexing process includes a process for compensating for an error in bandwidth allocation (the aforementioned “false free bandwidth”). Bandwidth allocation errors that occur in one time frame are compensated for in the next time frame. By using the error compensation process, the multiplexing process by the multiplexer 30 can be made light in weight while maintaining high accuracy. Since the desired multiplexing processing behavior is realized across two frames, the unit time for which complete multiplexing processing is guaranteed is a length of two frames.

リクエスト多重化処理は次の3つの方針に基づいている。
(1)チャネルポートに入力されるリクエストは、チャネル予約帯域幅c_reservedに達するまではチャネルポートを通過することが許される。チャネル予約帯域幅c_reservedに達した後は、チャネルポートに入力されるリクエストは、チャネルキューにキューイングされる。キューイングされたリクエストは、現タイムフレームにおいて帯域幅を使うことが制限される。
(2)現タイムフレームが終わり、次のタイムフレームがスタートすると、チャネルキューからリクエストが(チャネル未使用帯域幅c_unusedを上限として)出力される。
(3)ディスクスケジューラキュー22が空きであるとき、ディスクスケジューラ20は、マルチプレクサ30の最も優先度が高いチャネルからリクエストを一つずつ取り出すことができる。
The request multiplexing process is based on the following three policies.
(1) A request input to a channel port is allowed to pass through the channel port until the channel reserved bandwidth c_reserved is reached. After reaching the channel reserved bandwidth c_reserved, a request input to the channel port is queued in the channel queue. Queued requests are limited to using bandwidth in the current time frame.
(2) When the current time frame ends and the next time frame starts, a request is output from the channel queue (with the channel unused bandwidth c_unused as the upper limit).
(3) When the disk scheduler queue 22 is empty, the disk scheduler 20 can retrieve requests one by one from the channel with the highest priority of the multiplexer 30.

[3.2]チャネルポートの状態
チャネルポートは、チャネル未使用帯域幅c_unusedの値に依存して、開いているか、閉じているかどちらかの状態をもつ。チャネル未使用帯域幅c_unusedの値が正(ゼロを含まない)であれば、チャネルポートは開いており、そうでなければ閉じている。チャネルポートが開いているとき、チャネルポートに入力されたリクエストは直接、出力ポート42に送られる。所定の量のリクエストがチャネルポートを通過すると、チャネルポートは次のタイムフレームまで閉じられる。チャネルポートが閉じられると、リクエストはチャネルキューにキューイングされる。チャネルポートは、そのチャネルが他のチャネルの帯域幅を使用するのを制限するために用いられる。
[3.2] Channel Port Status A channel port has either an open state or a closed state depending on the value of the channel unused bandwidth c_unused. If the value of channel unused bandwidth c_unused is positive (not including zero), the channel port is open, otherwise it is closed. When the channel port is open, a request input to the channel port is sent directly to the output port 42. When a predetermined amount of requests pass through the channel port, the channel port is closed until the next time frame. When the channel port is closed, the request is queued in the channel queue. A channel port is used to restrict that channel from using the bandwidth of other channels.

[3.3]出力ポートの状態
出力ポート42は、未使用帯域幅net_unusedの値に依存して、開いているか、閉じているかのいずれかの状態を取る。未使用帯域幅net_unusedの値が正であるなら、出力ポート42は開いており、そうでなければ、閉じている。
[3.3] Status of Output Port The output port 42 is in an open state or a closed state depending on the value of the unused bandwidth net_unused. If the value of the unused bandwidth net_unused is positive, the output port 42 is open, otherwise it is closed.

[3.4]チャネル優先度の調整
マルチプレクサ30は、空き帯域幅が利用可能であるときは、その空き帯域幅を最も優先度の高いチャネルに割り当てる。チャネル優先度c_priorityは、チャネル基本優先度c_base_priorityとチャネルキューリクエスト数c_queued_requestの和である。
c_priority=c_base_priority+c_queued_request
[3.4] Adjustment of Channel Priority When the available bandwidth is available, the multiplexer 30 assigns the available bandwidth to the channel with the highest priority. The channel priority c_priority is the sum of the channel basic priority c_base_priority and the number of channel queue requests c_queued_request.
c_priority = c_base_priority + c_queued_request

チャネル基本優先度c_base_priorityは、チャネルのタイプの違いまたは緊急性の要求度に応じてチャネルを区別するものであり、次の3つのレベルがある。
通常レベル:各チャネルのデフォルトの優先度である。
優先レベル:空き帯域幅を用いることがより好ましいチャネルに対して設定される。
剥奪レベル:あるチャネルが現タイムフレームにおいて自分の予約した帯域幅を使うことができないとき、そのチャネルは、次のタイムフレームにおいて、剥奪レベルの優先度がマルチプレクサ30によって設定される。
通常レベル、優先レベル、剥奪レベルの順に優先度が高くなる。マルチプレクサ30は、新しいタイムフレームが始まると、チャネル基本優先度をリセットする。
The channel basic priority c_base_priority distinguishes channels according to the difference in channel type or the degree of urgency, and has the following three levels.
Normal level: Default priority for each channel.
Priority level: It is set for a channel for which it is preferable to use a free bandwidth.
Deprivation level: When a channel cannot use its reserved bandwidth in the current time frame, the priority of the deprivation level is set by the multiplexer 30 in the next time frame.
The priority increases in the order of normal level, priority level, and deprivation level. Multiplexer 30 resets the channel basic priority when a new time frame begins.

チャネルキューリクエスト数c_queued_requestは、チャネルキューでペンディングしているリクエストの数である。チャネルキューにあるリクエストの数が増えると、チャネル優先度は増える。   The number of channel queue requests c_requested_request is the number of requests pending in the channel queue. As the number of requests in the channel queue increases, the channel priority increases.

[3.5]浪費帯域幅の更新
ディスクスケジューラ20がアイドルであるなら、帯域幅はリクエストが到着するまで浪費される。マルチプレクサ30はディスクスケジューラ20がアイドルになった時点のタイムスタンプwaste_time_startを記録する。
[3.5] Wasted bandwidth update If the disk scheduler 20 is idle, bandwidth is wasted until a request arrives. The multiplexer 30 records the time stamp waste_time_start when the disk scheduler 20 becomes idle.

ディスクスケジューラ20がアイドルであるときにリクエストが到着すると、マルチプレクサ30は現在のタイムスタンプwaste_time_endを取得し、浪費時間wasted_timeを計算する。
waste_time_end = get_current_time();
wasted_time = waste_time_end - waste_time_start;
When a request arrives when the disk scheduler 20 is idle, the multiplexer 30 obtains the current timestamp waste_time_end and calculates the wasted time wasted_time.
waste_time_end = get_current_time ();
wasted_time = waste_time_end-waste_time_start;

マルチプレクサ30は、最小デバイス帯域幅を用いて、浪費時間に対応する浪費帯域幅wasted_bandwidthを計算し、総浪費帯域幅net_wastedを更新する。
wasted_bandwidth = scale_to_bandwidth(wasted_time);
net_wasted = net_wasted + wasted_bandwidth;
The multiplexer 30 calculates the wasted bandwidth wasted_bandwidth corresponding to the wasted time using the minimum device bandwidth, and updates the total wasted bandwidth net_wasteed.
wasted_bandwidth = scale_to_bandwidth (wasted_time);
net_wasted = net_wasted + wasted_bandwidth;

総浪費帯域幅net_wastedは、非ゼロのチャネル未使用帯域幅c_unusedをもっているすべてのチャネルの間で、各チャネルのチャネル未使用帯域幅c_unusedに比例するように分配される。すなわち、チャネル浪費帯域幅c_wastedは以下のように計算される。
for all channels:
c_wasted = c_wasted + (c_unused * wasted_bandwidth) / net_unused;
The total wasted bandwidth net_waste is distributed among all channels with non-zero channel unused bandwidth c_unused in proportion to the channel unused bandwidth c_unused of each channel. That is, the channel wasted bandwidth c_wasteed is calculated as follows.
for all channels:
c_wasted = c_wasted + (c_unused * wasted_bandwidth) / net_unused;

このようにしてマルチプレクサ30はリクエストを発行する予定のあるすべてのチャネルに対して、総浪費帯域幅net_wastedを比例配分したチャネル浪費帯域幅c_wastedを各チャネルのチャネル使用帯域幅c_usedに加算し、そのチャネルがあたかもそのチャネル浪費帯域幅c_wastedの分を使用したかのように扱うことで、各チャネルにペナルティを与える。更新されたチャネル浪費帯域幅c_wastedによって、チャネル未使用帯域幅c_unusedは更新されて減少する。更新されたチャネル未使用帯域幅c_unusedに基づいて、マルチプレクサ30は、チャネルポートの状態を更新する。チャネル未使用帯域幅c_unusedが0以下になると、チャネルポートは閉じられる。   In this way, the multiplexer 30 adds the channel waste bandwidth c_waste obtained by proportionally allocating the total waste bandwidth net_waste to the channel use bandwidth c_used of each channel for all channels scheduled to issue requests. A penalty is given to each channel by treating the channel as if it had used the channel wasted bandwidth c_waste. The channel unused bandwidth c_unused is updated and decreased by the updated channel wasted bandwidth c_waste. Based on the updated channel unused bandwidth c_unused, the multiplexer 30 updates the state of the channel port. When the channel unused bandwidth c_unused becomes 0 or less, the channel port is closed.

[3.6]フローチャート
図4〜図8を参照して、リクエストスケジューラ40によるリクエスト多重化処理の手順を説明する。図4は、リクエスト多重化処理の全体的な流れを示すフローチャートである。リクエストスケジューラ40は、イベントの発生待ち状態にある(S100)。イベントとして、イベントA「リクエスト到着」、イベントB「ディスクスケジューラキューが空である」、イベントC「新しいタイムフレームの開始」の3つがあり、各イベントが発生すると、ステップS110、S120、S130の処理がそれぞれ実行される。各処理が実行されると、リクエストスケジューラ40は停止条件を確認し(S140)、停止しない場合(S140のN)、ステップS100のイベント発生待ち状態に戻り、停止する場合(S140のY)、終了する。
[3.6] Flowchart A procedure of request multiplexing processing by the request scheduler 40 will be described with reference to FIGS. FIG. 4 is a flowchart showing the overall flow of the request multiplexing process. The request scheduler 40 is in an event generation waiting state (S100). There are three events, event A “request arrival”, event B “disk scheduler queue is empty”, and event C “start of new time frame”. When each event occurs, processing in steps S110, S120, and S130 is performed. Are executed respectively. When each process is executed, the request scheduler 40 confirms the stop condition (S140). If the request scheduler 40 does not stop (N in S140), the process returns to the event occurrence waiting state in step S100 and stops (Y in S140). To do.

[3.6.1]イベントA:リクエスト到着
図5Aは、ステップS110のイベントA「リクエスト到着」が発生したときの処理を示すフローチャートである。新たなリクエストの到着時、それ以前にディスクスケジューラキュー22が空であったなら(S9のY)、浪費帯域幅の計測を終了するために現在時刻を記録し(S10)、浪費帯域幅の更新とチャネルポートの状態の更新を行う(S11)。新たなリクエストの到着時、それ以前にディスクスケジューラキュー22が空でなかった場合(S9のN)は、浪費帯域幅の計測をしていないので、ステップS10、S11の処理は不要であり、ステップS12に進む。
[3.6.1] Event A: Request Arrival FIG. 5A is a flowchart showing processing when event A “request arrival” in step S110 occurs. If the disk scheduler queue 22 was empty before the arrival of a new request (Y in S9), the current time is recorded to end the measurement of the wasted bandwidth (S10), and the wasted bandwidth is updated. The channel port status is updated (S11). If the disk scheduler queue 22 has not been empty before the arrival of a new request (N in S9), the waste bandwidth is not measured, so the processing in steps S10 and S11 is unnecessary. Proceed to S12.

図5Bは、ステップS11の浪費帯域幅の更新とチャネルポートの状態の更新の処理を詳しく示すフローチャートである。   FIG. 5B is a flowchart showing in detail the processing of updating the wasted bandwidth and updating the state of the channel port in step S11.

総浪費帯域幅net_wastedとチャネル浪費帯域幅c_wastedを上記の[3.5]で説明した手順にしたがって更新する(S150)。チャネル使用帯域幅c_usedの値と更新されたチャネル浪費帯域幅c_wastedの値によって、チャネル未使用帯域幅c_unusedが次式により更新され(S152)、チャネル未使用帯域幅c_unusedが正でなければ(S154のN)、チャネルポートが閉じられる(S156)。
c_unused = c_reserved - (c_used + c_wasted)
The total wasted bandwidth net_waste and the channel wasted bandwidth c_waste are updated according to the procedure described in [3.5] above (S150). The channel unused bandwidth c_unused is updated by the following equation based on the value of the channel used bandwidth c_used and the updated value of the channel wasted bandwidth c_used (S152). If the channel unused bandwidth c_unused is not positive (S154) N) The channel port is closed (S156).
c_unused = c_reserved-(c_used + c_wasted)

総使用帯域幅net_usedの値と更新された総浪費帯域幅net_wastedの値によって、総未使用帯域幅net_unusedが次式により更新され(S158)、総未使用帯域幅net_unusedが正でなければ(S160のN)、出力ポート42が閉じられる(S162)。
net_unused = net_bw - (net_used + net_wasted)
The total unused bandwidth net_unused is updated by the following equation based on the value of the total used bandwidth net_used and the updated value of the total wasted bandwidth net_used (S158), and if the total unused bandwidth net_unused is not positive (S160 N), the output port 42 is closed (S162).
net_unused = net_bw-(net_used + net_wasted)

図5Aに戻る。リクエストが到着したチャネルのチャネルポートが閉じている場合(S12のN)、リクエストはチャネルキューにキューイングされ、チャネル優先度が1つだけインクリメントされ(S38)、イベントAの処理は終了する。   Returning to FIG. 5A. If the channel port of the channel on which the request has arrived is closed (N in S12), the request is queued in the channel queue, the channel priority is incremented by one (S38), and the processing of event A ends.

リクエストが到着したチャネルのチャネルポートが開いており(S12のY)、かつ、出力ポート42が開いている場合(S14のY)、リクエストは出力ポート42に直接送られ、出力ポート42から出力される(S16)。   If the channel port of the channel on which the request has arrived is open (Y in S12) and the output port 42 is open (Y in S14), the request is sent directly to the output port 42 and output from the output port 42. (S16).

リクエストが出力ポート42から出力されると、チャネル使用帯域幅c_usedと総使用帯域幅net_usedは次式によりリクエストサイズ(バイト単位)だけインクリメントされる(S18)。
c_used = c_used + request_size
net_used = net_used + request_size
When the request is output from the output port 42, the channel use bandwidth c_used and the total use bandwidth net_used are incremented by the request size (byte unit) according to the following equation (S18).
c_used = c_used + request_size
net_used = net_used + request_size

更新されたチャネル使用帯域幅c_usedの値によって、チャネル未使用帯域幅c_unusedが次式により更新され(S20)、チャネル未使用帯域幅c_unusedが正でなければ(S22のN)、チャネルポートが閉じられる(S24)。
c_unused = c_reserved - (c_used + c_wasted)
The channel unused bandwidth c_unused is updated by the following equation with the updated value of the channel used bandwidth c_used (S20). If the channel unused bandwidth c_unused is not positive (N in S22), the channel port is closed. (S24).
c_unused = c_reserved-(c_used + c_wasted)

更新された総使用帯域幅net_usedの値によって、総未使用帯域幅net_unusedが次式により更新され(S26)、総未使用帯域幅net_unusedが正でなければ(S28のN)、出力ポート42が閉じられる(S30)。
net_unused = net_bw - (net_used + net_wasted)
The total unused bandwidth net_unused is updated by the following equation with the updated value of the total used bandwidth net_used (S26). If the total unused bandwidth net_unused is not positive (N in S28), the output port 42 is closed. (S30).
net_unused = net_bw-(net_used + net_wasted)

なお、ステップS18において、リクエストサイズがチャネル未使用帯域幅c_unusedよりも大きい場合は、チャネル未使用帯域幅c_unusedを超えて帯域幅を割り当てる必要があるため、その超過帯域幅の分だけ、チャネルクレジット帯域幅c_creditをインクリメントした上で、チャネル使用帯域幅c_usedと総使用帯域幅net_usedをリクエストサイズ(バイト単位)だけインクリメントすることになる。この場合、チャネルポートは直ちに閉じられる。ステップS18を疑似コードで書けば、次のようになる。   In step S18, when the request size is larger than the channel unused bandwidth c_unused, it is necessary to allocate a bandwidth exceeding the channel unused bandwidth c_unused, and therefore, the channel credit bandwidth is increased by the excess bandwidth. After incrementing the width c_credit, the channel use bandwidth c_used and the total use bandwidth net_used are incremented by the request size (in bytes). In this case, the channel port is immediately closed. If step S18 is written in the pseudo code, it becomes as follows.

if(c_unused < request_size)
c_credit = c_credit +(request_size - c_unused);
c_used = c_used + request_size;
net_used = net_used + request_size;
if (c_unused <request_size)
c_credit = c_credit + (request_size-c_unused);
c_used = c_used + request_size;
net_used = net_used + request_size;

ステップS14において、出力ポート42が閉じている場合(S14のN)、リクエストが到着したチャネルのチャネルポートが開いているにもかかわらず、出力ポート42が閉じているということであるから、別のチャネルが「偽空き帯域幅」を使用したことを意味する。この場合、リクエストをチャネルキューにキューイングし、チャネルの基本優先度を「剥奪レベル」に設定する(S32)。   In step S14, when the output port 42 is closed (N in S14), it means that the output port 42 is closed even though the channel port of the channel on which the request arrived is open. It means that the channel used “fake free bandwidth”. In this case, the request is queued in the channel queue, and the basic priority of the channel is set to “stripping level” (S32).

次に剥奪された帯域幅deprivedを求める(S34)。剥奪された帯域幅deprivedは、通常はリクエストサイズであるが、リクエストサイズがチャネル未使用帯域幅c_unusedを超える場合もあるので、剥奪された帯域幅deprivedは、正確には、リクエストサイズとチャネル未使用帯域幅c_unusedのいずれか小さい方で与えられる。チャネルクレジット帯域幅c_creditから剥奪された帯域幅deprivedを引き、偽空き帯域幅net_deficitに剥奪帯域幅deprivedを加える(S36)。ステップS34、36の疑似コードは次のようになる。   Next, the deprived bandwidth deprived is obtained (S34). The deprived bandwidth deprived is usually the request size, but the request size may exceed the channel unused bandwidth c_unused, so the deprived bandwidth deprived is exactly the request size and the channel unused It is given by the smaller of the bandwidth c_unused. The deprived bandwidth deprived is subtracted from the channel credit bandwidth c_credit, and the deprived bandwidth deprived is added to the false free bandwidth net_defict (S36). The pseudo code in steps S34 and S36 is as follows.

if(c_unused > 0) {
deprived = smallerof(c_unused, request_size);
c_credit = c_credit - deprived;
net_deficit = net_deficit + deprived;
}
if (c_unused> 0) {
deprived = smallerof (c_unused, request_size);
c_credit = c_credit-deprived;
net_deficit = net_deficit + deprived;
}

[3.6.2]イベントB:ディスクスケジューラキューが空
図6は、ステップS120のイベントB「ディスクスケジューラキューが空」が発生したときの処理を示すフローチャートである。マルチプレクサ30が実際のデバイス帯域幅よりも少ないリクエストを出力すると、ディスクスケジューラキュー22は各タイムフレームにおいて空き状態になる。ディスクスケジューラキュー22は、入力されるリクエストが存在しない場合にも空き状態になる。イベントB「ディスクスケジューラキューが空」は、ディスクスケジューラキュー22が空であるとき、ディスクスケジューラ20が空き帯域幅ポート44からリクエストの取り出しを試みることにより発生するイベントである。
[3.6.2] Event B: Disk Scheduler Queue is Empty FIG. 6 is a flowchart showing processing when event B “Disk Scheduler Queue is empty” in step S120 occurs. When the multiplexer 30 outputs a request that is less than the actual device bandwidth, the disk scheduler queue 22 becomes free in each time frame. The disk scheduler queue 22 becomes empty even when there is no input request. Event B “disk scheduler queue is empty” is an event that occurs when the disk scheduler 20 attempts to retrieve a request from the free bandwidth port 44 when the disk scheduler queue 22 is empty.

ディスクスケジューラ20からの空き帯域幅ポート44に対するアクセスを受けて、マルチプレクサ30は、いずれかのチャネルのチャネルキューにリクエストがあるかどうかを調べる(S50)。いずれかのチャネルキューにリクエストがある場合、最も優先度が高いチャネルキューからリクエストを取り出し、空き帯域幅ポート44に渡す(S52)。マルチプレクサ30は、チャネルクレジット帯域幅c_creditと仮空き帯域幅net_creditをリクエストサイズだけインクリメントする(S54)。
c_credit = c_credit + request_size
net_credit = net_credit + request_size
Upon receiving access to the free bandwidth port 44 from the disk scheduler 20, the multiplexer 30 checks whether there is a request in the channel queue of any channel (S50). If there is a request in any of the channel queues, the request is taken out from the channel queue with the highest priority and passed to the free bandwidth port 44 (S52). The multiplexer 30 increments the channel credit bandwidth c_cred and the provisional free bandwidth net_credit by the request size (S54).
c_credit = c_credit + request_size
net_credit = net_credit + request_size

空き帯域幅ポート44からリクエストを取得したことが出力ポート42に通知され、総使用帯域幅net_usedが更新され、その結果、総未使用帯域幅net_unusedが更新される(S55)。更新された総未使用帯域幅net_unusedが正でなければ(S56のN)、出力ポート42が閉じられる(S57)。   The output port 42 is notified that a request has been acquired from the free bandwidth port 44, the total used bandwidth net_used is updated, and as a result, the total unused bandwidth net_unused is updated (S55). If the updated total unused bandwidth net_unused is not positive (N in S56), the output port 42 is closed (S57).

ディスクスケジューラ20は空き帯域幅ポート44からリクエストを取得して実行に移す(S58)。   The disk scheduler 20 acquires a request from the free bandwidth port 44 and proceeds to execution (S58).

帯域幅が本当に空いているかどうかは、当該タイムフレームが終了し、新しいタイムフレームが始まるときまでわからないから、ステップS52〜S58は「空き帯域幅」であるとの仮定のもと実行される。もし、「偽空き帯域幅」であった場合は、次のタイムフレームで、チャネルクレジット帯域幅を用いて、エラーが補償される。エラー補償処理については、図7および図8で詳述される。   Whether the bandwidth is really free is unknown until the time frame ends and a new time frame begins, so steps S52-S58 are performed under the assumption of "free bandwidth". If it is “false free bandwidth”, the error is compensated for by using the channel credit bandwidth in the next time frame. The error compensation process will be described in detail with reference to FIGS.

いずれのチャネルキューにもリクエストが存在しない場合(S50のN)、マルチプレクサ30は空き帯域幅ポート44にリクエストを渡すことがない。このとき、マルチプレクサ30は、ディスクスケジューラ20が空き帯域幅ポート44からリクエストを取り出そうとしていたことから、ディスクスケジューラ20がアイドルであることを知ることができる。そこで、マルチプレクサ30は、浪費帯域幅の計測を開始するために現在時刻を記録する(S59)。そして、既に図5で述べたように、現タイムフレームにおいて次のリクエストが到着した時点で、マルチプレクサ30は、浪費帯域幅の計測を終了し、そのときの時刻を記録し、すべてのチャネルについてチャネル浪費帯域幅c_wastedを更新し、新しいリクエストを処理する前に適宜チャネルポートの状態を変更する(図5AのS9〜S11参照)。   If there is no request in any channel queue (N in S 50), the multiplexer 30 does not pass the request to the free bandwidth port 44. At this time, the multiplexer 30 can know that the disk scheduler 20 is idle because the disk scheduler 20 was trying to fetch a request from the free bandwidth port 44. Therefore, the multiplexer 30 records the current time to start measuring the wasted bandwidth (S59). As already described in FIG. 5, when the next request arrives in the current time frame, the multiplexer 30 finishes measuring the wasted bandwidth, records the time at that time, and sets the channel for all channels. The wasted bandwidth c_used is updated, and the state of the channel port is appropriately changed before processing a new request (see S9 to S11 in FIG. 5A).

[3.6.3]イベントC:新しいタイムフレームの開始
図7は、ステップS130のイベントC「新しいタイムフレームの開始」が発生したときの処理を示すフローチャートである。一つ前のタイムフレームTF(n−1)の期間が終わると、新しいタイムフレームTF(n)が始まる(ここで、nはタイムフレームの番号を示す)。新しいタイムフレームTF(n)が始まると、マルチプレクサ30は、まず、偽空き帯域幅net_deficitがゼロかどうかを調べる(S60)。偽空き帯域幅net_deficitがゼロなら(S60のY)、マルチプレクサ30は、すべてのチャネルのチャネル使用帯域幅c_usedとチャネルクレジット帯域幅c_creditをゼロにリセットし、総使用帯域幅net_used、仮空き帯域幅net_creditもゼロにリセットし(S62)、ステップS65に進む。
[3.6.3] Event C: Start of New Time Frame FIG. 7 is a flowchart showing processing when event C “Start of new time frame” in step S130 occurs. When the period of the previous time frame TF (n-1) ends, a new time frame TF (n) starts (where n indicates the number of the time frame). When a new time frame TF (n) starts, the multiplexer 30 first checks whether the pseudo free bandwidth net_deficit is zero (S60). If the false free bandwidth net_defict is zero (Y in S60), the multiplexer 30 resets the channel use bandwidth c_used and the channel credit bandwidth c_credit of all the channels to zero, and uses the total use bandwidth net_used and the provisional free bandwidth net_credit. Is also reset to zero (S62), and the process proceeds to step S65.

偽空き帯域幅net_deficitがゼロでないなら(S60のN)、一つ前のタイムフレームTF(n−1)で仮空き帯域幅net_creditを用いたチャネルは現タイムフレームTF(n)で帯域幅の使用量を減らさなければならない。一つ前のタイムフレームTF(n−1)で超過帯域幅を使用したチャネルに対してチャネル使用帯域幅c_usedを増加させることにより、偽空き帯域幅net_deficitに対するエラー補償がなされる(S64)。ステップS64のエラー補償処理は、図8で詳述する。   If the false free bandwidth net_defict is not zero (N in S60), the channel using the temporary free bandwidth net_cred in the previous time frame TF (n-1) uses the bandwidth in the current time frame TF (n). The amount must be reduced. By increasing the channel use bandwidth c_used for the channel that used the excess bandwidth in the previous time frame TF (n−1), error compensation for the pseudo free bandwidth net_defit is performed (S64). The error compensation process in step S64 will be described in detail with reference to FIG.

エラー補償処理が終わると、出力ポート42が開く(S65)。各チャネルのチャネル未使用帯域幅を調べ(S66)、チャネル未使用帯域幅が正であれば(S66のY)、そのチャネルのチャネルポートは開き(S68)、チャネルポートが開き続けている限り、チャネルキューが空になるまで、チャネルキューで待ち状態にあったリクエストが直ちに、開かれたチャネルポートから出力ポート42に渡され、出力ポート42から出力される(S70)。チャネルキューからリクエストが出力される度に、そのチャネルのチャネル未使用帯域幅が減少していく。ステップS66において、チャネルのチャネル未使用帯域幅が正でない場合(S66のN)、チャネルポートは閉じられ、新しいタイムフレームTF(n)において開かれることがない(S72)。   When the error compensation process is completed, the output port 42 is opened (S65). The channel unused bandwidth of each channel is checked (S66). If the channel unused bandwidth is positive (Y in S66), the channel port of that channel is opened (S68), and as long as the channel port continues to be opened, Until the channel queue is emptied, the request waiting in the channel queue is immediately transferred from the opened channel port to the output port 42 and output from the output port 42 (S70). Each time a request is output from the channel queue, the unused channel bandwidth of that channel decreases. In step S66, if the channel unused bandwidth of the channel is not positive (N in S66), the channel port is closed and is not opened in a new time frame TF (n) (S72).

図8は、ステップS64のエラー補償処理の詳細な手順を示すフローチャートである。最低優先度のチャネルを選択し(S80)、偽空き帯域幅net_deficitが正であれば(S82のY)、選択されたチャネルについてステップS84〜S92を実行し、偽空き帯域幅net_deficitが0になれば(S82のN)、選択されたチャネルについてステップS94を実行する。次に優先度が低いチャネルがあればそれを選択し(S96のY)、以降、ステップS82〜S94を繰り返し、すべてのチャネルの処理が終われば(S96のN)、エラー補償処理を終了する。   FIG. 8 is a flowchart showing a detailed procedure of the error compensation process in step S64. If the lowest priority channel is selected (S80) and the false free bandwidth net_deficit is positive (Y in S82), steps S84 to S92 are executed for the selected channel, and the false free bandwidth net_deficit becomes 0. If (N in S82), step S94 is executed for the selected channel. If there is a channel with the next lowest priority (Y in S96), the channel is selected (S96: Y). Thereafter, steps S82 to S94 are repeated. If all channels have been processed (N in S96), the error compensation process is terminated.

まず、偽空き帯域幅net_deficitが正である場合(S82のY)について、選択されたチャネルについてのステップS84〜S92の処理を説明する。   First, the processing of steps S84 to S92 for the selected channel will be described for the case where the false free bandwidth net_deficit is positive (Y in S82).

選択されたチャネルについて、チャネルクレジット帯域幅c_creditが正であり(S84のY)、かつ、チャネルクレジット帯域幅c_creditが偽空き帯域幅net_deficitよりも小さい場合(S86のY)、偽空き帯域幅net_deficitをチャネルクレジット帯域幅c_creditだけ減算する(S88)。そして、チャネル使用帯域幅c_usedにチャネルクレジット帯域幅c_creditを代入し、チャネルクレジット帯域幅c_creditをゼロにする(S92)。これにより、このチャネルについては、あたかもチャネルクレジット帯域幅c_credit分だけ帯域幅を使用したような状態になる。   For the selected channel, if the channel credit bandwidth c_credit is positive (Y in S84) and the channel credit bandwidth c_credit is smaller than the fake free bandwidth net_deficit (Y in S86), the fake free bandwidth net_deficit is set. The channel credit bandwidth c_cred is subtracted (S88). Then, the channel credit bandwidth c_cred is substituted for the channel use bandwidth c_used, and the channel credit bandwidth c_cred is set to zero (S92). As a result, this channel is in a state where the bandwidth is used as much as the channel credit bandwidth c_credit.

チャネルクレジット帯域幅c_creditが正であるが(S84のY)、チャネルクレジット帯域幅c_creditが偽空き帯域幅net_deficit以上である場合(S86のN)、チャネルクレジット帯域幅c_creditを偽空き帯域幅net_deficitに置き換え、偽空き帯域幅net_deficitをゼロにする(S90)。その上で、チャネル使用帯域幅c_usedにチャネルクレジット帯域幅c_creditを代入し、チャネルクレジット帯域幅c_creditをゼロにする(S92)。これにより、偽空き帯域幅net_deficitを超えるチャネルクレジット帯域幅c_creditの場合は、いったんチャネルクレジット帯域幅c_creditを偽空き帯域幅net_deficitの値に減らした上で、チャネル使用帯域幅c_usedに代入される。   If the channel credit bandwidth c_cred is positive (Y in S84) but the channel credit bandwidth c_cred is equal to or larger than the false free bandwidth net_deficit (N in S86), the channel credit bandwidth c_cred is replaced with the false free bandwidth net_deficit. The false free bandwidth net_deficit is set to zero (S90). After that, the channel credit bandwidth c_cred is substituted for the channel use bandwidth c_used to set the channel credit bandwidth c_cred to zero (S92). Thereby, in the case of the channel credit bandwidth c_credit exceeding the fake free bandwidth net_defit, the channel credit bandwidth c_credit is once reduced to the value of the fake free bandwidth net_deficit and then substituted into the channel use bandwidth c_used.

チャネルクレジット帯域幅c_creditが正でない場合(S84のN)、チャネル使用帯域幅c_usedにチャネルクレジット帯域幅c_creditを代入し、チャネルクレジット帯域幅c_creditをゼロにする(S92)。したがって、チャネルクレジット帯域幅c_creditが負である場合、チャネル使用帯域幅c_usedが負になり、その分だけ、チャネル未使用帯域幅c_unsedが増えるから、余分に帯域幅を使用することができることになる。   If the channel credit bandwidth c_cred is not positive (N in S84), the channel credit bandwidth c_cred is substituted for the channel usage bandwidth c_used, and the channel credit bandwidth c_cred is set to zero (S92). Therefore, when the channel credit bandwidth c_cred is negative, the channel use bandwidth c_used is negative, and the channel unused bandwidth c_unsed is increased by that amount, so that it is possible to use extra bandwidth.

偽空き帯域幅net_deficitがゼロになると(S82のN)、それ以上のエラー補償処理は不要であるから、選択されたチャネルについて、チャネルクレジット帯域幅c_creditとチャネル使用帯域幅c_usedをゼロにする(S94)。   When the false free bandwidth net_deficit becomes zero (N in S82), no further error compensation processing is required, so that the channel credit bandwidth c_credit and the channel use bandwidth c_used are set to zero for the selected channel (S94). ).

図9は、図8のエラー補償処理の手順を具体的な例を用いて説明する図である。同図は、1つ前のタイムフレームにおける各チャネルのチャネルクレジット帯域幅c_creditにもとづいて現タイムフレームの各チャネルのチャネル使用帯域幅c_usedが決定される様子を示す。   FIG. 9 is a diagram illustrating the procedure of the error compensation process of FIG. 8 using a specific example. The figure shows how the channel usage bandwidth c_used of each channel of the current time frame is determined based on the channel credit bandwidth c_cred of each channel in the previous time frame.

1つ前のタイムフレームにおける6つのチャネルC1〜C6のチャネルクレジット帯域幅c_creditは、それぞれ2、4、3、1、−4、−1である。1つ前のタイムフレームにおける仮空き帯域幅net_creditは、チャネルC1〜C4の正のチャネルクレジット帯域幅2、4、3、1の和であり、その値は10である。一方、1つ前のタイムフレームにおける偽空き帯域幅net_deficitは、チャネルC5、C6の負のチャネルクレジット帯域幅−4、−1の絶対値の和であり、その値は5である。したがって、現タイムフレームにおいて補償しなければならない帯域幅は5である。   The channel credit bandwidths c_credit of the six channels C1 to C6 in the previous time frame are 2, 4, 3, 1, -4, and -1, respectively. The temporary free bandwidth net_credit in the previous time frame is the sum of the positive channel credit bandwidths 2, 4, 3, 1 of the channels C1 to C4, and its value is 10. On the other hand, the pseudo free bandwidth net_deficit in the previous time frame is the sum of the absolute values of the negative channel credit bandwidths −4 and −1 of the channels C5 and C6, and the value thereof is 5. Therefore, the bandwidth that must be compensated in the current time frame is 5.

チャネルC1〜C6はこの順で優先度が低くなるとする。最低優先度のチャネルC6を選択し(S80)、偽空き帯域幅net_deficitが5であり(S82のY)、チャネルC6のチャネルクレジット帯域幅c_creditが−1である(S84のN)から、チャネルC6のチャネル使用帯域幅c_usedは、チャネルクレジット帯域幅c_creditの値が代入されることにより、−1になる(S92)。   Assume that the channels C1 to C6 have lower priority in this order. Since the lowest priority channel C6 is selected (S80), the false free bandwidth net_deficit is 5 (Y in S82), and the channel credit bandwidth c_credit of the channel C6 is -1 (N in S84), so that the channel C6 The channel usage bandwidth c_used becomes −1 by substituting the value of the channel credit bandwidth c_credit (S92).

次に優先度が低いチャネルC5を選択し(S96)、偽空き帯域幅net_deficitが5であり(S82のY)、チャネルC5のチャネルクレジット帯域幅c_creditが−4である(S84のN)から、チャネルC5のチャネル使用帯域幅c_usedは、チャネルクレジット帯域幅c_creditの値が代入されることにより、−4になる(S92)。   Next, the channel C5 with the lowest priority is selected (S96), the false free bandwidth net_deficit is 5 (Y in S82), and the channel credit bandwidth c_credit of the channel C5 is −4 (N in S84). The channel use bandwidth c_used of the channel C5 becomes −4 when the value of the channel credit bandwidth c_credit is substituted (S92).

さらに次に優先度が低いチャネルC4を選択し(S96)、偽空き帯域幅net_deficitが5であり(S82のY)、チャネルC4のチャネルクレジット帯域幅c_creditが1であり(S84のY)、チャネルクレジット帯域幅c_creditの値1は偽空き帯域幅net_deficitの値5よりも小さい(S86のY)から、偽空き帯域幅net_deficitは、チャネルクレジット帯域幅c_creditの値1だけ減算されることにより、4になる(S88)。そして、チャネルC4のチャネル使用帯域幅c_usedは、チャネルクレジット帯域幅c_creditの値が代入されることにより、1になる(S92)。   Further, the channel C4 having the next lowest priority is selected (S96), the false free bandwidth net_deficit is 5 (Y in S82), the channel credit bandwidth c_credit of the channel C4 is 1 (Y in S84), and the channel Since the value 1 of the credit bandwidth c_credit is smaller than the value 5 of the false free bandwidth net_defict (Y of S86), the false free bandwidth net_defit is subtracted by the value 1 of the channel credit bandwidth c_credit to 4 (S88). Then, the channel use bandwidth c_used of the channel C4 becomes 1 when the value of the channel credit bandwidth c_credit is substituted (S92).

さらに次に優先度が低いチャネルC3を選択し(S96)、偽空き帯域幅net_deficitが4であり(S82のY)、チャネルC3のチャネルクレジット帯域幅c_creditが3であり(S84のY)、チャネルクレジット帯域幅c_creditの値3は偽空き帯域幅net_deficitの値4よりも小さい(S86のY)から、偽空き帯域幅net_deficitは、チャネルクレジット帯域幅c_creditの値3だけ減算されることにより、1になる(S88)。そして、チャネルC3のチャネル使用帯域幅c_usedは、チャネルクレジット帯域幅c_creditの値が代入されることにより、3になる(S92)。   Further, the channel C3 having the next lowest priority is selected (S96), the false free bandwidth net_deficit is 4 (Y in S82), the channel credit bandwidth c_credit of the channel C3 is 3 (Y in S84), and the channel Since the value 3 of the credit bandwidth c_credit is smaller than the value 4 of the false free bandwidth net_defict (Y of S86), the false free bandwidth net_defit is subtracted by 1 by the value 3 of the channel credit bandwidth c_credit. (S88). Then, the channel use bandwidth c_used of the channel C3 becomes 3 when the value of the channel credit bandwidth c_credit is substituted (S92).

さらに次に優先度が低いチャネルC2を選択し(S96)、偽空き帯域幅net_deficitが1であり(S82のY)、チャネルC2のチャネルクレジット帯域幅c_creditが4であり(S84のY)、チャネルクレジット帯域幅c_creditの値4は偽空き帯域幅net_deficitの値1よりも小さくはない(S86のN)から、チャネルクレジット帯域幅c_creditを偽空き帯域幅net_deficitの値1に置き換え、偽空き帯域幅net_deficitをゼロにする(S90)。その上で、チャネルC2のチャネル使用帯域幅c_usedは、置換されたチャネルクレジット帯域幅c_creditの値1が代入されることにより、1になる(S92)。   Further, the channel C2 having the next lowest priority is selected (S96), the false free bandwidth net_deficit is 1 (Y in S82), the channel credit bandwidth c_credit of the channel C2 is 4 (Y in S84), and the channel Since the value 4 of the credit bandwidth c_credit is not smaller than the value 1 of the fake free bandwidth net_defict (N in S86), the channel credit bandwidth c_credit is replaced with the value 1 of the fake free bandwidth net_deficit, and the fake free bandwidth net_deficit Is set to zero (S90). After that, the channel use bandwidth c_used of the channel C2 becomes 1 by substituting the value 1 of the replaced channel credit bandwidth c_cred (S92).

さらに次に優先度が低いチャネルC1を選択し(S96)、偽空き帯域幅net_deficitが0になったから(S82のN)、これ以上のエラー補償は不要であり、チャネルC1のチャネル使用帯域幅c_usedはゼロに設定される(S94)。   Further, the channel C1 having the next lowest priority is selected (S96), and the false free bandwidth net_deficit becomes 0 (N in S82), so no further error compensation is necessary, and the channel use bandwidth c_used of the channel C1 Is set to zero (S94).

このようにして、チャネルクレジット帯域幅c_creditが負であるチャネルのチャネル使用帯域幅c_usedはチャネルクレジット帯域幅c_creditと等しい負の値にしておき、余分に帯域幅を使用できるようにし、チャネルクレジット帯域幅c_creditが正であるチャネルについては、優先度の低い方のチャネルから順に、チャネルクレジット帯域幅c_creditの分だけ帯域幅を使用したことにしていくことで、偽空き帯域幅net_deficitを補償することができる。   In this way, the channel usage bandwidth c_used of a channel having a negative channel credit bandwidth c_credit is set to a negative value equal to the channel credit bandwidth c_credit so that an extra bandwidth can be used. For channels with positive c_credit, it is possible to compensate for the fake free bandwidth net_deficit by using the bandwidth corresponding to the channel credit bandwidth c_credit in order from the channel with the lower priority. .

以下、上記の説明では述べなかった点を補足して説明する。   Hereinafter, the points not described in the above description will be supplementarily described.

[4]大きなサイズのデータに対するリクエストの繰り返し処理
ストレージデバイス150に格納された画像や音声などの大きなサイズのデータにアクセスする場合、リクエストするブロックのサイズは大きくなり、1つのタイムフレームには収まらないことがある。また、ブロックサイズが1つのタイムフレームに収まる場合でも、タイムフレームの大部分を大きなブロックサイズのリクエストが占有してしまうと、他のリクエストをタイムフレーム内に割り当てることができなくなり、他のリクエストのレスポンスが極端に悪化する。
[4] Repeat processing of requests for large size data When accessing large size data such as images and sounds stored in the storage device 150, the size of the requested block is large and does not fit in one time frame. Sometimes. Even if the block size fits in one time frame, if a request with a large block size occupies most of the time frame, other requests cannot be allocated within the time frame, and other requests Response is extremely worse.

そこで、マルチプレクサ30は、大きなブロックサイズのリクエストを小さなブロックサイズのリクエストに分割し、分割された小さなブロックサイズのリクエストを繰り返し発行することにより、大きなブロックサイズのリクエストを処理する。これにより、大きなブロックサイズのリクエストにより、他のリクエストのレスポンスタイムが悪くなるのを防ぐことができる。   Therefore, the multiplexer 30 processes a request with a large block size by dividing a request with a large block size into requests with a small block size and repeatedly issuing the divided small block size requests. Thereby, it is possible to prevent the response time of other requests from being deteriorated by a request having a large block size.

[5]ディスクスケジューリング
ディスクスケジューラ20によるディスクスケジューリングの動作について詳しく説明する。ディスクスケジューラ20は、スループットもしくはレスポンスタイムの性能を最大化するために、ディスクに対するアクセスパターンを考慮してディスクスケジューリングを行う。ディスクスケジューラ20は、ディスクスケジューリングアルゴリズムを適宜選択し、あるいは組み合わせて用いる。たとえば、レスポンスタイムを良くするためには、シーク時間の短い順にスケジューリングするSSTFアルゴリズムを用いることができる。また、サービスタイムを良くするためには、エレベータアルゴリズムやSCANアルゴリズムを用いることができる。
[5] Disk scheduling The disk scheduling operation by the disk scheduler 20 will be described in detail. The disk scheduler 20 performs disk scheduling in consideration of the access pattern for the disk in order to maximize the throughput or response time performance. The disk scheduler 20 appropriately selects or uses a disk scheduling algorithm. For example, in order to improve the response time, an SSTF algorithm that performs scheduling in ascending order of seek time can be used. In order to improve the service time, an elevator algorithm or a SCAN algorithm can be used.

ディスクスケジューラ20は、フレーム内のリクエストをスケジューリングする際、各リクエストのアプリケーションタイプを参考にして、どのようなディスクスケジューリング方式をどのような比率で組み合わせて用いればよいかを判断する。ディスクスケジューラ20は、アプリケーションタイプをディスクスケジューリングのヒントとして用いる。   When scheduling a request in a frame, the disk scheduler 20 refers to the application type of each request and determines what disk scheduling method should be combined in what ratio. The disk scheduler 20 uses the application type as a disk scheduling hint.

アプリケーションタイプには、マルチメディア、リアルタイム、インタラクティブ、ファイル転送などがある。ディスクスケジューラ20は、フレーム内にどのようなタイプのリクエストがどれくらいの割合で多重化されているかを判断する。インタラクティブなアプリケーションはレスポンスタイムに敏感であり、マルチメディアアプリケーションはサービスタイムに敏感である。レスポンスタイムに敏感なアプリケーションとサービスタイムに敏感なアプリケーションの比率がα対(1−α)である場合、レスポンスタイムのタイプに適したSSTFアルゴリズムと、サービスタイムに適したエレベータアルゴリズムもしくはSCANアルゴリズムとをα対(1−α)の比で組み合わせて用いる。   Application types include multimedia, real-time, interactive, and file transfer. The disk scheduler 20 determines what type of request is multiplexed in the frame and at what rate. Interactive applications are sensitive to response time, and multimedia applications are sensitive to service time. When the ratio of the application sensitive to response time to the application sensitive to service time is α vs. (1-α), the SSTF algorithm suitable for the response time type and the elevator algorithm or SCAN algorithm suitable for the service time Used in combination at a ratio of α to (1-α).

ディスクスケジューラ20は、さらに、リクエストサイズを一つの要因として評価し、より小さなリクエストサイズのリクエストについては早くサービスするように制御してもよい。そのために、SSEDV(Shortest Seek and Earliest Deadline by Value)アルゴリズムを改良して用いることができる。   Further, the disk scheduler 20 may evaluate the request size as one factor, and control so that a request with a smaller request size is serviced earlier. For this purpose, the STEDV (Shortest Seek and Earliest Deadline by Value) algorithm can be improved and used.

以上述べたように、本実施の形態のリクエストスケジューラ40によれば、ディスクスケジューラ20の前段にマルチプレクサ30を設け、各コネクションの予約帯域幅を保証しながら、複数のコネクションからのリクエストを多重化することができる。   As described above, according to the request scheduler 40 of the present embodiment, the multiplexer 30 is provided in the preceding stage of the disk scheduler 20, and requests from a plurality of connections are multiplexed while guaranteeing the reserved bandwidth of each connection. be able to.

マルチプレクサ30は、チャネルポートと出力ポート42の2つのポートをもち、各チャネルポートに到着したリクエストの総量がそのチャネルの予約帯域幅の制限を超えない限りは、チャネルポートを開けて、チャネルキューをバイパスして直接、出力ポート42にリクエストが送られるようにしたことで、チャネルキューへのキューイングによるオーバーヘッドをなくし、チャネルがボトルネックとなることを防ぐことができる。   The multiplexer 30 has two ports, a channel port and an output port 42. As long as the total amount of requests arriving at each channel port does not exceed the reserved bandwidth limit of that channel, the channel port is opened and the channel queue is opened. By bypassing the request directly to the output port 42, the overhead due to queuing to the channel queue can be eliminated, and the channel can be prevented from becoming a bottleneck.

また、各チャネルポートに到着したリクエストの総量がそのチャネルの予約帯域幅の制限を超えた場合は、チャネルポートを閉じて、次のタイムフレームが始まるまでチャネルキューにリクエストをキューイングすることで、各チャネルが使用する帯域幅を制限することができる。   Also, if the total amount of requests arriving at each channel port exceeds the reserved bandwidth limit for that channel, close the channel port and queue the request in the channel queue until the next time frame begins, The bandwidth used by each channel can be limited.

さらに、ディスクスケジューラ20のキューにリクエストが存在しないときは、いずれかのチャネルキューにキューイングされたリクエストを取り出してディスクスケジューラ20に渡すための空き帯域幅ポート44が予備ポートとして、出力ポート42とは別に設けられているため、空き帯域幅を有効に活用することができる。そして、リクエストが遅れて到着して、空き帯域幅であると仮定したことが誤りであることがわかった場合は、剥奪された帯域幅を次のタイムフレームで補償することで、チャネル間の帯域幅の割り当ての公平性を保証することができる。   Further, when there is no request in the queue of the disk scheduler 20, the free bandwidth port 44 for taking out the request queued in any channel queue and passing it to the disk scheduler 20 is used as a spare port, and the output port 42 Since it is provided separately, free bandwidth can be used effectively. And if the request arrives late and it turns out that it is an error to assume that it is free bandwidth, the bandwidth between channels is compensated by compensating the stripped bandwidth with the next time frame. The fairness of width allocation can be guaranteed.

また、本実施の形態によれば、マルチプレクサ30が、各コネクションが予約するディスク転送の帯域幅に応じて、コネクションからのリクエストを多重化し、ディスクスケジューラ20が、ディスクアクセスのリクエストをディスクに対するアクセスパターンにもとづいてスケジューリングする。これにより、様々なサービス品質の要求のあるアプリケーションからディスクアクセスリクエストがあった場合、マルチプレクサ30によるリクエストの多重化により個々のアプリケーションのサービス品質要求を保証することができ、同時に、ディスクスケジューラ20によるディスクアクセスパターンにもとづくディスクスケジューリングによりディスク性能を最大化することができる。   Further, according to the present embodiment, the multiplexer 30 multiplexes requests from the connections according to the bandwidth of the disk transfer reserved by each connection, and the disk scheduler 20 sends the disk access request to the disk access pattern. Schedule based on Thereby, when there is a disk access request from an application having various service quality requirements, the service quality requirement of each application can be guaranteed by multiplexing the requests by the multiplexer 30, and at the same time the disk scheduler 20 Disk performance can be maximized by disk scheduling based on access patterns.

ストレージデバイスは、一般的に非決定的(あるいは非確定的)(non-deterministic)な動作をし、ディスクに対するアクセスリクエストがいつ実行されるかを予測することができないが、本実施の形態のリクエストスケジューラ40によれば、マルチプレクサ30が各コネクションのリクエストを一定の時間で処理されるタイムフレーム内に多重化し、ディスクスケジューラ20がタイムフレーム内のリクエストの実行順序を変えることでディスクのスケジューリングを行うため、リクエストが実行される時間は決定的(あるいは確定的)(deterministic)なものとなり、サービス品質の保証が可能になる。   Although the storage device generally operates in a non-deterministic manner (and is not deterministic), it cannot predict when an access request to a disk will be executed. 40, the multiplexer 30 multiplexes the requests of each connection in a time frame processed in a fixed time, and the disk scheduler 20 performs disk scheduling by changing the execution order of requests in the time frame. The time at which the request is executed becomes deterministic, and the quality of service can be guaranteed.

以上、本発明を実施の形態をもとに説明した。実施の形態は例示であり、それらの各構成要素や各処理プロセスの組合せにいろいろな変形例が可能なこと、またそうした変形例も本発明の範囲にあることは当業者に理解されるところである。   The present invention has been described based on the embodiments. The embodiments are exemplifications, and it will be understood by those skilled in the art that various modifications can be made to combinations of the respective constituent elements and processing processes, and such modifications are within the scope of the present invention. .

マルチプレクサ30のチャネルは、いろいろな用途で用いることができる。コネクション毎にチャネルを別々に設けてもよく、1つのチャネルを複数のコネクションで共有してもよい。たとえば、リアルタイム、マルチメディア、インタラクティブなどのアプリケーションタイプ毎にチャネルを用意し、同じアプリケーションタイプの複数のコネクションが、対応するアプリケーションタイプのチャネルを共有するようにしてもよい。インタラクティブアプリケーションの複数のコネクションがあれば、それらのコネクションのリクエストは、すべてインタラクティブタイプ用のチャネルにキューイングされる。   The channel of the multiplexer 30 can be used for various purposes. A channel may be provided separately for each connection, and one channel may be shared by a plurality of connections. For example, a channel may be prepared for each application type such as real time, multimedia, interactive, etc., and a plurality of connections of the same application type may share a corresponding application type channel. If there are multiple connections for an interactive application, all requests for those connections are queued to the interactive type channel.

マルチプロセッサシステムにおいてリクエストスケジューラ40が利用される場合、各プロセッサがストレージデバイス150に対してコネクションを構築することができる。その場合、マルチプレクサ30のチャネルは、プロセッサ毎に設けられてもよく、プロセッサが構築するコネクション毎に設けられてもよい。   When the request scheduler 40 is used in a multiprocessor system, each processor can establish a connection with the storage device 150. In that case, the channel of the multiplexer 30 may be provided for each processor, or may be provided for each connection established by the processor.

実施の形態では、ディスクスケジューリングを例に説明したが、本発明は、ディスク以外のデバイスに対するアクセススケジューリングにも適用することができる。また、本実施の形態のマルチプレクサ30をディスクスケジューラ20から切り離し、ディスクなどのデバイスに対するアクセススケジューリング以外に、複数のコネクションからのリクエストの多重化処理が必要な分野にも適用することができる。たとえば、ネットワークを経由したサーバなどへのアクセスリクエストをFIFOバッファに蓄積して多重化処理する場合にも適用することができる。   In the embodiment, the disk scheduling has been described as an example, but the present invention can also be applied to access scheduling for devices other than disks. Further, the multiplexer 30 according to the present embodiment is separated from the disk scheduler 20 and can be applied to fields that require multiplexing processing of requests from a plurality of connections in addition to access scheduling for devices such as disks. For example, the present invention can also be applied to a case where an access request to a server or the like via a network is stored in a FIFO buffer and multiplexed.

実施の形態に係るストレージサブシステムの構成を説明する図である。It is a figure explaining the structure of the storage subsystem which concerns on embodiment. 図1のリクエストスケジューラの構成図である。It is a block diagram of the request scheduler of FIG. 図3(a)、(b)は、図2のメインチャネルおよび予約チャネルの内部構成とリクエストの入出力制御を詳しく説明する図である。FIGS. 3A and 3B are diagrams for explaining in detail the internal configuration of the main channel and the reservation channel and request input / output control of FIG. 図2のリクエストスケジューラによるリクエスト多重化処理の全体的な流れを示すフローチャートである。It is a flowchart which shows the whole flow of the request | requirement multiplexing process by the request scheduler of FIG. 図4のイベントA「リクエスト到着」が発生したときの処理を示すフローチャートである。FIG. 5 is a flowchart showing processing when event A “request arrival” in FIG. 4 occurs. FIG. 図5Aの浪費帯域幅の更新とチャネルポートの状態の更新の処理を詳しく示すフローチャートである。FIG. 5B is a flowchart showing in detail a process of updating a waste bandwidth and updating a state of a channel port in FIG. 5A. 図4のイベントB「ディスクスケジューラキューが空」が発生したときの処理を示すフローチャートである。FIG. 5 is a flowchart showing processing when event B “disk scheduler queue is empty” in FIG. 4 occurs. FIG. 図4のイベントC「新しいタイムフレームの開始」が発生したときの処理を示すフローチャートである。FIG. 5 is a flowchart showing processing when an event C “start of a new time frame” in FIG. 4 occurs. FIG. 図7のエラー補償処理の詳細な手順を示すフローチャートである。It is a flowchart which shows the detailed procedure of the error compensation process of FIG. 図8のエラー補償処理の手順を具体的な例を用いて説明する図である。It is a figure explaining the procedure of the error compensation process of FIG. 8 using a specific example.

符号の説明Explanation of symbols

10 デバイスドライバ、 20 ディスクスケジューラ、 22 ディスクスケジューラキュー、 30 ストレージマルチプレクサ、 31 メインチャネル、 32 予約チャネル、 33、34 チャネルポート、 35、36 チャネルキュー、 38 タイマ、 40 リクエストスケジューラ、 42 出力ポート、 44 空き帯域幅ポート、 50 SCSIクラスドライバ、 60 ストレージサービスプロバイダ、 62 コネクション、 100 ストレージサブシステム、 120 ストレージインタフェース、 130 ファイルシステム、 140 オペレーティングシステム、 150 ストレージデバイス。   10 device drivers, 20 disk scheduler, 22 disk scheduler queue, 30 storage multiplexer, 31 main channel, 32 reserved channel, 33, 34 channel port, 35, 36 channel queue, 38 timer, 40 request scheduler, 42 output port, 44 free Bandwidth port, 50 SCSI class driver, 60 storage service provider, 62 connections, 100 storage subsystem, 120 storage interface, 130 file system, 140 operating system, 150 storage device.

Claims (8)

サービスの要求元毎に設けられ、各要求元からリクエストを処理するための帯域幅の予約を受け付け、各要求元からリクエストが入力される複数のチャネルと、
複数の前記チャネルから渡されるリクエストを出力する出力ポートとを含み、
複数の要求元からのリクエストを多重化するための時間単位であるタイムフレームが設けられ、あるタイムフレームにおいて、他のチャネルから出力されるリクエストによって、予約帯域幅の少なくとも一部が横取りされたチャネルは、次のタイムフレームにおいて、横取りされた予約帯域幅の補償を受けることを特徴とするマルチプレクサ。
Provided for each service requester, accepting bandwidth reservations for processing requests from each requester, multiple channels through which requests are input from each requester,
An output port for outputting requests passed from a plurality of the channels,
A channel in which a time frame that is a time unit for multiplexing requests from multiple request sources is provided, and at least a part of the reserved bandwidth is intercepted by a request output from another channel in a certain time frame Is subjected to compensation for the pre-empted reserved bandwidth in the next time frame.
タイムフレームの任意の時点において、前記出力ポートの出力先のキューにリクエストが存在しない場合、当該タイムフレーム内で空き帯域幅が生じたと仮定して、あるチャネルにその空き帯域幅を割り当てることを特徴とする請求項1に記載のマルチプレクサ。   When there is no request in the output destination queue of the output port at an arbitrary time point of the time frame, the free bandwidth is allocated to a certain channel on the assumption that the free bandwidth has occurred in the time frame. The multiplexer according to claim 1. 前記チャネルで待ち状態にあるリクエスト数に応じて動的に変更される優先度が前記チャネル毎に設けられた場合に、前記優先度の高い順に前記チャネルが選択され、そのチャネルに前記空き帯域幅が割り当てられることを特徴とする請求項2に記載のマルチプレクサ。   When a priority that is dynamically changed according to the number of requests waiting in the channel is provided for each channel, the channels are selected in descending order of the priority, and the free bandwidth is assigned to the channel. The multiplexer according to claim 2, wherein: is assigned. 空き帯域幅が生じたと仮定されたタイムフレームにおいて、帯域幅を予約したチャネルからリクエストが遅れて到着したことにより、そのリクエストに帯域幅を割り当てることができなくなった場合、割り当てることができなくなった帯域幅を横取りされた予約帯域幅として計数することを特徴とする請求項2または3に記載のマルチプレクサ。   Bandwidth that could not be allocated if it was not possible to allocate bandwidth to the request due to a delayed arrival of the request from the channel that reserved the bandwidth in the time frame where it was assumed that free bandwidth occurred. 4. A multiplexer according to claim 2 or 3, wherein the width is counted as a reserved bandwidth intercepted. 他のチャネルの予約帯域幅を横取りしたチャネルについては、1つ前のタイムフレームにおいて超過して使用した帯域幅を現タイムフレームにおいてすでに使用したものとみなして予約帯域幅の割り当てを実施することにより、横取りされた予約帯域幅を補償することを特徴とする請求項1から4のいずれかに記載のマルチプレクサ。   For channels that pre-empted the reserved bandwidth of other channels, the bandwidth used in excess of the previous time frame is regarded as already used in the current time frame, and the reserved bandwidth is allocated. A multiplexer according to any one of claims 1 to 4, characterized in that it compensates for a pre-empted reserved bandwidth. サービスの1つ以上の要求元から入力されるリクエストを出力するマルチプレクサと、
前記マルチプレクサから出力されたリクエストをスケジューリングして実行するスケジューラとを含み、
前記マルチプレクサは、
前記要求元毎に設けられ、各要求元からリクエストを処理するための帯域幅の予約を受け付け、各要求元からリクエストが入力される複数のチャネルと、
複数の前記チャネルから渡されるリクエストを出力する出力ポートとを含み、
複数の要求元からのリクエストを多重化するための時間単位であるタイムフレームが設けられ、あるタイムフレームにおいて、他のチャネルから出力されるリクエストによって、予約帯域幅の少なくとも一部が横取りされたチャネルは、次のタイムフレームにおいて、横取りされた予約帯域幅の補償を受けることを特徴とする情報処理装置。
A multiplexer that outputs requests input from one or more requesters of the service;
A scheduler for scheduling and executing the request output from the multiplexer,
The multiplexer is
A plurality of channels that are provided for each request source, accept bandwidth reservations for processing requests from each request source, and receive requests from each request source;
An output port for outputting requests passed from a plurality of the channels,
A channel in which a time frame that is a time unit for multiplexing requests from multiple request sources is provided, and at least a part of the reserved bandwidth is intercepted by a request output from another channel in a certain time frame Is an information processing apparatus that receives compensation of a reserved bandwidth obtained in the next time frame.
前記スケジューラは、前記出力ポートから出力されたリクエストをキューイングするスケジューラキューを含み、
前記マルチプレクサは、タイムフレームの任意の時点において、前記スケジューラキューにリクエストが存在しない場合、当該タイムフレーム内で空き帯域幅が生じたと仮定して、あるチャネルに待ち状態のリクエストがあれば、そのリクエストを取り出して前記スケジューラに渡すことにより、そのチャネルにその空き帯域幅を割り当てることを特徴とする請求項6に記載の情報処理装置。
The scheduler includes a scheduler queue for queuing requests output from the output port;
If there is no request in the scheduler queue at any time point in the time frame, the multiplexer assumes that free bandwidth has occurred in the time frame, and if there is a waiting request on a channel, the request The information processing apparatus according to claim 6, wherein the free bandwidth is allocated to the channel by taking out the data and passing it to the scheduler.
サービスの要求元毎にリクエストを処理するための帯域幅の予約を受け付けるチャネルを提供し、各要求元からのリクエストを複数のチャネルにて受け付けるチャネル機能と、
複数の前記チャネルから渡されるリクエストを出力する出力ポートを提供する出力ポート機能と、
複数の要求元からのリクエストを多重化するための時間単位であるタイムフレームが設けられ、あるタイムフレームにおいて、他のチャネルから出力されるリクエストによって、予約帯域幅の少なくとも一部が横取りされたチャネルに対して、次のタイムフレームにおいて、横取りされた予約帯域幅を補償するエラー補償機能とをコンピュータに実現させることを特徴とするプログラム。
A channel function that accepts a bandwidth reservation for processing a request for each service request source, and receives a request from each request source through a plurality of channels;
An output port function for providing an output port for outputting requests passed from a plurality of the channels;
A channel in which a time frame that is a time unit for multiplexing requests from multiple request sources is provided, and at least a part of the reserved bandwidth is intercepted by a request output from another channel in a certain time frame On the other hand, a program for causing a computer to realize an error compensation function for compensating for a reserved bandwidth obtained in the next time frame.
JP2006278185A 2006-10-11 2006-10-11 Multiplexer and information processing apparatus Expired - Fee Related JP4979332B2 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2006278185A JP4979332B2 (en) 2006-10-11 2006-10-11 Multiplexer and information processing apparatus

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2006278185A JP4979332B2 (en) 2006-10-11 2006-10-11 Multiplexer and information processing apparatus

Publications (2)

Publication Number Publication Date
JP2008097312A true JP2008097312A (en) 2008-04-24
JP4979332B2 JP4979332B2 (en) 2012-07-18

Family

ID=39380094

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2006278185A Expired - Fee Related JP4979332B2 (en) 2006-10-11 2006-10-11 Multiplexer and information processing apparatus

Country Status (1)

Country Link
JP (1) JP4979332B2 (en)

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH09330552A (en) * 1996-04-12 1997-12-22 Sony Corp Data recording/reproducing apparatus
JP2000066845A (en) * 1998-08-26 2000-03-03 Sony Corp Disk array device
JP2001147886A (en) * 1999-11-19 2001-05-29 Fujitsu Ltd Device and method for sharing disk time
JP2005538441A (en) * 2002-09-06 2005-12-15 コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ Method and system for reading data from and writing data to a storage device

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH09330552A (en) * 1996-04-12 1997-12-22 Sony Corp Data recording/reproducing apparatus
JP2000066845A (en) * 1998-08-26 2000-03-03 Sony Corp Disk array device
JP2001147886A (en) * 1999-11-19 2001-05-29 Fujitsu Ltd Device and method for sharing disk time
JP2005538441A (en) * 2002-09-06 2005-12-15 コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ Method and system for reading data from and writing data to a storage device

Also Published As

Publication number Publication date
JP4979332B2 (en) 2012-07-18

Similar Documents

Publication Publication Date Title
US7206866B2 (en) Continuous media priority aware storage scheduler
Rajkumar et al. Resource kernels: A resource-centric approach to real-time and multimedia systems
US6779181B1 (en) Micro-scheduling method and operating system kernel
US6804738B2 (en) Method and apparatus for scheduling a resource to meet quality-of-service restrictions
US5938734A (en) Real time stream server for handling a plurality of real time stream data with different data rates
US8392633B2 (en) Scheduling requesters of a shared storage resource
US7590775B2 (en) Method for empirically determining a qualified bandwidth of file storage for a shared filed system
US7739421B1 (en) Buffer management method and system with data displayed directly from buffers
US20130074091A1 (en) Techniques for ensuring resources achieve performance metrics in a multi-tenant storage controller
WO2018175559A1 (en) Drive-level internal quality of service
EP3251021B1 (en) Memory network to prioritize processing of a memory access request
US10545701B1 (en) Memory arbitration techniques based on latency tolerance
US11586392B2 (en) Multi-stream SSD QoS management
US8019915B2 (en) Method and device for controlling access to multiple applications
US7587549B1 (en) Buffer management method and system with access grant based on queue score
CN112463044A (en) Method and system for ensuring tail reading delay of server side of distributed storage system
Wijayaratne et al. Providing QOS guarantees for disk I/O
Bosch et al. Real-time disk scheduling in a mixed-media file system
JP4979332B2 (en) Multiplexer and information processing apparatus
JP4878979B2 (en) Multiplexer and information processing apparatus
Bigelow et al. End-to-end performance management for scalable distributed storage
Znati et al. A network-based scheme for synchronization of multimedia streams
Wu et al. Automated QoS support for multimedia disk access
Ranjan et al. Operating System Concerns for Multimedia
Brandt et al. End-to-end performance management for scalable distributed storage

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20090925

A711 Notification of change in applicant

Free format text: JAPANESE INTERMEDIATE CODE: A712

Effective date: 20101125

RD03 Notification of appointment of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7423

Effective date: 20110127

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20110921

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20110927

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20111118

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20120417

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20120417

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20150427

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees