JP6049564B2 - Data trace circuit, integrated circuit, and data trace method - Google Patents
Data trace circuit, integrated circuit, and data trace method Download PDFInfo
- Publication number
- JP6049564B2 JP6049564B2 JP2013156772A JP2013156772A JP6049564B2 JP 6049564 B2 JP6049564 B2 JP 6049564B2 JP 2013156772 A JP2013156772 A JP 2013156772A JP 2013156772 A JP2013156772 A JP 2013156772A JP 6049564 B2 JP6049564 B2 JP 6049564B2
- Authority
- JP
- Japan
- Prior art keywords
- memory
- data
- request
- value
- unit
- 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.)
- Expired - Fee Related
Links
Images
Landscapes
- Debugging And Monitoring (AREA)
Description
本発明は、例えば、集積回路を流れるデータを収集(トレース)する技術に関するものである。 The present invention relates to a technique for collecting (tracing) data flowing through an integrated circuit, for example.
コンピュータの性能を向上させるためにプログラムの挙動が解析される。
プログラムの挙動を解析するための手法として、バスをプロービングしてアドレスなどを記憶媒体に記録する方法が、1970年代に開示されている(例えば、特許文献1)。
最近は、市販のロジックアナライザのプローブがデータを用いてデータ(トレースともいう)をメモリに記録し、記録したデータを一般のコンピュータを用いて解析する手法が用いられている。この手法により、専用の装置を用いずにプログラムの挙動を解析することができる。
Program behavior is analyzed to improve computer performance.
As a method for analyzing the behavior of a program, a method of probing a bus and recording an address or the like on a storage medium was disclosed in the 1970s (for example, Patent Document 1).
Recently, a commercially available logic analyzer probe uses data to record data (also referred to as a trace) in a memory and analyzes the recorded data using a general computer. By this method, the behavior of the program can be analyzed without using a dedicated device.
また、パフォーマンスカウンタと呼ばれる機能を用いる手法が存在する(例えば、特許文献2、非特許文献1)。
この手法は、コンピュータ内で発生する信号を直接モニタせずにコンピュータ内で発生するキャッシュミスなどの事象をカウントし、カウント回数に基づいてコンピュータの動作のボトルネックを調査する手法である。
In addition, there is a method using a function called a performance counter (for example,
In this method, events such as a cache miss occurring in a computer are counted without directly monitoring a signal generated in the computer, and a bottleneck in the operation of the computer is investigated based on the number of counts.
一方、半導体の進歩によって回路の集積度が飛躍に伸びた結果、CPU(Central Processing Unit)、キャッシュメモリ、メモリコントローラ、RAM(Random Access Memory)、入出力装置、バスなどをワンチップに搭載するSoC(System on a Chip)が開発されている。
但し、キャッシュミスに関する動作、メモリまたは入出力装置に対するアクセスなど、システム全体の性能に影響を及ぼす事象がSoCの内部で発生するため、SoCから外部に出ているバスまたはLSIピン(LSI:Large Scale Integration)に接続して、これらの事象を知ることはきわめて困難である。
On the other hand, as a result of the dramatic increase in circuit integration due to advances in semiconductors, the SoC has a CPU (Central Processing Unit), a cache memory, a memory controller, a RAM (Random Access Memory), an input / output device, a bus, etc. mounted on a single chip. (System on a Chip) has been developed.
However, since an event that affects the performance of the entire system, such as an operation related to a cache miss or an access to a memory or an input / output device, occurs inside the SoC, a bus or LSI pin (LSI: Large Scale) that is externally output from the SoC. It is very difficult to know these events by connecting to Integration.
性能の観点ではなくてプログラムデバッグの観点においても同様な課題が生じており、その課題を解決または緩和するために以下のような手法が提案されている。 Similar problems have arisen not only in terms of performance but also in terms of program debugging, and the following methods have been proposed to solve or alleviate the problems.
(1)JTAG(Joint Test Action Group)を使用したデバッグ手法が一般的である。JTAGは、プログラムを止めた状態でCPUまたはメモリの内容を読み出す機能である。但し、この手法には、リアルタイム動作が必要な多くの組み込み機器で動作を継続することができない、という課題を持っている。 (1) A debugging method using JTAG (Joint Test Action Group) is common. JTAG is a function for reading the contents of the CPU or memory with the program stopped. However, this method has a problem that the operation cannot be continued in many embedded devices that require real-time operation.
(2)内部の重要な信号を高速な信号を用いてLSIから出力する手法がある(例えば、特許文献3)。但し、この手法には、(周波数×ピン数)<(平均の信号変化周波数×ビット数)という条件を満たさない場合、情報のバッファリングを行っても情報を圧縮しなければ、情報をロスするか、または、サンプル程度の情報しか得られない、という課題がある。
(3)この課題を解決するための手法として、LSI内部にメモリを持ち、発生した事象の情報をメモリにいったん書き込み、メモリに書き込んだ情報を後で時間をかけてJTAGまたはイーサネット(登録商標)などの技術を用いて読み出す、という手法がある。この手法を用いる場合、メモリのチップ面積を抑えるために、LSIに内蔵した主記憶用のSRAM(Static Random Access Memory)のアドレス空間を分割し、DMA(Direct・Memory・Access)を使って事象の情報を分割後のSRAMに書き込む(例えば、特許文献4)。
(2) There is a method of outputting important internal signals from an LSI using high-speed signals (for example, Patent Document 3). However, in this method, if the condition of (frequency × number of pins) <(average signal change frequency × number of bits) is not satisfied, information is lost if information is not compressed even if information is buffered. Or there is a problem that only information about a sample can be obtained.
(3) As a technique for solving this problem, there is a memory inside the LSI, information on the event that has occurred is once written in the memory, and the information that has been written in the memory is taken over time later by JTAG or Ethernet (registered trademark) There is a method of reading using a technique such as the above. When this method is used, in order to reduce the chip area of the memory, the address space of the SRAM (Static Random Access Memory) built in the LSI is divided, and the event is recorded using DMA (Direct Memory Access). Information is written into the divided SRAM (for example, Patent Document 4).
高機能・高性能な組み込み機器の処理能力が向上した結果、(2)の手法(ピン出力方式)では、事象の情報を得るための周波数帯域の増大に対応できない。また、(3)の手法(SRAM方式)では、記憶容量が小さいため、事象の情報を格納しきれない。
そのため、(2)の手法を性能分析に用いるためには、数百キロバイトから数十メガバイトの記憶容量を有するRAMが必要である。そして、チップコストおよび性能を考慮した場合、チップの外部に設けたDRAM(Dynamic RAM)に事象の情報を蓄える必要がある。
As a result of the improved processing capability of high-performance and high-performance embedded devices, the method (2) (pin output method) cannot cope with an increase in frequency band for obtaining event information. In the method (3) (SRAM method), since the storage capacity is small, the event information cannot be stored.
Therefore, in order to use the method (2) for performance analysis, a RAM having a storage capacity of several hundred kilobytes to several tens of megabytes is required. In consideration of chip cost and performance, it is necessary to store event information in a DRAM (Dynamic RAM) provided outside the chip.
事象の情報を取得する手法として、取得回路を小さくするために集積回路の内部バスをモニタする方法が一般的である。
具体的には、内部バスを介して送信されるコマンド信号と有効信号とをモニタする(例えば、特許文献5)。なお、有効信号はコマンド信号が有効であることを示す信号である。
目的は異なるが、バスをモニタして障害情報をメモリに記録する方法も古くから使われている(例えば、特許文献6)。
As a method for acquiring event information, a method of monitoring an internal bus of an integrated circuit in order to reduce an acquisition circuit is common.
Specifically, the command signal and the valid signal transmitted via the internal bus are monitored (for example, Patent Document 5). The valid signal is a signal indicating that the command signal is valid.
Although the purpose is different, a method of monitoring the bus and recording fault information in a memory has been used for a long time (for example, Patent Document 6).
一方、集積回路内で信号の送信元と信号の受信元とを直接つなぐポイントツーポイント接続の形態をとるものが流通するようになった。このポイントツーポイント接続により、送信元と受信元とが内部バスを介さずにインタコネクト方式で直接つながる。以前の形態ではバスの送信者が一時期に1つであったが、この形態ではバスの送信者が同時に複数存在することもある。
また、ライトコマンド信号を送信するための伝送経路(チャネルともいう)とリードコマンド信号を送信するための伝送経路とが別々に設けられるため、送信元が1つであってもリードコマンド信号とライトコマンド信号とが同時に発生する可能性がある。
On the other hand, those in the form of a point-to-point connection that directly connects a signal transmission source and a signal reception source in an integrated circuit have come into circulation. By this point-to-point connection, the transmission source and the reception source are directly connected by the interconnect method without going through the internal bus. In the previous form, there was one bus sender at a time, but in this form there may be a plurality of bus senders simultaneously.
In addition, since a transmission path (also referred to as a channel) for transmitting a write command signal and a transmission path for transmitting a read command signal are provided separately, the read command signal and the write can be written even if there is one transmission source. The command signal may be generated at the same time.
インタコネクト方式には、送信元の有効状態と受信元の有効状態とを自律的に調停するものがある。すなわち、送信元はコマンド信号が有効になったことを示す有効信号(VALID)を有意にし、受信元はコマンド信号を取り込めることを示す有効信号(READY)を有意にする。そして、送信元の有効信号と受信元の有効信号とがともに有意になったときにコマンド信号の送信が成立したものとみなす。この仕組みはシェークハンドと呼ばれる。
シェークハンドの仕様として、ARM社のAXI(Advanced eXtensible Interface)が存在する(非特許文献2参照)。その中には記載がないが、複数の送信元がコマンド信号を同じ受信元に同時に送信しようとしたときに調停を行うために、次のような機能が実現可能である。その機能は、送信元と受信元との組み合わせをスイッチ回路によって選択し、複数の組み合わせで同時にコマンド信号の送信が成立しないようにするものである。
Some interconnect methods autonomously arbitrate between the valid state of the transmission source and the valid state of the reception source. In other words, the transmission source makes the valid signal (VALID) indicating that the command signal is effective, and the reception source makes the effective signal (READY) indicating that the command signal can be taken in significant. Then, it is considered that the transmission of the command signal is established when both the effective signal of the transmission source and the effective signal of the reception source become significant. This mechanism is called a shake hand.
There is AXI (Advanced Extensible Interface) of ARM Co., Ltd. as a specification of the shake hand (see Non-Patent Document 2). Although not described therein, in order to perform arbitration when a plurality of transmission sources attempt to transmit command signals to the same reception source at the same time, the following functions can be realized. The function is to select a combination of a transmission source and a reception source by a switch circuit so that transmission of command signals is not established simultaneously by a plurality of combinations.
このようなインタコネクトの形態をもつ集積回路には、以下のような課題がある。
1つ目の課題は、送信元と同じ数だけ信号線が必要であり、信号数が増大し、チップ面積が大きくなってしまうことである。
2つ目の課題は、複数のトランザクション(例えば、コマンド信号)のそれぞれの情報を同時に記録できる構造をトレースバッファに設けなければならないことである。AXIのようにリードコマンド信号用のチャネルとライトコマンド信号用のチャネルとのそれぞれに同時にシェークハンドが発生してしまうと複数のトランザクションが同時に発生するため、トレースを収集するための回路が大規模化および複雑化する。
3つ目の課題は、シェークハンドの同時発生を抑止または削減してしまうとインタコネクト方式の本来の転送性能が得られなくなることである。シェークハンドの同時発生をトレースの取得時だけ抑止または削減する方法も考えられるが、測定したい動作の性能がトレース結果に正しく反映されなくなり、トレース結果から得られる性能値を補正する必要がある。また、コマンド信号の送信中に、通常モードから、シェークハンドの同時発生を抑止する抑止モードへのモード切り替えが行われた場合、インタコネクト方式の動作の連続性が保証されない。
The integrated circuit having such an interconnect form has the following problems.
The first problem is that the same number of signal lines as the number of transmission sources are required, the number of signals increases, and the chip area increases.
The second problem is that a trace buffer must be provided with a structure capable of simultaneously recording information of a plurality of transactions (for example, command signals). Like AXI, if a handshake occurs at the same time for both the channel for the read command signal and the channel for the write command signal, multiple transactions occur at the same time, so the circuit for collecting traces becomes large-scale And complicate.
The third problem is that the original transfer performance of the interconnect method cannot be obtained if simultaneous occurrence of shake hands is suppressed or reduced. Although a method of suppressing or reducing the simultaneous occurrence of shake hands only at the time of acquiring the trace is conceivable, the performance of the operation to be measured is not correctly reflected in the trace result, and it is necessary to correct the performance value obtained from the trace result. In addition, if the mode is switched from the normal mode to the suppression mode that suppresses the simultaneous occurrence of shake hands during the transmission of the command signal, the continuity of the operation of the interconnect method is not guaranteed.
本発明は、例えば、メモリの記憶領域を効率的に利用しながら、同時に発生する1つ以上の対象データをメモリに同時に記憶できるようにすることを目的とする。 An object of the present invention is, for example, to be able to simultaneously store one or more target data generated simultaneously in a memory while efficiently using a storage area of the memory.
本発明のデータトレース回路は、
複数のメモリのうち少なくともいずれかのメモリを選択するためのメモリ選択値を記憶するメモリ選択値記憶部と、
1つ以上の対象データを入力するデータ入力部と、
前記メモリ選択値記憶部に記憶された前記メモリ選択値に基づいて、前記データ入力部が入力した対象データの数と同じ数のメモリを前記1つ以上の対象データを記憶するメモリ群として前記複数のメモリから選択するメモリ群選択部と、
前記データ入力部が入力した対象データの数に基づいて、前記メモリ選択値記憶部に記憶された前記メモリ選択値を、前記メモリ群選択部によって選択された前記メモリ群以外のメモリを選択するための値に更新するメモリ選択値更新部と、を備える。
The data trace circuit of the present invention is
A memory selection value storage unit for storing a memory selection value for selecting at least one of the plurality of memories;
A data input unit for inputting one or more target data;
Based on the memory selection value stored in the memory selection value storage unit, the same number of memories as the number of target data input by the data input unit are used as the memory group for storing the one or more target data. A memory group selection unit for selecting from the memories of
Based on the number of target data input by the data input unit, the memory selection value stored in the memory selection value storage unit is selected to select a memory other than the memory group selected by the memory group selection unit. A memory selection value updating unit that updates the value to
本発明によれば、例えば、同時に発生した対象データの数と同じ数のメモリを選択し、同時に発生した1つ以上の対象データを各メモリに同時に記憶することができる。また、対象データを記憶するメモリを複数のメモリから順番に選択することにより、複数のメモリに均等な量の対象データを記憶することができる。つまり、複数のメモリのそれぞれの記憶領域を効率的に利用することができる。 According to the present invention, for example, the same number of memories as the number of simultaneously generated target data can be selected, and one or more simultaneously generated target data can be simultaneously stored in each memory. Further, by selecting the memory for storing the target data in order from the plurality of memories, an equal amount of the target data can be stored in the plurality of memories. That is, each storage area of a plurality of memories can be used efficiently.
実施の形態1.
トレースバッファの記憶領域を効率的に利用しながら、同時に発生する1つ以上のデータをトレースバッファに同時に記憶する形態について説明する。
A description will be given of a mode in which one or more simultaneously generated data are simultaneously stored in the trace buffer while efficiently using the storage area of the trace buffer.
図1は、実施の形態1における集積回路100のハードウェア構成図である。
実施の形態1における集積回路100のハードウェア構成について、図1に基づいて説明する。
FIG. 1 is a hardware configuration diagram of an integrated circuit 100 according to the first embodiment.
A hardware configuration of the integrated circuit 100 according to the first embodiment will be described with reference to FIG.
集積回路100は、CPU110、キャッシュメモリ120、DRAMコントローラ130、CPUブリッジ140およびトレースバッファ300(データトレース回路の一例)を備える。
また、集積回路100は、バスコントローラ101、DMAコントローラ102、SRAMコントローラ103およびI/Oブリッジ104を備える。
さらに、集積回路100はリセット回路およびクロック回路等を備える(図示省略)。
LSI(Large Scale Integration)は集積回路の一例である。
The integrated circuit 100 includes a
The integrated circuit 100 includes a
Further, the integrated circuit 100 includes a reset circuit, a clock circuit, and the like (not shown).
An LSI (Large Scale Integration) is an example of an integrated circuit.
バスコントローラ101は、バス109に接続しているDMAコントローラ102、SRAMコントローラ103、I/Oブリッジ104、DRAMコントローラ130またはCPUブリッジ140などのデバイスを制御する。
The
DMAコントローラ102は、デバイス間で行われるデータのDMA転送を制御する。DMAは、Direct Memory Accessの略称である。
The
SRAMコントローラ103は、SRAM(Static RAM)またはFROM(Flash ROM)を制御する。RAMはRandom Access Memoryの略称であり、ROMはRead Only Memoryの略称である。
The
I/Oブリッジ104は、入出力デバイスを制御する。図中において「I/O」は入出力デバイスを意味している。
The I /
DRAMコントローラ130は、DRAM(Dynamic RAM)を制御する。
CPUブリッジ140は、バス109を介して行われるCPU110のデータ転送を制御する。
DRAMコントローラ130およびCPUブリッジ140は、後述するリクエスト抑止回路200(データ抑止回路の一例)を備える。
The
The CPU bridge 140 controls data transfer of the
The
CPU110はデータを処理し、キャッシュメモリ120はCPU110によって処理されるデータを記憶する。CPUはCentral Processing Unitの略称である。
The
CPU110は、(1)キャッシュメモリ120を使用し、または、(2)キャッシュメモリ120を使用せずに、データの読み込みを行う。
The
(1)キャッシュメモリ120を使用する場合、CPU110は、以下のようにキャッシュメモリ120から目的のデータを読み出す。
目的のデータがキャッシュメモリ120に記憶されている場合、つまり、キャッシュヒットした場合、CPU110はキャッシュメモリ120から目的のデータを読み込む。
目的のデータがキャッシュメモリ120に記憶されていない場合、つまり、キャッシュミスした場合、キャッシュメモリ120は、記憶しているデータをDRAMに書き出すために信号線121Wを介してライトリクエストをDRAMコントローラ130に送信する。そして、キャッシュメモリ120は、目的のデータをDRAMから読み出すために信号線121Rを介してリードリクエストをDRAMコントローラ130に送信する。ライトリクエストおよびリードリクエストは、コマンド、データ長およびアドレスなど、書き出すデータまたは読み出すデータに関する情報を含む。
各リクエストの送信者であるキャッシュメモリ120はAXI(Advanced eXtensible Interface)のマスターに相当し、各リクエストの受信者であるDRAMコントローラ130はAXIのスレーブに相当する。
信号線121Wおよび信号線121Rは、バス109を介さずにキャッシュメモリ120とDRAMコントローラ130とを接続する信号線(インタコネクト信号線ともいう)である。信号線121WはAXIのライトアドレスチャネルに相当し、信号線121RはAXIのリードアドレスチャネルに相当する。なお、ライトアドレスチャネルの他に、データを通信するためのライトデータチャネルおよび応答信号を通信するためのライト応答チャネルが有る。また、リードアドレスチャネルの他に、データおよび応答信号を通信するためのリードデータチャネルが有る(図示省略)。ライト応答チャネルおよびリードデータチャネルの送信者はDRAMコントローラ130である。
(1) When the
When the target data is stored in the
If the target data is not stored in the
The
The
(2)キャッシュメモリ120を使用しない場合、CPU110は、キャッシュメモリ120および信号線122Wを介してライトリクエストをCPUブリッジ140に送信し、キャッシュメモリ120および信号線122Rを介してリードリクエストをCPUブリッジ140に送信する。信号線122WはAXIのライトアドレスチャネルに相当し、信号線122RはAXIのリードアドレスチャネルに相当する。
(2) When the
図2は、実施の形態1におけるリクエストのシェークハンドの様子を示す図である。
上記(1)(2)のいずれの場合も、各リクエストの通信はシェークハンドの成立時に成立する(図2のT2参照)。シェークハンドとは、VALID信号(有効信号ともいう)が有意であり、且つ、READY信号(準備信号ともいう)が有意であるときに、通信が成立する通信方式である。VALID信号が有意であるとは、リクエストの送信者がリクエストが有効であることを意味するVALID信号を送信することを意味する。また、READY信号が有意であるとは、リクエストの受信者がリクエストを受信できることを意味するREADY信号を送信することを意味する。図2では、T2のタイミングでVALID信号が有意であり(VALID=1)、且つ、READY信号が有意である(READY=1)。つまり、T2のタイミングでシェークハンドが成立している。
FIG. 2 is a diagram showing a state of a shake hand of a request in the first embodiment.
In both cases (1) and (2), communication of each request is established when the shake hand is established (see T2 in FIG. 2). The shake hand is a communication method in which communication is established when a VALID signal (also referred to as a valid signal) is significant and a READY signal (also referred to as a preparation signal) is significant. The significance of the VALID signal means that the sender of the request transmits a VALID signal that means that the request is valid. In addition, the fact that the READY signal is significant means that the READY signal that means that the receiver of the request can receive the request is transmitted. In FIG. 2, the VALID signal is significant (VALID = 1) and the READY signal is significant (READY = 1) at the timing of T2. That is, the shake hand is established at the timing of T2.
信号線121Wと信号線121Rとは独立しているため、信号線121Wのライトリクエストと信号線121Rのリードリクエストとが同時に成立することがある。
同様に、信号線122Wと信号線122Rとは独立していため、信号線122Wのライトリクエストと信号線122Rのリードリクエストとが同時に成立することがある。
さらに、信号線121Wのライトリクエストと信号線121Rのリードリクエストと信号線122Wのライトリクエストと信号線122Rのリードリクエストとの4つのリクエストが同時に成立することもある。
Since the
Similarly, since the
Further, four requests, that is, a write request for the
DRAMコントローラ130およびCPUブリッジ140のリクエスト抑止回路200は、同時に成立したライトリクエストとリードリクエストとのうち少なくとも一方を抑止する回路である。
The
トレースバッファ300は、DRAMコントローラ130のリクエスト抑止回路200とCPUブリッジ140のリクエスト抑止回路200とのそれぞれから同時に出力されるリクエストを同時に記憶する回路である。
The
図3は、実施の形態1におけるリクエスト抑止回路200の構成図である。
DRAMコントローラ130(図1参照)が備えるリクエスト抑止回路200の構成について、図3に基づいて説明する。なお、CPUブリッジ140(図1参照)は、同様のリクエスト抑止回路200を備える。
FIG. 3 is a configuration diagram of the
The configuration of the
リクエスト抑止回路200(データ抑止回路の一例)は、第一の選択回路210(データ抑止入力部と、第一のAND回路231と、第二のAND回路232とを備える。AND回路は複数の入力値から得られる論理積を出力する論理積回路である。
さらに、リクエスト抑止回路200は、信号加工回路220(データ選択部、抑止数カウント部の一例)と、モードレジスタ221(モード値記憶部の一例)と、カウントレジスタ222とを備える。
The request suppression circuit 200 (an example of a data suppression circuit) includes a first selection circuit 210 (a data suppression input unit, a first AND
Furthermore, the
第一の選択回路210は、信号線121Wからライトリクエストを入力し、信号線121Rからリードリクエストを入力し、信号加工回路220から選択信号を入力する。
そして、第一の選択回路210は、ライトリクエストとリードリクエストとのうち、選択信号によって選択されるリクエスト(VALID信号を除く)を出力する。
The
Then, the
第一のAND回路231は、ライトリクエストに含まれるVALID信号(AWVALID)とライトリクエストに関してDRAMコントローラ130によって生成されるREADY信号(加工前のAWREADY)とを入力する。加工前のAWREADY信号は、各スレーブ(130、140)のライトバッファの空き状態やメモリやブリッジのライトのビジー状態から生成され、元々は信号線121W、信号線122Wの一部としてスレーブからマスターに送信していたものである。そして、入力したVALID信号の値と入力したREADY信号の値とが共に「1(有意である)」である場合、第一のAND回路231は、「1」を示すVALID信号(ライトリクエスト用)を出力する。その他の場合、第一のAND回路231は「0(有意でない)」を示すVALID信号(ライトリクエスト用)を出力する。
The first AND
第二のAND回路232は、リードリクエストに含まれるVALID信号(ARVALID)とリードリクエストに関してDRAMコントローラ130によって生成されるREADY信号(加工前のARREADY)とを入力する。加工前のARREADY信号は、各スレーブ(130、140)のリードバッファの空き状態やメモリやブリッジのリードのビジー状態から生成され、元々は信号線121R、信号線122Rの一部としてスレーブからマスターに送信していたものである。そして、入力したVALID信号の値と入力したREADY信号の値とが共に「1」である場合、第二のAND回路232は、「1」を示すVALID信号(リードリクエスト用)を出力する。その他の場合、第二のAND回路232は「0」を示すVALID信号(リードリクエスト用)を出力する。
The second AND
モードレジスタ221は、動作モードの種類を示すモード値を記憶する記憶部である。動作モードには、同時に成立したライトリクエストとリードリクエストとのうち少なくとも一方を抑止する抑止モードと、抑止を行わない非抑止モードとの2種類のモードが有る。このモードはプログラムによる書き込みやLSIの外部ピンの設定などの手段により0または1にセットできる。
The
カウントレジスタ222は、ライトリクエストまたはリードリクエストを抑止した回数、つまり、抑止されたライトリクエストおよびリードリクエストの数を記憶する。
The
信号加工回路220は、ライトリクエストに含まれるVALID信号(AWVALID)と、リードリクエストに含まれるVALID信号(ARVALID)と、ライトリクエストに関する加工前のREADY信号(AWREADY)と、リードリクエストに関する加工前のREADY信号(ARREADY)と、モードレジスタ221に記憶されているモード値とを入力する。
そして、信号加工回路220は、入力した各信号の値と入力したモード値とに応じた選択信号を第一の選択回路210と第一のAND回路231と第二のAND回路232とに出力する。
さらに、信号加工回路220は、入力した各信号の値と入力したモード値とに応じて各READY信号を加工する。なお、各READY信号は、キャッシュメモリ120に出力される。キャッシュメモリ120に出力される各READY信号に関する説明については非特許文献2を参照のこと。
また、信号加工回路220は、ライトリクエストおよびリードリクエストが抑止モードで同時に成立し、いずれかのリクエストを選択する選択信号を出力する場合、カウントレジスタ222に記憶されているカウント値を1カウントアップする。つまり、信号加工回路220はリクエストの抑止数を数えるパフォーマンスモニタ回路(パフォーマンスカウンタともいう)として機能する。このパフォーマンスモニタ回路の読み出しパスは本実施例の規定範囲外である。
The signal processing circuit 220 includes a VALID signal (AWVALID) included in the write request, a VALID signal (ARVALID) included in the read request, a READY signal (AWREADY) before processing related to the write request, and READY before processing related to the read request. The signal (ARREADY) and the mode value stored in the
Then, the signal processing circuit 220 outputs a selection signal corresponding to the value of each input signal and the input mode value to the
Further, the signal processing circuit 220 processes each READY signal according to the value of each input signal and the input mode value. Each READY signal is output to the
Further, the signal processing circuit 220 increments the count value stored in the
図4は、実施の形態1における信号加工回路220の入出力値の一例を示す表である。
実施の形態1における信号加工回路220の入出力値の一例について、図4に基づいて説明する。なお、信号加工回路220は、図4に示す表をデータとして記憶し、使用しても構わない。
FIG. 4 is a table showing an example of input / output values of the signal processing circuit 220 according to the first embodiment.
An example of input / output values of the signal processing circuit 220 in the first embodiment will be described with reference to FIG. Note that the signal processing circuit 220 may store and use the table shown in FIG. 4 as data.
図4において、モード値「1」は抑止モードを意味し、モード値「0」が非抑止モードを意味する。また、「d.c.」(don’t care)は任意の値を意味する(以降で説明する各表において同様)。 In FIG. 4, the mode value “1” means the inhibition mode, and the mode value “0” means the non-inhibition mode. Further, “dc” (don't care) means an arbitrary value (the same applies to each table described below).
項番「1」の入力値は、抑止モードが指定されているときにライトリクエストとリードリクエストとが同時に成立していることを意味する。
抑止モードが指定されているため、信号加工回路220はARREADYの信号値を「1」から「0」に加工し、ライトリクエストを選択するための選択信号「0」を出力する。これにより、リードリクエストを抑止することができる。
但し、信号加工回路220は、ARREADYの信号値の代わりにAWREADYの信号値を「1」から「0」に加工し、リードリクエストを選択するための選択信号「1」を出力してもよい。これにより、ライトリクエストを抑止することができる。
また、信号加工回路220は、ARREADYとAWREADYとの両方の信号値を「1」から「0」に加工し、任意の値を示す選択信号を出力してもよい。これにより、ライトリクエストとリードリクエストとの両方を抑止することができる。なお、図示していないが、この項番「1」のみでカウントレジスタ222のカウントアップを行い、他の項番ではカウントアップを行わない。
An input value of item number “1” means that a write request and a read request are established simultaneously when the suppression mode is designated.
Since the inhibition mode is designated, the signal processing circuit 220 processes the ARREADY signal value from “1” to “0”, and outputs a selection signal “0” for selecting a write request. Thereby, a read request can be suppressed.
However, the signal processing circuit 220 may process the AWREADY signal value from “1” to “0” instead of the ARREADY signal value, and output a selection signal “1” for selecting a read request. Thereby, a write request can be suppressed.
Further, the signal processing circuit 220 may process both the signal values of ARREADY and AWREADY from “1” to “0” and output a selection signal indicating an arbitrary value. Thereby, both a write request and a read request can be suppressed. Although not shown, the
項番「2」の入力値は、抑止モードが指定されていないときにライトリクエストとリードリクエストとが同時に成立していることを意味する。
抑止モードが指定されていないため、信号加工回路220はAWREADYとARREADYとの両方の信号値「1」をそのまま加工後の信号値として出力する。また、信号加工回路220は任意の値を示す選択信号を出力する。その結果として、ライトリクエストまたはリードリクエストが抑止される。但し、リクエスト抑止回路200とトレースバッファ300との間にライトリクエスト用の信号線201Aとリードリクエスト用の信号線201Aとを設け、リクエスト抑止回路200がライトリクエストとリードリクエストとの両方をトレースバッファ300に出力しても構わない。
An input value of item number “2” means that a write request and a read request are established at the same time when the suppression mode is not designated.
Since the inhibition mode is not designated, the signal processing circuit 220 outputs both the AWREADY and ARREADY signal values “1” as processed signal values. The signal processing circuit 220 outputs a selection signal indicating an arbitrary value. As a result, write requests or read requests are suppressed. However, the write
項番「3」から項番「7」の入力値は、ライトリクエストとリードリクエストとの少なくとも一方が成立していないことを意味する。
この場合、信号加工回路220は、抑止モードが指定されているか否かに関わらず、加工前の値または任意の値を示すAWREADYを加工後のAWREADYとして出力する。同様に、信号加工回路220は、加工前の値または任意の値を示すARREADYを加工後のARREADYとして出力する。また、信号加工回路220は、成立しているリクエストまたは任意のリクエストを選択するための選択信号を出力する。
An input value from item number “3” to item number “7” means that at least one of the write request and the read request is not established.
In this case, the signal processing circuit 220 outputs AWREADY indicating a value before processing or an arbitrary value as AWREADY after processing regardless of whether or not the inhibition mode is designated. Similarly, the signal processing circuit 220 outputs ARREADY indicating a value before processing or an arbitrary value as ARREADY after processing. Further, the signal processing circuit 220 outputs a selection signal for selecting an established request or an arbitrary request.
図3に戻り、リクエスト抑止回路200から出力されるリクエストについて説明する。
ライトリクエストを選択するための選択信号「0」が第一の選択回路210および第一のAND回路231に出力された場合、加工後のライトリクエスト信号がリクエスト抑止回路200から信号線201Aを介してトレースバッファ300に出力される。
加工後のライトリクエストは、第一の選択回路210から出力されるライトリクエスト(VALID信号を除く)と第一のAND回路231から出力される値との論理積と同等の値をとる。なお、第一のAND回路231は、ライトリクエストのVALID信号(AWVALID)と、信号加工回路か220から出力される選択信号と、ライトリクエスト用の加工前のREADY信号(AWREADY)との論理積の値を出力する。
Returning to FIG. 3, the request output from the
When the selection signal “0” for selecting the write request is output to the
The processed write request takes a value equivalent to the logical product of the write request (except for the VALID signal) output from the
リードリクエストを選択するための選択信号「1」が信号加工回路220から出力された場合、加工後のリードリクエストがリクエスト抑止回路200から信号線201Aを介してトレースバッファ300に出力される。
加工後のリードリクエストは、第一の選択回路210から出力されるリードリクエスト(VALID信号を除く)と第二のAND回路232から出力される値との論理積と同等の値をとる。なお、第二のAND回路232は、リードリクエストのVALID信号(ARVALID)と、信号加工回路か220から出力される選択信号と、リードリクエスト用の加工前のREADY信号(AWREADY)との論理積の値を出力する。
When the selection signal “1” for selecting a read request is output from the signal processing circuit 220, the processed read request is output from the
The processed read request takes a value equivalent to the logical product of the read request (except for the VALID signal) output from the
このように、信号加工回路220でリクエスト信号を半分に狭めているが、加工されたVALID信号だけは2本無いとライト、リード、無信号の3者の区別がつかないため、1本の信号が余分にいる。なお、それぞれの論理積の論理和の1本と選択信号の1本との合計2本を用いても効果は同様である。 In this way, the request signal is narrowed in half by the signal processing circuit 220, but if there are not only two processed VALID signals, it is not possible to distinguish between the three of write, read, and no signal. There is an extra. Note that the same effect can be obtained by using a total of two of one logical sum of each logical product and one selection signal.
図3では、入力される各信号の信号値の組み合わせに応じて動作する信号加工回路220(組み合わせ回路ともいう)が各READY信号を加工しているが、信号加工回路220の作り方として加工後の各READY信号をフリップフロップ出力として生成しても構わない。なお、フリップフロップ回路は、加工後の各READY信号の出力が遅延しないようにするためであり、1サイクル前の各VALID信号を入力し、次のサイクルで加工後の各READY信号を出力してもよい。但し、AXIのプロトコルが崩れることを防ぐため、1サイクル前の各READY信号の値を予め「0」にしておき条件成立時に「1」に遷移するステートマシンが必要である。 In FIG. 3, a signal processing circuit 220 (also referred to as a combinational circuit) that operates according to a combination of signal values of each input signal processes each READY signal. Each READY signal may be generated as a flip-flop output. Note that the flip-flop circuit prevents the output of each READY signal after processing from being delayed. Each VALID signal before one cycle is input, and each READY signal after processing is output at the next cycle. Also good. However, in order to prevent the AXI protocol from being destroyed, a state machine is required in which the value of each READY signal one cycle before is set to “0” in advance and transitions to “1” when the condition is satisfied.
上記の通り、リクエスト抑止回路200は、同時に成立したライトリクエストとリードリクエストとのうち少なくとも一方を抑止することができる。
As described above, the
図5は、実施の形態1におけるトレースバッファ300の構成図である。
実施の形態1におけるトレースバッファ300の構成について、図5に基づいて説明する。
FIG. 5 is a configuration diagram of the
The configuration of the
トレースバッファ300(データトレース回路の一例)は、第一の選択回路311(データ入力部の一例)と、第二の選択回路312(データ入力部の一例)と、選択制御回路313とを備える。
トレースバッファ300は、第一の入力レジスタ320から第四の入力レジスタ323の4つの入力レジスタと、第一のメモリ330から第四のメモリ333の4つのメモリとを備える。
トレースバッファ300は、出力回路340と出力レジスタ341とを備える。
トレースバッファ300は、バッファ管理回路350(メモリ群選択部、メモリ選択値更新部、エントリ指定部、エントリ指定値更新部の一例)を備える。
トレースバッファ300は、セクターポイントレジスタ351(メモリ選択値記憶部の一例)と、第一のライトポイントレジスタ352(エントリ指定値記憶部の一例)と、第二のライトポイントレジスタ353(エントリ指定値記憶部の一例)とを備える。
The trace buffer 300 (an example of a data trace circuit) includes a first selection circuit 311 (an example of a data input unit), a second selection circuit 312 (an example of a data input unit), and a
The
The
The
The
以下、DRAMコントローラ130(図1参照)のリクエスト抑止回路200から出力されるライトリクエストまたはリードリクエストを「リクエスト(A)」と呼び、CPUブリッジ140(図1参照)のリクエスト抑止回路200から出力されるライトリクエストまたはリードリクエストを「リクエスト(B)」と呼ぶ。
リクエスト(A)およびリクエスト(B)は、データ、データ長、アドレス、VALID信号、READY信号などを含む。
Hereinafter, the write request or read request output from the
Request (A) and request (B) include data, data length, address, VALID signal, READY signal, and the like.
第一の選択回路311および第二の選択回路312は、リクエスト(A)とリクエスト(B)とを入力し、選択制御回路313から選択信号(Sa、Sb)を入力する。
そして、第一の選択回路311および第二の選択回路312は、リクエスト(A)とリクエスト(B)とのうち、選択信号(Sa、Sb)によって選択されるリクエストを2つの入力レジスタに出力する。
第一の選択回路311から出力されるリクエストの出力先は第一の入力レジスタ320および第三の入力レジスタ322であり、第二の選択回路312から出力されるリクエストの出力先は第二の入力レジスタ321および第四の入力レジスタ323である。
第一の選択回路311に出力される選択信号を「Sa」と記し、第二の選択回路312に出力される選択信号を「Sb」と記す。
The
Then, the
The output destination of the request output from the
The selection signal output to the
選択制御回路313は、リクエスト(A)とリクエスト(B)とのそれぞれに含まれるVALID信号(Va、Vb)を入力し、セクターポイントレジスタ351からセクターポインタ(SECTP)を入力する。
そして、選択制御回路313は、VALID信号の値およびセクターポインタの値に応じて、選択信号(Sa、Sb)を第一の選択回路311および第二の選択回路312に出力する。
リクエスト(A)に含まれるVALID信号を「Va」と記し、リクエスト(B)に含まれるVALID信号を「Vb」と記す。
The
Then, the
The VALID signal included in the request (A) is described as “Va”, and the VALID signal included in the request (B) is described as “Vb”.
第一の入力レジスタ320は、第一の選択回路311からリクエストを入力し、入力したリクエストを記憶し、記憶したリクエストを第一のメモリ330に出力する。
第二の入力レジスタ321は、第二の選択回路312からリクエストを入力し、入力したリクエストを記憶し、記憶したリクエストを第二のメモリ331に出力する。
第三の入力レジスタ322は、第一の選択回路311からリクエストを入力し、入力したリクエストを記憶し、記憶したリクエストを第三のメモリ332に出力する。
第四の入力レジスタ323は、第二の選択回路312からリクエストを入力し、入力したリクエストを記憶し、記憶したリクエストを第四のメモリ333に出力する。
The
The
The
The
第一のメモリ330から第四のメモリ333の各メモリは複数の記憶領域(エントリともいう)を有し、ポート(Aw)に入力されるアドレスによって記憶領域が指定される。
各メモリ(330〜333)は、各入力レジスタ(320〜323)からリクエストを入力する。図中の「D0」から「D3」はリクエストが入力されるポートを意味する。
第一のメモリ330から第三のメモリ332は、第一のライトポイントレジスタ352からライトポインタ(WPTRa)を入力し、バッファ管理回路350からライトイネーブル信号を入力する。また、第四のメモリ333は、第二のライトポイントレジスタ353からライトポインタ(WPTRb)を入力し、バッファ管理回路350からライトイネーブル信号を入力する。図中の「Aw」はライトポインタによりアドレスが入力されるポートを意味し、図中の「WE0」から「WE3」はライトイネーブル信号が入力されるポートを意味する。
各メモリ(330〜333)は、ライトポインタおよびライトイネーブル信号に応じてリクエストを記憶する。リクエストは、トレースバッファ300の各メモリに記憶されるトレースデータ(対象データ)の一例である。
ライトポインタはリクエストを記憶する記憶領域を指定する値(エントリ指定値の一例)を示し、ライトイネーブル信号はリクエストを記憶するか否かを指定する値を示す。
Each memory from the
Each memory (330 to 333) receives a request from each input register (320 to 323). “D0” to “D3” in the figure mean ports to which requests are input.
The
Each memory (330 to 333) stores a request according to the write pointer and the write enable signal. The request is an example of trace data (target data) stored in each memory of the
The write pointer indicates a value (an example of an entry specification value) that specifies a storage area for storing a request, and the write enable signal indicates a value that specifies whether to store a request.
トレースバッファ300に対してトレースデータ(リクエスト)の読み出しが要求された場合、各メモリ(330〜333)は、要求されたトレースデータを記憶領域から読み出し、読み出したトレースデータを出力回路340に出力する。図中の「Do」はトレースデータが出力されるポートを意味する。
When the trace buffer (request) is requested to be read from the
出力回路340は、各メモリ(330〜333)からトレースデータを入力し、入力したトレースデータを出力レジスタ341に出力する。
出力レジスタ341は、出力回路340からトレースデータを入力し、入力したトレースデータをバス109を介して入出力デバイスに出力する。
The
The
バッファ管理回路350は、リクエスト(A)とリクエスト(B)とのそれぞれに含まれるVALID信号(Va、Vb)を入力し、セクターポイントレジスタ351からセクターポインタ(SECTP)を入力する。
そして、バッファ管理回路350は、VALID信号の値およびセクターポインタの値に応じて、ライトイネーブル信号を各メモリ(330〜333)に出力する。
また、バッファ管理回路350は、VALID信号の値およびセクターポインタの値に応じて、新たなライトポインタ(WPTRa、WPTRb)を第一のライトポイントレジスタ352および第二のライトポイントレジスタ353に設定する。つまり、バッファ管理回路350は、第一のライトポイントレジスタ352および第二のライトポイントレジスタ353に記憶されているライトポインタを更新する。
なお、バッファ管理回路350は、トレースデータの読み出しが要求された際にリードポインタを各メモリ(330〜333)に出力する。リードポインタはトレースデータを読み出す記憶領域を指定する。なお、第一のメモリ330から第四のメモリ333には読み出し用のアドレスであるリードポインタが入力されるポートおよび信号線が有る。それらについては図示を省略する。
The
Then, the
Further, the
Note that the
また、バッファ管理回路350は、VALID信号の値およびセクターポインタの値に応じて、新たなセクターポインタをセクターポイントレジスタ351に設定する。つまり、バッファ管理回路350は、セクターポイントレジスタ351に記憶されているセクターポインタを更新する。
セクターポインタは、リクエストを記憶するメモリ(330〜333)を選択するための値(メモリ選択値の一例)を示す。
Further, the
The sector pointer indicates a value (an example of a memory selection value) for selecting a memory (330 to 333) storing a request.
セクターポイントレジスタ351は、セクターポインタを記憶し、記憶したセクターポインタを選択制御回路313およびバッファ管理回路350に出力する。
また、セクターポイントレジスタ351は、バッファ管理回路350から新たなセクターポインタを入力し、入力した新たなセクターポインタを記憶する。
The
The
第一のライトポイントレジスタ352は、第一のライトポインタ(WPTRa)を記憶し、記憶した第一のライトポインタを第一のメモリ330から第三のメモリ332のそれぞれに出力する。また、第一のライトポイントレジスタ352は、バッファ管理回路350から新たな第一のライトポインタを入力し、入力した新たな第一のライトポインタを記憶する。
第二のライトポイントレジスタ353は、第二のライトポインタ(WPTRb)を記憶し、記憶した第二のライトポインタを第四のメモリ333に出力する。また、第二のライトポイントレジスタ353は、バッファ管理回路350から新たな第二のライトポインタを入力し、入力した新たな第二のライトポインタを記憶する。
The first write point register 352 stores the first write pointer (WPTRa), and outputs the stored first write pointer from the
The second write point register 353 stores the second write pointer (WPTRb), and outputs the stored second write pointer to the
図6は、実施の形態1における選択制御回路313の入出力値およびメモリ(330〜333)の入力値の一例を示す表である。
実施の形態1における選択制御回路313の入出力値およびメモリ(330〜333)の入力値の一例について、図6に基づいて説明する。なお、選択制御回路313は、図6に示す表をデータとして記憶し、使用しても構わない。
FIG. 6 is a table showing an example of input / output values of the
An example of input / output values of the
項番「1」から項番「4」の入力値(Va=1、Vb=1)は、リクエスト(A、B)が同時に成立したことを意味する。セクターポインタ(SECTP)は「0」から「3」のいずれかの値を示す。
項番「1」「3」の場合(SECTP=0又は2)、選択制御回路313は、「0」を示す選択信号(Sa、Sb)を第一の選択回路311および第二の選択回路312に出力する。その結果、第一のメモリ330(D0)および第三のメモリ332(D2)にリクエスト(A)が入力され、第二のメモリ331(D1)および第四のメモリ333(D3)にリクエスト(B)が入力される。
項番「2」「4」の場合(SECTP=1又は3)、選択制御回路313は、「1」を示す選択信号(Sa、Sb)を第一の選択回路311および第二の選択回路312に出力する。その結果、第一のメモリ330(D0)および第三のメモリ332(D2)にリクエスト(B)が入力され、第二のメモリ331(D1)および第四のメモリ333(D3)にリクエスト(A)が入力される。
The input values (Va = 1, Vb = 1) from item number “1” to item number “4” mean that requests (A, B) are established at the same time. The sector pointer (SECTP) indicates any value from “0” to “3”.
In the case of the item numbers “1” and “3” (SECTP = 0 or 2), the
In the case of the item numbers “2” and “4” (SECTP = 1 or 3), the
項番「5」から項番「12」の入力値(Va、Vb)は、リクエスト(A)とリクエスト(B)とのうち一方が成立し、他方が成立していないことを意味する。
項番「5」「7」「9」「11」の場合(SECTP=0又は2)、選択制御回路313は有効なリクエストを指定した選択信号(Sa)を第一の選択回路311に出力する。その結果、第一のメモリ330(D0)および第三のメモリ332(D2)に有効なリクエストが入力される。
項番「6」「8」「10」「12」の場合(SECTP=1又は3)、選択制御回路313は有効なリクエストを指定した選択信号(Sb)を第二の選択回路312に出力する。その結果、第二のメモリ331(D1)および第四のメモリ333(D3)に有効なリクエストが入力される。
The input values (Va, Vb) from item number “5” to item number “12” mean that one of request (A) and request (B) is established, and the other is not established.
In the case of the item numbers “5”, “7”, “9”, and “11” (SECTP = 0 or 2), the
In the case of the item numbers “6” “8” “10” “12” (SECTP = 1 or 3), the
項番「13」の入力値(Va=0、Vb=0)は、リクエスト(A)およびリクエスト(B)が共に成立していないことを意味する。
この場合、選択制御回路313は、セクターポインタ(SECTP)の値に関わらず、任意の値を示す選択信号(Sa、Sb)を第一の選択回路311および第二の選択回路312に出力する。
The input value (Va = 0, Vb = 0) of the item number “13” means that neither the request (A) nor the request (B) is established.
In this case, the
図7は、実施の形態1におけるバッファ管理回路350の入出力値およびメモリ(330〜333)の入力値の一例を示す表である。
実施の形態1におけるバッファ管理回路350の入出力値およびメモリ(330〜333)の入力値の一例について、図7に基づいて説明する。なお、バッファ管理回路350は、図7に示す表をデータとして記憶し、使用しても構わない。
FIG. 7 is a table showing an example of input / output values of the
An example of input / output values of the
項番「1」から項番「4」の入力値(Va=1、Vb=1)は、リクエスト(A、B)が同時に成立したことを意味する。
この場合、バッファ管理回路350は、セクターポインタ(SECTP)の値に応じて、第一のメモリ330から第四のメモリ333のうち2つのメモリ(WEx)を選択する。そして、バッファ管理回路350は、選択した2つのメモリに「1」を示すライトイネーブル信号を出力し、残りの2つのメモリに「0」を示すライトイネーブル信号を出力する。
例えば、項番「1」の場合、バッファ管理回路350は、第一のメモリ330(WE0)および第二のメモリ331(WE1)にライトイネーブル信号「1」を出力し、第三のメモリ332(WE2)および第四のメモリ333(WE3)にライトイネーブル信号「0」を出力する。
「1」を示すライトイネーブル信号はリクエストを記憶させるための信号であり、「0」を示すライトイネーブル信号はリクエストを記憶させないための信号である。
The input values (Va = 1, Vb = 1) from item number “1” to item number “4” mean that requests (A, B) are established at the same time.
In this case, the
For example, in the case of the item number “1”, the
The write enable signal indicating “1” is a signal for storing a request, and the write enable signal indicating “0” is a signal for not storing a request.
項番「5」から項番「12」の入力値は、リクエスト(A)とリクエスト(B)とのうち一方が成立し、他方が成立していないことを意味する。
この場合、バッファ管理回路350は、セクターポインタ(SECTP)の値に応じて、第一のメモリ330から第四のメモリ333のうち1つのメモリ(WEx)を選択する。そして、バッファ管理回路350は、選択した1つのメモリに「1」を示すライトイネーブル信号を出力し、残りの3つのメモリに「0」を示すライトイネーブル信号を出力する。
The input values of the item numbers “5” to “12” mean that one of the request (A) and the request (B) is established and the other is not established.
In this case, the
項番「13」の入力値(Va=0、Vb=0)は、リクエスト(A)およびリクエスト(B)が共に成立していないことを意味する。
この場合、バッファ管理回路350は、セクターポインタ(SECTP)の値に関わらず、全てのメモリ(330〜333)に「0」を示すライトイネーブル信号を出力する。
The input value (Va = 0, Vb = 0) of the item number “13” means that neither the request (A) nor the request (B) is established.
In this case, the
ここで、リクエスト(A、B)を記憶する記憶動作の具体例について、図6および図7に基づいて説明する。
図6および図7の項番「1」において、リクエスト(A、B)が同時に成立している。
図6の項番「1」において、第一のメモリ330(D0)および第三のメモリ332(D2)にはリクエスト(A)が入力され、第二のメモリ331(D1)および第四のメモリ333(D3)にはリクエスト(B)が入力される。
図7の項番「1」において、第一のメモリ330(WE0)および第二のメモリ331(WE1)にはライトイネーブル信号「1」が入力され、第三のメモリ332(WE2)および第四のメモリ333(WE3)にはライトイネーブル信号「0」が入力される。
その結果、第一のメモリ330はリクエスト(A)を記憶し、第二のメモリ331はリクエスト(B)を記憶し、第三のメモリ332および第四のメモリ333はリクエスト(A、B)を記憶しない。
項番「2」から項番「3」の場合も同様な記憶動作が行われ、同時に成立したリクエスト(A、B)が異なるメモリに同時に記憶される。
項番「5」から項番「12」の場合、リクエスト(A、B)の一方のみが成立しており、成立しているリクエストだけがメモリに記憶される。
項番「13」の場合、リクエスト(A、B)が成立していないため、リクエスト(A、B)はメモリに記憶されない。
Here, a specific example of the storing operation for storing the request (A, B) will be described based on FIG. 6 and FIG.
In item number “1” in FIGS. 6 and 7, the request (A, B) is simultaneously established.
In the item number “1” in FIG. 6, the request (A) is input to the first memory 330 (D0) and the third memory 332 (D2), and the second memory 331 (D1) and the fourth memory are input. The request (B) is input to 333 (D3).
In the item number “1” of FIG. 7, the write enable signal “1” is input to the first memory 330 (WE0) and the second memory 331 (WE1), and the third memory 332 (WE2) and the fourth memory The write enable signal “0” is input to the memory 333 (WE3).
As a result, the
In the case of item number “2” to item number “3”, the same storage operation is performed, and requests (A, B) established at the same time are simultaneously stored in different memories.
In the case of item number “5” to item number “12”, only one of the requests (A, B) is established, and only the established request is stored in the memory.
In the case of the item number “13”, since the request (A, B) is not established, the request (A, B) is not stored in the memory.
図8は、実施の形態1におけるバッファ管理回路350の入出力値の一例を示す表である。
上記の記憶動作が行われた後のバッファ管理回路350の動作について、図8に基づいて説明する。バッファ管理回路350は、図8に示す表をデータとして記憶し、使用しても構わない。
FIG. 8 is a table showing an example of input / output values of the
The operation of the
項番「1」の場合、リクエスト(A、B)が第一のメモリ330(WE0)および第二のメモリ331(WE1)に記憶される(図7参照)。
バッファ管理回路350は、次回のリクエスト(A、B)が第一のメモリ330(WE0)および第二のメモリ331(WE1)に記憶されないように、セクターポインタ(SECTP)の値「0」に「2」を加算する。つまり、バッファ管理回路350は、セクターポインタの値を「2(=0+2)」に更新する。
また、バッファ管理回路350は、ライトポインタ(WPTRa、WPTRb)の値を更新しない。次回のリクエスト(A、B)が、今回のリクエスト(A、B)が記憶された第一のメモリ330および第二のメモリ331の記憶領域と同じ番号で識別される第三のメモリ332(WE2)および第四のメモリ333(WE3)の記憶領域に記憶されるようにするためである。例えば、今回のリクエスト(A、B)が第一のメモリ330および第二のメモリ331の1番目の記憶領域に記憶された場合、次回のリクエスト(A、B)は第三のメモリ332および第四のメモリ333の1番目の記憶領域に記憶される。つまり、トレースバッファ300に入力されるリクエストの最大数以上(2つ以上)のメモリ(332、333)がライトイネーブル信号によって指定されずに残っている場合、バッファ管理回路350はライトポインタ(WPTRa、WPTRb)を更新しない。
In the case of the item number “1”, the request (A, B) is stored in the first memory 330 (WE0) and the second memory 331 (WE1) (see FIG. 7).
The
Further, the
項番「2」の場合、リクエスト(A、B)が第二のメモリ331(WE1)および第三のメモリ332(WE2)に記憶される(図7参照)。
バッファ管理回路350は、次回のリクエスト(A、B)が第二のメモリ331(WE1)および第三のメモリ332(WE2)に記憶されないように、セクターポインタ(SECTP)の値「1」に「2」を加算する。つまり、バッファ管理回路350は、セクターポインタの値を「3(=1+2)」に更新する。
バッファ管理回路350は、ライトポインタ(WPTRb)の値を更新しない。次回のリクエスト(A、B)のうち一方のリクエスト(A)が、今回のリクエスト(A、B)が記憶された第二のメモリ331および第三のメモリ332の記憶領域と同じ番号で識別される第四のメモリ333の記憶領域に記憶されるようにするためである。
バッファ管理回路350は、ライトポインタ(WPTRa)の値に「1」を加算する。次回のリクエスト(A、B)のうち残りのリクエスト(A)が、第一のメモリ330の記憶領域のうち、以前のリクエストが記憶された記憶領域に上書きされないようにするためである。
In the case of the item number “2”, the request (A, B) is stored in the second memory 331 (WE1) and the third memory 332 (WE2) (see FIG. 7).
The
The
The
項番「3」の場合、リクエスト(A、B)が第三のメモリ332(WE2)および第四のメモリ333(WE3)に記憶される(図7参照)。
バッファ管理回路350は、次回のリクエスト(A、B)が第三のメモリ332(WE2)および第四のメモリ333(WE3)に記憶されないように、セクターポインタ(SECTP)の値「2」に「2」を加算する。但し、セクターポインタの値は「0」から「3」までのいずれかであるため、「2」を加算した後のセクターポインタの値は「4」ではなく、「0」である。つまり、バッファ管理回路350は、セクターポインタの値を「0」に更新する。
バッファ管理回路350は、ライトポインタ(WPTRa、WPTRb)の値に「1」を加算する。以降のリクエストが、第一のメモリ330から第四のメモリ333のそれぞれの記憶領域のうち、以前のリクエストが記憶された記憶領域に上書きされないようにするためである。つまり、各メモリ(330〜333)に1つずつリクエストが記憶された場合、バッファ管理回路350はライトポインタ(WPTRa、WPTRb)の値を更新する。なお、この加算においてエントリの最後の値に+1した場合、ポインタ値は0に戻る。
In the case of the item number “3”, the request (A, B) is stored in the third memory 332 (WE2) and the fourth memory 333 (WE3) (see FIG. 7).
The
The
項番「4」の場合、リクエスト(A、B)が第四のメモリ333(WE3)および第一のメモリ330(WE0)に記憶される(図7参照)。
バッファ管理回路350は、次回のリクエスト(A、B)が第四のメモリ333(WE3)および第一のメモリ330(WE0)に記憶されないように、セクターポインタ(SECTP)の値「3」に「2」を加算する。但し、セクターポインタの値は「0」から「3」までのいずれかであるため、「2」を加算した後のセクターポインタの値は「5」ではなく、「1」である。つまり、バッファ管理回路350は、セクターポインタの値を「1」に更新する。
バッファ管理回路350は、ライトポインタ(WPTRb)の値に「1」を加算する。以降のリクエストが、第四のメモリ333の記憶領域のうち、今回のリクエスト(A)が記憶された記憶領域に上書きされないようにするためである。
バッファ管理回路350は、ライトポインタ(WPTRa)の値を更新しない。次回のリクエスト(A、B)が、今回のリクエスト(B)が記憶された第一のメモリ330の記憶領域と同じ番号で識別される第二のメモリ331および第三のメモリ332に記憶されるようにするためである。
In the case of the item number “4”, the request (A, B) is stored in the fourth memory 333 (WE3) and the first memory 330 (WE0) (see FIG. 7).
The
The
The
項番「5」から項番「12」の場合、バッファ管理回路350は、項番「1」から項番「4」と同様に、セクターポインタ(SECTP)およびライトポインタ(WPTRa、WPTRb)を更新する。
但し、メモリ(330〜333)に記憶されるリクエストの数が「1」であるため、セクターポインタに加算する値は「1」である。
In the case of the item number “5” to the item number “12”, the
However, since the number of requests stored in the memories (330 to 333) is “1”, the value added to the sector pointer is “1”.
項番「13」の場合、メモリ(330〜333)に記憶されるリクエストが無いため、バッファ管理回路350はセクターポインタ(SECTP)およびライトポインタ(WPTRa、WPTRb)を更新しない。
In the case of the item number “13”, since there is no request stored in the memory (330 to 333), the
バッファ管理回路350がセクターポインタ(SECTP)およびライトポインタ(WPTRa、WPTRb)を適宜に更新することにより、各メモリ(330〜333)に記憶されるリクエストの量を均等にすることができる。つまり、リクエストの記憶先が特定のメモリに集中することを防ぐことができる。これにより、特定のメモリから空きの記憶領域が無くなり、特定のメモリの記憶領域からリクエストが読み出される前に新たなリクエストが上書きされてしまうことを抑止することができる。その結果、トレースバッファ300は、各メモリの記憶領域を効率的に利用し、より多くのリクエストを記憶することができる。
By appropriately updating the sector pointer (SECTP) and the write pointer (WPTRa, WPTRb) by the
実施の形態1により、例えば、以下のような効果を奏する。
ポイントツーポイントのインタコネクトのトランザクション(例えば、リクエスト)が同時発生しても、それらをトレースバッファに取り込み、システム性能の解析に必要な情報を漏らさず記録できる。
インタコネクト回路(例えば、DRAMコントローラ130、CPUブリッジ140)にトランザクションの同時発生を抑止する回路(例えば、リクエスト抑止回路200)を挿入することにより、トレースバッファに同時に書き込みすることができるトランザクションの数よりも多いトランザクションが同時に発生した場合であっても、いくつかのトランザクションをイネーブルにし、同時に発生するトランザクションの数を削減することができる。
トランザクションの同時発生を抑止するので、インタコネクト回路とトレースバッファとの間の信号線を削減することができる。2つのトランザクションから1つのトランザクションを選択する場合には信号線の数を従来の1/2に削減し、4つのトランザクションから1つのトランザクションを選択する場合には信号線の数を従来の1/4に削減することができる。但し、信号線の数を削減する効果はインタコネクト回路の配置方法によって変わる。
According to the first embodiment, for example, the following effects can be obtained.
Even when point-to-point interconnect transactions (for example, requests) occur simultaneously, they can be captured in the trace buffer and recorded without leaking information necessary for system performance analysis.
By inserting a circuit (for example, request suppression circuit 200) that suppresses simultaneous generation of transactions into an interconnect circuit (for example,
Since the simultaneous generation of transactions is suppressed, signal lines between the interconnect circuit and the trace buffer can be reduced. When one transaction is selected from two transactions, the number of signal lines is reduced to ½ of the conventional number. When one transaction is selected from four transactions, the number of signal lines is ¼ of the conventional number. Can be reduced. However, the effect of reducing the number of signal lines varies depending on the layout method of the interconnect circuit.
実施の形態1は、以下のような形態であっても構わない。
リクエストはトレースバッファ300に記憶するトレースデータ(対象データ)の一例である。トレースバッファ300はリクエスト以外のデータを記憶しても構わない。
DRAMコントローラ130およびCPUブリッジ140のそれぞれのリクエスト抑止回路200は、同時に成立した3つ以上のデータを入力し、少なくともいずれかのデータを抑止し、1つまたは複数の残りのデータをトレースバッファ300に出力しても構わない。
トレースバッファ300は、3つ以上のデータを同時に入力し、同時に入力した3つ以上のデータを同時に記憶しても構わない。
トレースバッファ300が備えるメモリの数は2つまたは3つであっても構わない。また、トレースバッファ300が備えるメモリの数は5つ以上であっても構わない。
次のような制御が行われてもよい。第二のライトポイントレジスタ353を用いる代わりに第一のライトポイントレジスタ352の値から1を減算する回路を用いる、または、第一のライトポイントレジスタ352を用いる代わりに第二のライトポイントレジスタ353の値に1を加算する回路を用いる。そして、加減算の条件をセクターポイントレジスタ351から求めて、書き込み対象となったメモリ(330〜334)のポートAwの値が図5の動作と等価になるように制御する。
The first embodiment may be in the following form.
The request is an example of trace data (target data) stored in the
Each of the
The
The number of memories provided in the
The following control may be performed. Instead of using the second
100 集積回路、101 バスコントローラ、102 DMAコントローラ、103
SRAMコントローラ、104 I/Oブリッジ、109 バス、110 CPU、120 キャッシュメモリ、121W,121R 信号線、122W,122R 信号線、130 DRAMコントローラ、140 CPUブリッジ、200 リクエスト抑止回路、201A,201B 信号線、210 第一の選択回路、220 信号加工回路、221 モードレジスタ、222 カウントレジスタ、231 第一のAND回路、232 第二のAND回路、300 トレースバッファ、311 第一の選択回路、312 第二の選択回路、313 選択制御回路、320 第一の入力レジスタ、321 第二の入力レジスタ、322 第三の入力レジスタ、323 第四の入力レジスタ、330 第一のメモリ、331 第二のメモリ、332 第三のメモリ、333 第四のメモリ、340 出力回路、341 出力レジスタ、350 バッファ管理回路、351 セクターポイントレジスタ、352 第一のライトポイントレジスタ、353 第二のライトポイントレジスタ。
100 integrated circuit, 101 bus controller, 102 DMA controller, 103
SRAM controller, 104 I / O bridge, 109 bus, 110 CPU, 120 cache memory, 121W, 121R signal line, 122W, 122R signal line, 130 DRAM controller, 140 CPU bridge, 200 request suppression circuit, 201A, 201B signal line, 210 First selection circuit, 220 Signal processing circuit, 221 Mode register, 222 Count register, 231 First AND circuit, 232 Second AND circuit, 300 Trace buffer, 311 First selection circuit, 312 Second selection Circuit, 313 selection control circuit, 320 first input register, 321 second input register, 322 third input register, 323 fourth input register, 330 first memory, 331 second memory, 332
Claims (7)
1つ以上の対象データを入力するデータ入力部と、
前記メモリ選択値記憶部に記憶された前記メモリ選択値に基づいて、前記データ入力部が入力した対象データの数と同じ数のメモリを前記1つ以上の対象データを記憶するメモリ群として前記複数のメモリから選択するメモリ群選択部と、
前記データ入力部が入力した対象データの数に基づいて、前記メモリ選択値記憶部に記憶された前記メモリ選択値を、前記メモリ群選択部によって選択された前記メモリ群以外のメモリを選択するための値に更新するメモリ選択値更新部と、
を備えることを特徴とするデータトレース回路。 A memory selection value storage unit for storing a memory selection value for selecting at least one of the plurality of memories;
A data input unit for inputting one or more target data;
Based on the memory selection value stored in the memory selection value storage unit, the same number of memories as the number of target data input by the data input unit are used as the memory group for storing the one or more target data. A memory group selection unit for selecting from the memories of
Based on the number of target data input by the data input unit, the memory selection value stored in the memory selection value storage unit is selected to select a memory other than the memory group selected by the memory group selection unit. A memory selection value updater for updating to the value of
A data trace circuit comprising:
前記データトレース回路は、
前記複数のメモリのそれぞれのエントリを指定するエントリ指定値を記憶するエントリ指定値記憶部と、
前記エントリ指定値記憶部に記憶された前記エントリ指定値に基づいて、前記1つ以上の対象データのうちの1つの対象データを記憶するエントリを前記メモリ群のそれぞれのメモリに指定するエントリ指定部と、
前記複数のメモリに1つずつ対象データが記憶された場合、前記エントリ指定値記憶部に記憶された前記エントリ指定値を更新するエントリ指定値更新部と、
を備えることを特徴とする請求項1記載のデータトレース回路。 Each of the plurality of memories comprises a plurality of entries;
The data trace circuit includes:
An entry designation value storage unit for storing an entry designation value for designating each entry of the plurality of memories;
An entry designating unit that designates an entry that stores one target data of the one or more target data in each memory of the memory group based on the entry specified value stored in the entry specified value storage unit When,
When target data is stored one by one in the plurality of memories, an entry specified value update unit that updates the entry specified value stored in the entry specified value storage unit;
The data trace circuit according to claim 1, further comprising:
ことを特徴とする請求項2記載のデータトレース回路。 The entry specified value update unit does not update the entry specified value when a memory equal to or more than the maximum number of target data input to the data input unit remains without being selected by the memory group selection unit. The data trace circuit according to claim 2.
各データ抑止回路は、
複数のデータを入力するデータ抑止入力部と、
前記データ抑止入力部が入力した前記複数のデータのうちいずれかのデータを選択するデータ選択部と、
前記データ選択部によって選択された前記データを前記対象データとして前記データトレース回路に出力するデータ抑止出力部と、
を備えることを特徴とする集積回路。 A data trace circuit according to any one of claims 1 to 3 and one or more data suppression circuits,
Each data suppression circuit
A data suppression input section for inputting a plurality of data;
A data selection unit that selects any of the plurality of data input by the data suppression input unit;
A data suppression output unit that outputs the data selected by the data selection unit to the data trace circuit as the target data;
An integrated circuit comprising:
前記データ選択部は、前記モード値記憶部に記憶された前記モード値が前記データ抑止機能を機能させるための値を示す場合に、前記複数のデータのうちいずれかのデータを選択する
ことを特徴とする請求項4記載の集積回路。 Each data suppression circuit includes a mode value storage unit that stores a mode value indicating whether or not to operate the data suppression function.
The data selection unit selects any one of the plurality of data when the mode value stored in the mode value storage unit indicates a value for causing the data suppression function to function. The integrated circuit according to claim 4.
ことを特徴とする請求項4または請求項5記載の集積回路。 5. The data suppression circuit includes a suppression number counting unit that counts the number of data that is not output by the data suppression output unit among the plurality of data input by the data suppression input unit. The integrated circuit according to claim 5.
前記メモリ選択値記憶部は、複数のメモリのうち少なくともいずれかのメモリを選択するためのメモリ選択値を記憶する記憶部であり、
前記データ入力部が、1つ以上の対象データを入力し、
前記メモリ群選択部が、前記メモリ選択値記憶部に記憶された前記メモリ選択値に基づいて、前記データ入力部が入力した対象データの数と同じ数のメモリを前記1つ以上の対象データを記憶するメモリ群として前記複数のメモリから選択し、
前記メモリ選択値更新部が、前記データ入力部が入力した対象データの数に基づいて、前記メモリ選択値記憶部に記憶された前記メモリ選択値を、前記メモリ群選択部によって選択された前記メモリ群以外のメモリを選択するための値に更新する
ことを特徴とするデータトレース方法。 A data trace method using a data trace circuit comprising a memory selection value storage unit, a data input unit, a memory group selection unit, and a memory selection value update unit,
The memory selection value storage unit is a storage unit that stores a memory selection value for selecting at least one of a plurality of memories.
The data input unit inputs one or more target data,
Based on the memory selection value stored in the memory selection value storage unit, the memory group selection unit uses the same number of memories as the number of target data input by the data input unit as the one or more target data. Select from the plurality of memories as a memory group to be stored,
The memory selected value is stored in the memory selection value storage unit by the memory group selection unit based on the number of target data input by the data input unit. A data tracing method comprising updating to a value for selecting a memory other than a group.
Priority Applications (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP2013156772A JP6049564B2 (en) | 2013-07-29 | 2013-07-29 | Data trace circuit, integrated circuit, and data trace method |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP2013156772A JP6049564B2 (en) | 2013-07-29 | 2013-07-29 | Data trace circuit, integrated circuit, and data trace method |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| JP2015026325A JP2015026325A (en) | 2015-02-05 |
| JP6049564B2 true JP6049564B2 (en) | 2016-12-21 |
Family
ID=52490904
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP2013156772A Expired - Fee Related JP6049564B2 (en) | 2013-07-29 | 2013-07-29 | Data trace circuit, integrated circuit, and data trace method |
Country Status (1)
| Country | Link |
|---|---|
| JP (1) | JP6049564B2 (en) |
Family Cites Families (4)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JPS6017547A (en) * | 1983-07-08 | 1985-01-29 | Nec Corp | Action history memory device |
| JPH11306040A (en) * | 1998-04-21 | 1999-11-05 | Toshiba Corp | Emulator trace device |
| US6779055B2 (en) * | 2001-06-20 | 2004-08-17 | Freescale Semiconductor, Inc. | First-in, first-out memory system having both simultaneous and alternating data access and method thereof |
| JP5302050B2 (en) * | 2009-03-04 | 2013-10-02 | 富士通株式会社 | Trace apparatus and trace method for failure analysis |
-
2013
- 2013-07-29 JP JP2013156772A patent/JP6049564B2/en not_active Expired - Fee Related
Also Published As
| Publication number | Publication date |
|---|---|
| JP2015026325A (en) | 2015-02-05 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| JP4225851B2 (en) | Trace element generation system for data processor | |
| TWI494942B (en) | Coherence switch for i/o traffic | |
| US8990633B2 (en) | Tracing support for interconnect fabric | |
| US9436611B2 (en) | Processor, cache memory of the processor and control method of the processor | |
| US7669012B2 (en) | Insertion of coherence requests for debugging a multiprocessor | |
| US8904073B2 (en) | Coherence processing with error checking | |
| JP5843801B2 (en) | Information processing apparatus and debugging method | |
| CN111324493B (en) | Development system and method for processor board level debugging | |
| US10042692B1 (en) | Circuit arrangement with transaction timeout detection | |
| JP2012524334A (en) | Method and apparatus for testing memory | |
| JP6041749B2 (en) | Trace collection circuit and trace collection method | |
| US9448937B1 (en) | Cache coherency | |
| US8645762B2 (en) | Queue freeze on protocol error | |
| US7296167B1 (en) | Combined system responses in a chip multiprocessor | |
| JP6049564B2 (en) | Data trace circuit, integrated circuit, and data trace method | |
| Park et al. | SPB: Towards Low-Latency CXL Memory via Speculative Protocol Bypassing | |
| US20150067246A1 (en) | Coherence processing employing black box duplicate tags | |
| JP5331725B2 (en) | CPU board having on-line test function for peripheral device and on-line test method thereof | |
| GB2389931A (en) | Selective generation of trace elements | |
| US7165132B1 (en) | Processing node including a plurality of processor cores and an interconnect configurable in a test-mode to cause first and second transaction source indicators to be interchanged | |
| KR20070019173A (en) | Integrated circuit device and method for bus monitoring | |
| US7650539B2 (en) | Observing debug counter values during system operation | |
| US8996816B2 (en) | Method and apparatus for selectively bypassing a cache for trace collection in a processor | |
| CN104536859B (en) | A kind of probe apparatus of sheet sand covered system | |
| US12135577B2 (en) | Low power and high speed scan dump |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20160115 |
|
| A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20161017 |
|
| 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: 20161025 |
|
| A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20161122 |
|
| R150 | Certificate of patent or registration of utility model |
Ref document number: 6049564 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
| LAPS | Cancellation because of no payment of annual fees |