JP2008198127A - プロセッサシステム - Google Patents

プロセッサシステム Download PDF

Info

Publication number
JP2008198127A
JP2008198127A JP2007035353A JP2007035353A JP2008198127A JP 2008198127 A JP2008198127 A JP 2008198127A JP 2007035353 A JP2007035353 A JP 2007035353A JP 2007035353 A JP2007035353 A JP 2007035353A JP 2008198127 A JP2008198127 A JP 2008198127A
Authority
JP
Japan
Prior art keywords
request
load
stage
instruction fetch
cache memory
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.)
Pending
Application number
JP2007035353A
Other languages
English (en)
Inventor
Soichiro Hosoda
宗一郎 細田
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.)
Toshiba Corp
Original Assignee
Toshiba Corp
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 Toshiba Corp filed Critical Toshiba Corp
Priority to JP2007035353A priority Critical patent/JP2008198127A/ja
Priority to US12/030,474 priority patent/US20080201558A1/en
Publication of JP2008198127A publication Critical patent/JP2008198127A/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0844Multiple simultaneous or quasi-simultaneous cache accessing
    • G06F12/0855Overlapped cache accessing, e.g. pipeline
    • G06F12/0857Overlapped cache accessing, e.g. pipeline by multiple requestors

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Advance Control (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

【課題】パイプラインにおける有効な命令の処理率を向上させるプロセッサシステムを提供すること。
【解決手段】本発明の一形態のプロセッサシステムは、パイプラインに、キャッシュメモリ(2)と、複数の命令を格納する命令フェッチバッファ(41)と、前記キャッシュメモリに対するデータアクセスを要求する実行モジュール(6)と、前記実行モジュールのデータアクセスに係る情報を出力するタグメモリ(32)と、前記命令フェッチバッファのエントリ情報と、前記タグメモリからのデータアクセスに係る情報とに基づき、前記キャッシュメモリに対するアクセスを調停する調停回路(1)と、を備える。
【選択図】 図3

Description

本発明は、プロセッサのパイプライン動作において、命令コード及び処理データを統合キャッシュメモリに格納し、アクセス競合時に調停(アービトレーション)を行うプロセッサシステムに関する。
従来、統合キャッシュメモリへの命令フェッチ、データロード、データストア要求の衝突は、パイプラインの命令供給やキャッシュメモリのヒット/ミスを考慮しない調停ポリシーにより制御されてきた。これにより、命令フェッチ側の命令供給が止まり、パイプラインに無効な命令が流れることで、プロセッサの性能低下を引き起こしていた。
なお特許文献1には、統合されたメモリ・アーキテクチャにおけるアービトレーション・ポリシーが開示されている。
特表2002−539509号公報
本発明の目的は、パイプラインにおける有効な命令の処理率を向上させるプロセッサシステムを提供することにある。
本発明の一形態のプロセッサシステムは、パイプラインに、キャッシュメモリと、複数の命令を格納する命令フェッチバッファと、前記キャッシュメモリに対するデータアクセスを要求する実行モジュールと、前記実行モジュールのデータアクセスに係る情報を出力するタグメモリと、前記命令フェッチバッファのエントリ情報と、前記タグメモリからのデータアクセスに係る情報とに基づき、前記キャッシュメモリに対するアクセスを調停する調停回路と、を備える。
本発明によれば、パイプラインにおける有効な命令の処理率を向上させるプロセッサシステムを提供できる。
以下、本発明の実施の形態を図面を参照して説明する。
本実施の形態では、5段パイプライン(F(Instruction Fetch)/D(Decode)/E(Execute)/M(Memory Access)/W(Write Back))動作を行うプロセッサにおける本発明の適用例を示す。
図1は、統合キャッシュメモリを有する従来のプロセッサシステムのパイプライン動作を示す図である。図1において、5段パイプライン(C/F,D,E,M,W)には調停回路(Arbiter)1を介して統合キャッシュメモリ(Unified Cache Memory)2が接続されている。
図1に示したパイプライン動作中、命令フェッチ(Instruction Fetch)ステージ(F−Stage)からのメモリアクセスである命令フェッチ要求(Inst Fetch Req)と実行(Execute)ステージ(E−Stage)からのメモリアクセスであるデータロード/ストア要求(Load/Store Req)とが競合し、調停回路1が実行ステージからのロード/ストア要求を採択したとする。この時、命令フェッチステージの命令フェッチバッファに有効な命令コードが格納されていないと、次サイクルからはデコード(Decode)ステージ(D−Stage)に無効な命令(バブル)が流れてしまう。
一方、調停回路1が命令フェッチ要求を採択し、実行ステージのロード/ストア要求を待機させた場合、有効な命令コードが命令フェッチステージの命令フェッチバッファに格納されたとしても、後段のロード/ストアが実行されない事に起因するパイプラインストールが発生し、パイプラインの処理は停滞してしまう。
図2は、本実施の形態による統合キャッシュメモリを有するプロセッサシステムのパイプライン動作を示す図である。本実施の形態では、図2のようなパイプラインの構成により、上述したロード/ストア要求を採択したことによる命令フェッチバッファにおける有効な命令コードの枯渇と、命令フェッチ要求を採択したことによるロード/ストア要求の待機に起因するストールの双方の問題を解決する。なお、本実施の形態では、ロード要求とストア要求の扱いは同等とする。
図2において、5段パイプライン(F,D,E,M,W)には調停回路1を介して統合キャッシュメモリ2が接続されている。調停回路1は、ロード/ストアバッファ(UCLB:UCLoadBuf/UCSB:UCStoreBuf)11を備えている。また、D(Decode)ステージから調停回路1へのパス上にはタグメモリ(Tag Memory)3が設けられている。
まず、本実施の形態における命令フェッチ、データロード/ストアの基本動作と統合キャッシュメモリの定義を説明する。本実施の形態における5段パイプラインでは、命令フェッチステージ(F−Stage)とデコードステージ(D−Stage)以降の後段ステージは独立的に動作する。
さらに、後述するように命令フェッチステージ内に複数の命令を格納可能な命令フェッチバッファを有することで、デコードステージ以降がパイプラインストールにより停止中であっても命令フェッチを先行して実行可能である。統合キャッシュメモリ2に対する命令フェッチは、命令フェッチステージの前段(ここではCステージと呼称)からリクエストが発行され、命令フェッチステージで命令コードが供給される。
一方、統合キャッシュメモリ2に対するデータロード/ストア要求は、実行ステージ(E−Stage)においてリクエストを発行し、キャッシュヒット時はメモリ(Memory)ステージ(M−Stage)においてロードデータの取得とメモリに対するデータストアの実行が達成される。
統合キャッシュメモリ2は、命令コード及びデータ格納部に対する命令フェッチ要求とロード/ストア要求を同時には受け付けられない。しかし後述するように、命令フェッチ系統とロード/ストア系統に対する(ヒット/ミスを判定する)タグメモリ領域を独立して保持しているため、アクセス対象のラインに対するヒット/ミスの判定を並列に行うことができる。なお、1つのステージから同時にロード要求とストア要求が発行されることはない。
図2に示した本実施の形態によるパイプライン構成における従来手法によるパイプライン構成との大きな違いとして、以下の項目が挙げられる。
(1)命令フェッチステージ(F−Stage)内の命令フェッチバッファの有効コード格納状況を調停回路1に伝達するパス。
(2)待機中のロード/ストア要求を保持するバッファ(UCLB/UCSB)11。すなわち、統合キャッシュメモリ2に対するロードリクエストバッファ(UCLB:Unified Cache memory Load request Buffer)+統合キャッシュメモリ2に対するストアリクエストバッファ(UCSB:Unified Cache memory Store request Buffer)。
(3)デコードステージ(D−Stage)からタグメモリ3にアクセスし、ヒット/ミス情報を調停回路1に伝達するパス。
項目(1)のパスは、命令フェッチバッファ内に有効エントリが存在せず、命令が枯渇している事を調停回路1に通知することで、無効な命令がパイプラインを流れないよう調停を実施するために存在する。
項目(2)のUCLB/UCSBは、実行ステージ(E−Stage)におけるロード/ストア要求が命令フェッチ要求と衝突した際に、パイプラインストールを発生させることなく、ロード/ストア要求を保持するために存在する。
項目(3)のパスは、従来手法においては統合キャッシュメモリ2へのアクセスと同時に行っていたタグメモリへのアクセスを1段早めることで、実行ステージに達したロード/ストア要求のヒット/ミス情報を調停回路1に通知している。
図3は、上記3つのアーキテクチャ的特徴を含んだ本実施の形態のパイプラインの実装例を示す図である。
図3には、統合キャッシュメモリ(Unified Cache Memory)2、タグメモリ(I−Tag)31、タグメモリ(D−Tag)32の3つの領域が存在する。なお、必ずしもタグメモリを命令コード(I−Tag)とデータコード(D−Tag)に分けて実装する必要はない。すなわち、命令コード(I−Tag)とデータコード(D−Tag)を異なるタグメモリで実装することも可能であるし、命令コード(I−Tag)とデータコード(D−Tag)を同一のタグメモリ上で領域を分けて実装することも可能である。
統合キャッシュメモリ2は、命令コード本体とロード/ストア対象となるデータ本体を格納している。タグメモリ31,32は、各キャッシュラインに対応したタグ部を格納している。タグメモリ31は命令コード格納領域に対応するタグ、タグメモリ32はロード/ストア対象のデータ格納領域に対応するタグを保持している。すなわち、タグメモリ3は2入力2出力構成をなす。
また、処理モジュールとして、命令フェッチモジュール(InstFetch Module)4、デコードモジュール(Decode Module)5、実行モジュール(Execute Module)6、調停及びUCアクセスモジュール(APUCA:Arbiter Plus Unified Cache Access Module)1が存在する。
命令フェッチモジュール4は、有効な命令コードを格納するための命令フェッチバッファ(InstBuf)41を複数保持し、デコードモジュール5以降のパイプライン後段のストール時も、統合キャッシュメモリ2から有効な命令コードをフェッチすることができる。デコードモジュール5は、命令フェッチモジュール4からの命令コードをデコードし、いずれ実行モジュール6内でリクエスト発行するロード/ストアを検知して、アドレス計算を行い、データ格納領域のタグ情報を管理するタグメモリ(D−Tag)32にアクセスする。
なお、データストア要求と命令フェッチ要求の衝突時に、ストア要求をヒット/ミス情報に依らず複数段のストアリクエストバッファ(UCSB)に格納することで命令フェッチ要求を優先し、後にストアリクエストバッファ(UCSB)内のストア要求を統合キャッシュメモリ2にアクセス可能な期間(他のアクセスがない期間)内で処理するアプローチも可能だが、ここではロード/ストア要求共に先行タグアクセスを行うアプローチについて説明する。
タグメモリ(D−Tag)32から読み出されたロード/ストア要求のヒット/ミス情報は、要求本体が実行モジュール6内の実行ステージ(E−stage)に達し、実行モジュール6がロード/ストア要求を発行するサイクルと同時に調停及びUCアクセスモジュール1に達する。
調停及びUCアクセスモジュール1内部のステートマシン12は、命令フェッチモジュール4からの命令フェッチ要求(InstFetch Req)及び命令フェッチバッファ41内の有効エントリ情報(InstBuf Info)と、実行モジュール6からのロード/ストア要求(Load/Store Req)と、タグメモリ(D−Tag)32からのヒット/ミス情報(Hit/Miss Info)とを基に状態遷移を行い、後述する調停ポリシーに従って統合キャッシュメモリ2に発行するリクエストを決定する。
調停及びUCアクセスモジュール1における調停で退けられたロード/ストア要求は、後に統合キャッシュメモリ2に発行されるため、一時ロード/ストアバッファ11に退避される(図中のStandbyパス)。その後、ステートマシン12によってロード/ストアバッファ11内のリクエストの発行許可が下りた際に、ロード/ストアバッファ11から統合キャッシュメモリ2に向けてリクエストを発する(図中のIssueパス)。
調停後に採択されたリクエストは、1入力1出力の統合キャッシュメモリ(同時に1つしかリクエストを受け付けないメモリ)2に伝達される。ここで、採択されたリクエストが命令フェッチ要求である場合は、事前にタグメモリ参照を行っていないため、同時にタグメモリ(I−Tag)31に対するアクセスを行う。統合キャッシュメモリ2から調停及びUCアクセスモジュール1に返された命令コード(Inst Code)は命令フェッチモジュール4へと、ロードデータ(Load Data)は実行モジュール6へと返される。
ここで、ロード要求がロード/ストアバッファ11のUCLBにより一度退避された要求である場合は、実行モジュール6内のメモリステージ(M−stage)ではなく、ライトバックステージ(W−stage)にロードデータ(Load Data)が伝達される。実装の方法によっては、クリティカルパス回避のために、ロードデータをライトバックステージに伝達するパスにレジスタ7を挿入することも考えられる(図中では点線でレジスタを表記)。
レジスタ7を挿入した場合、デコードステージ(D−stage)のレジスタセット(Register Set)51へのデータ書き込みが1サイクル遅れるため、その後のレジスタ値読み込みとの調整が必要である。
命令フェッチ要求との衝突によりロード要求が待たされ、ロードリクエストバッファ(UCLB)を用いて統合キャッシュメモリ2へのアクセスが行われた場合は、このライトバックステージ(W−stage)へのパスを通ってロードデータが届く。命令フェッチ要求との衝突がなく、UCLBを介さずに通常通りロード要求が実行された場合は、ロードデータはメモリステージ(M−stage)へのパスを通って届く。
続いて、命令フェッチ要求とロード/ストア要求の調停における基本方針を説明する。基本方針として、以下の項目が挙げられる。
(1)複数存在する命令フェッチバッファによってフェッチレイテンシの隠蔽が可能な際は、ロード/ストア要求を優先する。
(2)命令フェッチバッファ内の有効命令コードが枯渇し、無効な命令がパイプラインに流れる可能性がある局面では命令フェッチ要求を優先する。
(3)実行ステージに達したロード/ストア要求がキャッシュミスを発生する事が既知であれば、ロード/ストア要求を優先する。
調停回路1の基本方針(3)において、キャッシュミスを伴うロード/ストア要求と命令フェッチ要求が衝突した際に(命令フェッチバッファ内の有効命令コードが枯渇時も)ロード/ストア要求を優先する理由を以下に説明する。
図4は、本実施の形態の手法によるキャッシュリフィル時のパイプライン動作を示す図である。図4は、命令フェッチバッファ内の有効命令コードが枯渇した状態で、キャッシュミスを伴うロード要求と命令フェッチ要求が衝突した際に、調停回路1がロード要求を採択した例を示す。説明を簡潔にするため、ここではロード後の命令(n1〜n5)をロード/ストア/分岐命令でないものと仮定する。
図4において、“サイクル(Cycle)1”で命令フェッチ要求を待機させたため、“サイクル2”の命令フェッチステージ(F−Stage)に無効な命令(バブル)Bが挿入されていることが確認できる。その後、“サイクル3”以降ではロード要求(Load)がメモリステージにおいて外部メモリ20からのリフィル(Refill)待ちのために停滞する(ストール)。この間、統合キャッシュメモリ2に対するロード起因のメモリアクセスは発生しないため、後段のパイプラインと独立した命令フェッチステージは有効な命令コード(n3)を読み出し、先の無効な命令(バブル)Bと有効な命令(n3)を交換する(サイクル3)。
さらに、バスレイテンシによるリフィルデータ待ち状態の間に、命令フェッチステージは着々と統合キャッシュメモリ2から命令コード(n4、n5)を読み出し、命令フェッチバッファに格納する(サイクル4,5)。その後、外部バス30からリフィルデータ(Refill Data)が返された際に統合キャッシュメモリ2にリフィルデータを書き戻し、(クリティカルワードファースト機構等を適用すれば)メモリステージ(M−Stage)のロード要求(Load)はストール解除される(サイクル6)。その後は、命令フェッチバッファに格納された有効な命令コード(n4、n5)を元にパイプライン動作が再開される(サイクル7、8)。
上記に示した通り、リフィル動作の間に命令フェッチ動作を実現することで、パイプラインに無効な命令を流すことなく、リフィル後のパイプライン動作を実現することができる。仮に、“サイクル1”の段階で命令フェッチを優先させた場合、ロード要求のリフィル開始動作が1サイクル遅れるため、ロード要求の終了もサイクル7からサイクル8へと遅れることになる。
図5は、従来の手法と本実施の形態の手法のパイプライン効率の比較結果を示す図であり、(a)は従来の手法、(b)は本実施の形態の手法を示す。図5中の“サイクル(Cycle)1”では、既に命令フェッチバッファ中の有効命令が枯渇しているものとする。
従来手法では、図5の(a)に示すように、“サイクル1”において(後段のロードを待機させた場合ストールになる判断から)命令フェッチを待機させたため、“サイクル2”以降で無効な命令Bがパイプラインを流れている。ロード要求(Load)の3命令後に位置する「n3」命令は、最終的に“サイクル7”で処理を終える。
一方本実施の形態のパイプラインでは、図5の(b)に示すように、“サイクル1”で命令フェッチを採択し(ロードヒットと仮定)、ロード要求はUCLBに格納される。そのため、“サイクル2”では有効な命令がパイプラインに供給される。同時に(サイクル2では)UCLBからロード要求を統合キャッシュメモリ2に発行し、データをライトバックステージ(W−stage)で回収する。“サイクル1”の時点で当該ロード要求がヒットすることが既知であるため、ライトバックステージ以降に遅れることはない。
ロード命令の3命令後に位置する「n3」命令は、最終的に“サイクル6”で処理を終える。命令フェッチバッファのビット長を1実行命令のビット長よりも長く設定すれば、“サイクル3”以降も直ぐには命令は枯渇しない。
図5の(b)の“サイクル1”においては、命令フェッチとE−stageのロード命令が衝突し、命令フェッチが有効になったため、UCLBにロード命令が待機するために格納される。その後、“サイクル2”においてロード要求がUCLBから統合キャッシュメモリ2に発行され、“サイクル3”において、W−stageのロード要求に対してロードデータが返る。
図5の(b)の“サイクル2”において、さらに命令フェッチが発生した場合、E−stageの「n1」命令がロード要求またはストア要求だった場合、統合キャッシュメモリ2へは、1.命令フェッチ、2.「n1」命令がロード要求またはストア要求だった場合の要求、3.UCLB中のロード要求の3つの要求が発生する。
ここで、UCLBのロード要求が実行されない場合、M−stageのロード要求は次のステージ(W−stage)に移行してもロードデータが得られないためM−stageに留まり、パイプラインはストール(一時停止)する(F:n3、D:n2、E:n1、M:Load、W:空白)。
その後、UCLB内のロード要求が実行され、次サイクルでロードデータが返る事が判断された段階で、M−stageのロード命令はW−stageに進み(サイクル3)、ロードデータを受け取り処理を完了する。
図6〜図9は、本実施の形態の手法において命令フェッチ要求、E−stageのロード/ストア要求、UCLB/UCSB要求の3つのアクセス要求が統合キャッシュメモリ2に向けられた際の調停方法を示す図である。なお、図6〜図9では、図5と同様にパイプラインを表記している。
上記の説明においては、始めにロード/ストアバッファ(UCLB/UCSB)11が空の状態で、調停回路1が命令フェッチ要求、ロード/ストア要求を調停する方法を示した。以下では、UCLB/UCSB中に以前の調停により待機させられているロード/ストア要求が存在する場合の調停方法について説明する。
図6〜図9では、“サイクル1”において、命令フェッチ要求(Fetch Req)、E−stageのロード/ストア要求(Load/Store Req)、E−stageで要求を止められ、UCLB/UCSB中で待機しているロード/ストア要求(要求元のロード/ストア命令はパイプライン中のM−stageに存在する)の3者のアクセス要求が統合キャッシュメモリ2へ発生している状況を示している。なお、図中「−」は無効な命令(バブル)を示し、「n2…n5」はロード/ストア要求以外の命令群として表記している。
E−stage/M−stageに存在するロード/ストア要求のHit/Missの組み合わせは、以下に示すように2×2=4通りのパターンが存在する。
E−stage M−stage
A: Miss Miss
B: Miss Hit
C: Hit Miss
D: Hit Hit
パターンA,B,C,Dの何れの場合も、UCLB/UCSB内で待機中のロード/ストア要求からの統合キャッシュメモリ2へのアクセスを通さないと、パイプラインはストール(一時停止)する。よって「UCLB/UCSB中にロード/ストア要求が存在する場合はそれを最優先とする」ポリシーによって、3者のアクセス要求時の調停を行う。なお、図6〜図9において斜線を付けたアクセス要求は、調停の結果、統合キャッシュメモリ2へのアクセスが可能な事を示している。
図6の場合、load0(Miss)に続くload1(Miss)もキャッシュMissを引き起こし、外部バス30を用いたリフィル(Refill)処理(図4の外部RAM20への処理と同様)を必要とするため、load0のリフィル処理が終わるまで、UCLBで待機する。外部バス30はload0のリフィル終了まで占有される想定であり、load0はリフィルデータが返ってくるまでは、パイプラインのM−stageに留まり、データの到着を待つ。つまり、ここでパイプラインのストールが発生する。パイプラインは、ロード/ストア要求がM−stageに存在し、次のステージ(W−stage)に移行しても処理データが到達できないためにストールする。図6中の“サイクル(Cycle)”の「X」は、リフィル処理の時間に依存する。
図7の場合、UCSBに待機中のstore0(Hit)を処理した後にload1(Miss)の処理に移る。すなわち、M−stageのstore0(Hit)を採択し、パイプライン後段の処理を優先する。命令フェッチ要求(Fetch Req)がされないため、パイプラインに無効な命令(バブル)が流れるが、load1(Miss)の長いリフィル処理中に空いたサイクルを利用して命令フェッチをすることで、パイプライン中のバブルに有効な命令(図7ではn4やn5)を埋めることが可能になる。
図8の場合、UCLBに待機中のload0(Miss)のリフィルの待ちサイクル中に総合キャッシュメモリ2自体が空くため、この空きサイクル2を利用して、load1(Hit)の処理を行う。ただし、load1(Hit)のアクセス先が、load0(Miss)のリフィル処理によってキャッシュの張替え中のラインを対象としている場合はアクセスができないため、待機状態となる(図6のload1(Miss)の待機に近い動作)。なお、load0(Miss)のリフィル処理によるラインでなければ、load1(Hit)は統合キャッシュメモリ2へアクセス可能である。
図9の場合、load0(Hit)もload1(Hit)も統合キャッシュメモリ2を1サイクル間占拠して処理を行うため、空きサイクルはなく、load0→load1→Fetch Reqの順に処理される。
以上のように本実施の形態によれば、パイプライン中の命令フェッチバッファの格納状況(エントリ情報)や、キャッシュメモリへのデータアクセス情報(ヒット/ミス情報)を考慮した上で、命令フェッチ側・データ処理側から統合キャッシュメモリに対して生ずるメモリアクセスを調停することで、パイプラインの有効命令処理率(パイプライン効率)の向上を図ることができる。
本発明は、上記実施の形態のみに限定されず、要旨を変更しない範囲で適宜変形して実施できる。例えば、本発明は上記実施の形態に限らず多用なパイプライン構成に適用できる。
統合キャッシュメモリを有する従来のプロセッサシステムのパイプライン動作を示す図。 実施の形態による統合キャッシュメモリを有するプロセッサシステムのパイプライン動作を示す図。 実施の形態のパイプラインの実装例を示す図。 実施の形態の手法によるキャッシュリフィル時のパイプライン動作を示す図。 従来の手法と本実施の形態の手法のパイプライン効率の比較結果を示す図であり、(a)は従来の手法、(b)は本実施の形態の手法を示す図。 実施の形態の手法による3つのキャッシュメモリアクセス発生時のパイプライン動作を示す図。 実施の形態の手法による3つのキャッシュメモリアクセス発生時のパイプライン動作を示す図。 実施の形態の手法による3つのキャッシュメモリアクセス発生時のパイプライン動作を示す図。 実施の形態の手法による3つのキャッシュメモリアクセス発生時のパイプライン動作を示す図。
符号の説明
1…調停及びUCアクセスモジュール 11…ロード/ストアバッファ 12…ステートマシン 3,31,32…タグメモリ 4…命令フェッチモジュール 41…命令フェッチバッファ 5…デコードモジュール 51…レジスタセット 6…実行モジュール 7…パス対策レジスタ 20…外部RAM 30…バス

Claims (5)

  1. パイプラインに、
    キャッシュメモリと、
    複数の命令を格納する命令フェッチバッファと、
    前記キャッシュメモリに対するデータアクセスを要求する実行モジュールと、
    前記実行モジュールのデータアクセスに係る情報を出力するタグメモリと、
    前記命令フェッチバッファのエントリ情報と、前記タグメモリからのデータアクセスに係る情報とに基づき、前記キャッシュメモリに対するアクセスを調停する調停回路と、
    を備えたことを特徴とするプロセッサシステム。
  2. 前記データアクセスに係る情報は、ロード要求またはストア要求のヒット/ミス情報であることを特徴とする請求項1に記載のプロセッサシステム。
  3. 前記調停回路は、ストアバッファを有し、命令フェッチ要求とストア要求の衝突時に、前記ストア要求を前記ヒット/ミス情報に関わらず前記ストアバッファに格納し、前記キャッシュメモリに対する他のアクセスがない期間で前記ストア要求を処理することを特徴とする請求項2に記載のプロセッサシステム。
  4. 前記キャッシュメモリはデータ部が1入力1出力構成をとり、前記タグメモリは2入力2出力構成をとることを特徴とする請求項1乃至3のいずれかに記載のプロセッサシステム。
  5. 前記調停回路は、命令フェッチ要求及び前記命令フェッチバッファ内のエントリ情報と、ロード要求またはストア要求と、ヒット/ミス情報とを基に遷移するステートマシンを有することを特徴とする請求項1乃至4のいずれかに記載のプロセッサシステム。
JP2007035353A 2007-02-15 2007-02-15 プロセッサシステム Pending JP2008198127A (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2007035353A JP2008198127A (ja) 2007-02-15 2007-02-15 プロセッサシステム
US12/030,474 US20080201558A1 (en) 2007-02-15 2008-02-13 Processor system

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2007035353A JP2008198127A (ja) 2007-02-15 2007-02-15 プロセッサシステム

Publications (1)

Publication Number Publication Date
JP2008198127A true JP2008198127A (ja) 2008-08-28

Family

ID=39707658

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2007035353A Pending JP2008198127A (ja) 2007-02-15 2007-02-15 プロセッサシステム

Country Status (2)

Country Link
US (1) US20080201558A1 (ja)
JP (1) JP2008198127A (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10445091B1 (en) * 2016-03-30 2019-10-15 Apple Inc. Ordering instructions in a processing core instruction buffer

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5019967A (en) * 1988-07-20 1991-05-28 Digital Equipment Corporation Pipeline bubble compression in a computer system
US6330646B1 (en) * 1999-01-08 2001-12-11 Intel Corporation Arbitration mechanism for a computer system having a unified memory architecture
US6338121B1 (en) * 1999-05-20 2002-01-08 International Business Machines Corporation Data source arbitration in a multiprocessor system
US6704820B1 (en) * 2000-02-18 2004-03-09 Hewlett-Packard Development Company, L.P. Unified cache port consolidation
US6427189B1 (en) * 2000-02-21 2002-07-30 Hewlett-Packard Company Multiple issue algorithm with over subscription avoidance feature to get high bandwidth through cache pipeline
US6557078B1 (en) * 2000-02-21 2003-04-29 Hewlett Packard Development Company, L.P. Cache chain structure to implement high bandwidth low latency cache memory subsystem
US6643747B2 (en) * 2000-12-27 2003-11-04 Intel Corporation Processing requests to efficiently access a limited bandwidth storage area

Also Published As

Publication number Publication date
US20080201558A1 (en) 2008-08-21

Similar Documents

Publication Publication Date Title
US9009408B2 (en) Non-blocking, pipelined write allocates with allocate data merging in a multi-level cache system
US8145844B2 (en) Memory controller with write data cache and read data cache
JP4678623B2 (ja) 非対称型異種混合マルチプロセッサ環境(asymmetric heterogeneous multiprocessor environment)におけるメモリバリア要素(Primitive)
US7073026B2 (en) Microprocessor including cache memory supporting multiple accesses per cycle
KR101039782B1 (ko) 능동 메모리 프로세서를 포함하는 네트워크-온-칩 시스템
JP5548037B2 (ja) 命令発行制御装置及び方法
US20040044847A1 (en) Data streaming mechanism in a microprocessor
JP5209933B2 (ja) データ処理装置
JP4230504B2 (ja) データプロセッサ
JP2007213578A (ja) データ・キャッシュ・ミス予測およびスケジューリング
JP2005538439A (ja) データ処理装置におけるパイプライン間の同期
JP2007507791A (ja) トレースキャッシュベースのプロセッサ中の例外命令を処理するためのシステム及び方法
US20100332800A1 (en) Instruction control device, instruction control method, and processor
EP2523099A2 (en) Selective routing of local memory accesses and device thereof
KR101093784B1 (ko) 리플레이 메커니즘을 구비한 로드 저장 유닛
US5924120A (en) Method and apparatus for maximizing utilization of an internal processor bus in the context of external transactions running at speeds fractionally greater than internal transaction times
TW201321998A (zh) 預設為猜測式資料交易的匯流排裝置及其非猜測的延伸
US7730288B2 (en) Method and apparatus for multiple load instruction execution
JP2004145454A (ja) 情報処理装置及び情報処理方法
JP2007109057A (ja) プロセッサ
JP2008198127A (ja) プロセッサシステム
JP2004303026A (ja) レジスタ・リネーミング機能を有するプロセッサ
US20070079110A1 (en) Instruction stream control
WO2013121516A1 (ja) データ処理装置
US7650483B2 (en) Execution of instructions within a data processing apparatus having a plurality of processing units