JP3855069B2 - 論理回路 - Google Patents
論理回路 Download PDFInfo
- Publication number
- JP3855069B2 JP3855069B2 JP2002026663A JP2002026663A JP3855069B2 JP 3855069 B2 JP3855069 B2 JP 3855069B2 JP 2002026663 A JP2002026663 A JP 2002026663A JP 2002026663 A JP2002026663 A JP 2002026663A JP 3855069 B2 JP3855069 B2 JP 3855069B2
- Authority
- JP
- Japan
- Prior art keywords
- queue
- register
- data
- memory
- delta
- 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
- Advance Control (AREA)
- Executing Machine-Instructions (AREA)
Description
本発明は、論理回路および演算方法に関するものである。
【0001】
【従来の技術】
従来から、共有メモリ型マルチプロセッサが知られている。この共有メモリ型マルチプロセッサは、メモリに格納されたセマフォ(同期変数)に複数のプロセッサがアクセスする方式を採用している。共有メモリ型マルチプロセッサにおいては、プロセッサを増加させて性能を向上させようとすると、同一の同期変数に対するメモリアクセスがボトルネックとなって、性能向上の妨げになる。このことは、プロセッサ数が増えるほど深刻な問題となる。
【0002】
同一セマフォへのアクセス、すなわち、同一アドレスへのメモリアクセスを減らすことができれば、この問題は解消しうる。そのためには、同一アドレスに対する複数のアクセスを一つにまとめられるという機能を有するFA(Fetch & Add)命令を使うことができる。
【0003】
このFA命令の動作を簡単に説明する。例えば、FA(x,e)と、FA(x,f)という二つの命令が同時に発行されたとする。ここで、xは、メモリ中の値である。このとき、メモリには、値aが格納されているとする。このとき、FA命令では、結果的に、メモリに、a+e+fの値を書き戻すことができる。
【0004】
しかしながら、このFA命令は、その実現のために、特殊なハードウェアを必要とする。例えば、ニューヨーク大学のウルトラコンピュータで用いられたハードウェアは、8個のプロセッサからのアクセスを一つにまとめるために、12個ものスイッチを必要としてしまう。このため、実装が難しいという問題がある。
【0005】
【発明が解決しようとする課題】
本発明は、前記の事情に鑑みてなされたものである。本発明は、比較的に簡易な構成でFA命令を実行できる論理回路を提供することを目的としている。
【0006】
【課題を解決するための手段】
請求項1記載の論理回路は、FAキューと、FAレジスタと、演算器と、デルタレジスタと、メモリと、FAコントローラとを備えている。前記FAキューは、複数のデータが書き込まれるものであり、前記デルタレジスタは、前記演算器からの出力を格納するものであり、前記メモリは、同期変数を格納するものである。前記コントローラは、以下のステップを実行するものである。
(1)FAキューの先頭のデータをFAレジスタに送るステップ;
(2)前記同期変数または前記デルタレジスタ中のデータと、前記FAレジスタ中の値とを、前記演算器に送るステップ;
(3)前記演算器の出力を前記デルタレジスタに格納するステップ;
(4)前記FAキューが空であるか、または、前記FAキューのデータが、それ以前のものとは異なるアドレスへのアクセスを行うものであるときは、前記デルタレジスタ中のデータを前記メモリに同期変数として書き戻すステップ。
【0007】
請求項2記載の論理回路は、FAキューと、FAレジスタと、演算器と、デルタレジスタと、メモリと、FAコントローラとを備えている。前記FAキューは、複数のデータが書き込まれるものであり、前記デルタレジスタは、前記演算器からの出力を格納するものであり、前記メモリは、同期変数を格納するものである。前記コントローラは、以下のステップを実行するものである。
(1)FAキューの先頭のデータをFAレジスタに送るステップ;
(2)前記同期変数または前記デルタレジスタ中のデータと、前記FAレジスタ中の値とを、前記演算器に送るステップ;
(3)前記演算器の出力を前記デルタレジスタに格納するステップ;
(4)前記FAキューが空でなく、かつ、前記FAキューのデータが、それ以前と同じアドレスへのアクセスを行うものであるときは、FAキューを一つ進めて、前記(1)〜(3)の操作を行うステップ;
(5)前記FAキューが空であるか、または、前記キューのデータが、それ以前のものとは異なるアドレスへのアクセスを行うものであるときは、前記デルタレジスタ中のデータを前記メモリに同期変数として書き戻すステップ。
【0008】
請求項3記載の論理回路は、請求項1または2に記載のものにおいて、さらにパスセレクタを備え、前記パスセレクタは、前記デルタレジスタ中のデータを前記メモリおよび前記演算器のいずれかに送るかを選択するように構成されている。
【0009】
請求項4記載の演算方法は、FAキューと、FAレジスタと、演算器と、デルタレジスタと、メモリと、FAコントローラとを備えた論理回路を用いる。前記FAキューは、複数のデータが書き込まれるものであり、前記デルタレジスタは、前記演算器からの出力を格納するものであり、前記メモリは、同期変数を格納するものである。さらに、この演算方法は、以下のステップを備えている。
(1)FAキューの先頭のデータをFAレジスタに送るステップ;
(2)前記同期変数または前記デルタレジスタ中のデータと、前記FAレジスタ中の値とを、前記演算器に送るステップ;
(3)前記演算器の出力を前記デルタレジスタに格納するステップ;
(4)前記FAキューが空であるか、または、前記FAキューのデータが、それ以前のものとは異なるアドレスへのアクセスを行うものであるときは、前記デルタレジスタ中のデータを前記メモリに同期変数として書き戻すステップ。
【0010】
請求項5記載の演算方法は、FAキューと、FAレジスタと、演算器と、デルタレジスタと、メモリと、FAコントローラとを備えた論理回路を用いる。前記FAキューは、複数のデータが書き込まれるものであり、前記デルタレジスタは、前記演算器からの出力を格納するものであり、前記メモリは、同期変数を格納するものである。さらに、この演算方法は、以下のステップを備えている。
(1)FAキューの先頭のデータをFAレジスタに送るステップ;
(2)前記同期変数または前記デルタレジスタ中のデータと、前記FAレジスタ中の値とを、前記演算器に送るステップ;
(3)前記演算器の出力を前記デルタレジスタに格納するステップ;
(4)前記FAキューが空でなく、かつ、前記FAキューのデータが、それ以前と同じアドレスへのアクセスを行うものであるときは、FAキューを一つ進めて、前記(1)〜(3)の操作を行うステップ;
(5)前記FAキューが空であるか、または、前記FAキューのデータが、それ以前のものとは異なるアドレスへのアクセスを行うものであるときは、前記デルタレジスタ中のデータを前記メモリに同期変数として書き戻すステップ。
【0011】
請求項6記載のコンピュータプログラムは、請求項4または5記載の演算方法をコンピュータに実行させるものである。
【0012】
請求項7記載の論理回路は、請求項1〜3のいずれか1項記載のものにおいて、前記演算器を加算器としている。
【0013】
請求項8記載の演算方法は、請求項4または5記載のものにおいて、前記演算器を加算器としている。
【0014】
請求項9記載のコンピュータプログラムは、請求項6記載のものにおいて、前記演算器を加算器としている。
【0015】
【発明の実施の形態】
本発明の実施形態に係る論理回路を、添付の図面を参照しながら説明する。まず、図1に基づいて、論理回路の構成を説明する。
【0016】
この論理回路は、FAキュー1と、FAレジスタ2と、演算器の一例としての加算器3と、デルタレジスタ4と、パスセレクタ5と、メモリ6と、FAコントローラ7とを主要な構成として備えている。
【0017】
FAキュー1は、複数のデータ(値)が、一定の順序で書き込まれるものである。例えば、0番にデータ01、2番にデータ03、3番にデータ1F、というように書き込まれて格納される。
【0018】
FAレジスタ2は、次の二つの機能を有する。第1は、FAキュー1からデータを取得して、加算器3に送る機能である。第2は、デルタレジスタ4のデータを、パスセレクタ5を介して受け取り、FAキュー1に返す機能である。
【0019】
加算器3は、入力された値(正でも負でもよい)を加算し、結果をデルタレジスタ4に送るものである。
【0020】
デルタレジスタ4は、加算器3からの出力を格納するものである。デルタレジスタ4は、加算器3の出力側に接続されている。デルタレジスタ4は、パスセレクタ5を介してメモリ6に接続されている。
【0021】
パスセレクタ5は、デルタレジスタ4のデータを、メモリ6、加算器3またはFAレジスタ2に、選択的に送るものである。パスセレクタ5は、FAコントローラ7からの選択信号に応じて、一つの入力を、二つの出力端子のいずれか一方に出力するものである。このとき、出力されない端子は、回路の誤動作を防ぐため、ハイインピーダンス状態とする。このような構成のパスセレクタ5を構成するための回路の例を、ハードウエア記述言語(HDL)を用いて、図5に記載した。
【0022】
メモリ6は、同期変数(セマフォ)を格納するものである。メモリ6は、加算器3に同期変数を送ることができるようになっている。
【0023】
FAコントローラ7は、論理回路全体の動作を制御するものである。FAコントローラ7の動作を以下に説明する。
【0024】
まず、初回の動作を、図2に基づいて説明する。はじめに、FAキュー1に、並列に動作する複数のプロセッサ(図示せず)からのデータをそれぞれ格納する(ステップ2−1)。ついで、FAキュー1の先頭のデータを、FAレジスタ2に送る(ステップ2−2)。
【0025】
ついで、メモリ6に格納された同期変数(セマフォ)と、FAレジスタ2に格納されたデータとを、加算器3に送る(ステップ2−3)。加算器3は、両者を加算して出力する。ついで、加算器3の出力を、デルタレジスタ4に格納する(ステップ2−4)。
【0026】
ついで、パスセレクタ5を介して、FAレジスタ2に、デルタレジスタ4のデータを返す(ステップ2−5)。このとき、FAコントローラ7は、パスセレクタ5の出力端として、メモリ6側でなく、FAレジスタ2側を予め選択しておく。
【0027】
ついで、FAレジスタ2のデータを、FAキュー1に返す(ステップ2−6)。このデータが、最初のデータをFAキュー1に格納したプロセッサにおける処理結果となる。ついで、FAキュー1を一つ進める(ステップ2−7)。つまり、次のデータを送ることができるようになる。
【0028】
つぎに、2回目以降の動作を、図3に基づいて説明する。まず、FAキュー1が空でないかどうかを確認する(ステップ3−1)。空でなければ、FAキュー1の先頭のデータをFAレジスタ2に送る(ステップ3−2)。ここで、先頭のデータとは、前記したステップ2−7で一つ進められたものである。したがって、初回から数えれば、これは、2番目のデータである。
【0029】
ついで、デルタレジスタ4のデータとFAレジスタ2のデータとを、加算器3に送る(ステップ3−3)。すなわち、このときは、FAコントローラ7は、パスセレクタ5の出力端として、メモリ6側でなく、加算器3側を予め選択しておく。ついで、加算器3の出力を、デルタレジスタ4に格納する(ステップ3−4)。
【0030】
ついで、FAレジスタ2に、デルタレジスタ4の値を返す(ステップ3−5)。すなわち、このときは、FAコントローラ7は、パスセレクタ5の出力端として、メモリ6側でなく、FAレジスタ2側を予め選択しておく。ついで、前記したステップ2−6および2−7と同様の動作を行う(ステップ3−6および3−7)。ついで、再び、ステップ3−1に戻る。これにより、各プロセッサからFAキュー1に格納されたデータを逐次処理できるとともに、処理した結果を各プロセッサに逐次的に返すことができる。
【0031】
このように処理を進めた結果、FAキュー1が空(つまり処理すべきデータがなくなった状態)になると、ステップ3−1の判断がNoとなる。このときは、デルタレジスタ4のデータをメモリ6に同期変数として書き戻す(ステップ3−8)。また、このときは、FAコントローラ7は、パスセレクタ5の出力端として、メモリ6側を予め選択しておく。
【0032】
なお、図3には明記していないが、もし、FAキュー1のデータが、それ以前のものとは異なるメモリアドレスへのアクセスを行うものであるときは、ステップ3−1から直ちにステップ3−8に移行することが望ましい。
前記した動作の具体例を、念のために、擬似コード(pseudo code)を用いて図4に記述した。
【0033】
また、本実施形態の論理回路を用いた演算方法は、前記したFAコントローラ7の動作説明から明らかなので、説明を省略する。
【0034】
本実施形態の論理回路によれば、加算器3の出力側にデルタレジスタ4を接続したため、煩雑なデータパスやハードウエアを用いずに、FA命令を実行できるという利点がある。
【0035】
したがって、本実施形態の論理回路によれば、FA命令実行のためのハードウエアを容易に実装することが可能となる。
【0036】
また、本実施形態の論理回路によれば、FA命令実行の最初と最後にのみ、メモリ6にアクセスするので、メモリアクセス回数が少ない。メモリアクセスは、プロセッサの動作に比較して遅いため、メモリアクセス回数を減らすことにより、命令実行速度の向上が期待できる。
【0037】
なお、前記各実施形態の記載は単なる一例に過ぎず、本発明に必須の構成を示したものではない。各部の構成は、本発明の趣旨を達成できるものであれば、上記に限らない。例えば、前記した実施形態では、演算器の例として加算器を示した。しかしながら、演算器としては、論理演算器であってもよい。
また、本明細書においては、FA(Fetch and Add)命令を、論理演算処理を含めた概念として用いている。
【0038】
【発明の効果】
本発明によれば、比較的に簡易な構成でFA命令を実行できる論理回路を提供することができる。
【図面の簡単な説明】
【図1】本発明の一実施形態に係る論理回路の概略的な構成を示すブロック図である。
【図2】本発明の一実施形態に係る論理回路における演算手順を説明するためのフローチャートである。
【図3】本発明の一実施形態に係る論理回路における演算手順を説明するためのフローチャートである。
【図4】本発明の一実施形態に係る論理回路における演算手順の一具体例を擬似コードで記述した説明図である。
【図5】本発明の一実施形態に係る論理回路に用いるパスセレクタの回路構成例をハードウエア記述言語(HDL)で記述した説明図である。
【符号の説明】
1 FAキュー
2 FAレジスタ
3 加算器(演算器)
4 デルタレジスタ
5 パスセレクタ
6 メモリ
7 FAコントローラ
Claims (9)
- FAキューと、FAレジスタと、演算器と、デルタレジスタと、メモリと、FAコントローラとを備えており、前記FAキューは、複数のデータが書き込まれるものであり、前記デルタレジスタは、前記演算器からの出力を格納するものであり、前記メモリは、同期変数を格納するものであり、前記コントローラは、以下のステップを実行することを特徴とする論理回路:
(1)FAキューの先頭のデータをFAレジスタに送るステップ;
(2)前記同期変数または前記デルタレジスタ中のデータと、前記FAレジスタ中の値とを、前記演算器に送るステップ;
(3)前記演算器の出力を前記デルタレジスタに格納するステップ;
(4)前記FAキューが空であるか、または、前記FAキューのデータが、それ以前のものとは異なるアドレスへのアクセスを行うものであるときは、前記デルタレジスタ中のデータを前記メモリに同期変数として書き戻すステップ。 - FAキューと、FAレジスタと、演算器と、デルタレジスタと、メモリと、FAコントローラとを備えており、前記FAキューは、複数のデータが書き込まれるものであり、前記デルタレジスタは、前記演算器からの出力を格納するものであり、前記メモリは、同期変数を格納するものであり、前記コントローラは、以下のステップを実行することを特徴とする論理回路:
(1)FAキューの先頭のデータをFAレジスタに送るステップ;
(2)前記同期変数または前記デルタレジスタ中のデータと、前記FAレジスタ中の値とを、前記演算器に送るステップ;
(3)前記演算器の出力を前記デルタレジスタに格納するステップ;
(4)前記FAキューが空でなく、かつ、前記FAキューのデータが、それ以前と同じアドレスへのアクセスを行うものであるときは、FAキューを一つ進めて、前記(1)〜(3)の操作を行うステップ;
(5)前記FAキューが空であるか、または、前記キューのデータが、それ以前のものとは異なるアドレスへのアクセスを行うものであるときは、前記デルタレジスタ中のデータを前記メモリに同期変数として書き戻すステップ。 - さらにパスセレクタを備え、前記パスセレクタは、前記デルタレジスタ中のデータを前記メモリおよび前記演算器のいずれかに送るかを選択するものであることを特徴とする請求項1または2に記載の論理回路。
- FAキューと、FAレジスタと、演算器と、デルタレジスタと、メモリと、FAコントローラとを備えた論理回路を用い、前記FAキューは、複数のデータが書き込まれるものであり、前記デルタレジスタは、前記演算器からの出力を格納するものであり、前記メモリは、同期変数を格納するものであり、さらに、以下のステップを備えたことを特徴とする演算方法:
(1)FAキューの先頭のデータをFAレジスタに送るステップ;
(2)前記同期変数または前記デルタレジスタ中のデータと、前記FAレジスタ中の値とを、前記演算器に送るステップ;
(3)前記演算器の出力を前記デルタレジスタに格納するステップ;
(4)前記FAキューが空であるか、または、前記FAキューのデータが、それ以前のものとは異なるアドレスへのアクセスを行うものであるときは、前記デルタレジスタ中のデータを前記メモリに同期変数として書き戻すステップ。 - FAキューと、FAレジスタと、演算器と、デルタレジスタと、メモリと、FAコントローラとを備えた論理回路を用い、前記FAキューは、複数のデータが書き込まれるものであり、前記デルタレジスタは、前記演算器からの出力を格納するものであり、前記メモリは、同期変数を格納するものであり、さらに、以下のステップを備えたことを特徴とする演算方法:
(1)FAキューの先頭のデータをFAレジスタに送るステップ;
(2)前記同期変数または前記デルタレジスタ中のデータと、前記FAレジスタ中の値とを、前記演算器に送るステップ;
(3)前記演算器の出力を前記デルタレジスタに格納するステップ;
(4)前記FAキューが空でなく、かつ、前記FAキューのデータが、それ以前と同じアドレスへのアクセスを行うものであるときは、FAキューを一つ進めて、前記(1)〜(3)の操作を行うステップ;
(5)前記FAキューが空であるか、または、前記FAキューのデータが、それ以前のものとは異なるアドレスへのアクセスを行うものであるときは、前記デルタレジスタ中のデータを前記メモリに同期変数として書き戻すステップ。 - 請求項4または5記載の演算方法をコンピュータに実行させるためのコンピュータプログラム。
- 前記演算器は加算器であることを特徴とする請求項1〜3のいずれか1項記載の論理回路。
- 前記演算器は加算器であることを特徴とする請求項4または5記載の演算方法。
- 前記演算器は加算器であることを特徴とする請求項6記載のコンピュータプログラム。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2002026663A JP3855069B2 (ja) | 2002-02-04 | 2002-02-04 | 論理回路 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2002026663A JP3855069B2 (ja) | 2002-02-04 | 2002-02-04 | 論理回路 |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2003228482A JP2003228482A (ja) | 2003-08-15 |
JP3855069B2 true JP3855069B2 (ja) | 2006-12-06 |
Family
ID=27748429
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2002026663A Expired - Fee Related JP3855069B2 (ja) | 2002-02-04 | 2002-02-04 | 論理回路 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP3855069B2 (ja) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7275148B2 (en) * | 2003-09-08 | 2007-09-25 | Freescale Semiconductor, Inc. | Data processing system using multiple addressing modes for SIMD operations and method thereof |
-
2002
- 2002-02-04 JP JP2002026663A patent/JP3855069B2/ja not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
JP2003228482A (ja) | 2003-08-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP3776653B2 (ja) | 演算処理装置 | |
NZ201809A (en) | Microprocessor | |
US20070260857A1 (en) | Electronic Circuit | |
JP3541623B2 (ja) | データ処理装置 | |
JP3855069B2 (ja) | 論理回路 | |
JPH04215129A (ja) | 連続指令実行方法及び装置 | |
JPH09212360A (ja) | データ処理装置 | |
JP2503984B2 (ja) | 情報処理装置 | |
JP3520372B2 (ja) | メモリ制御ユニット並びに入出力制御ユニットの動作におけるクリティカル・パスの削除 | |
JPS6315628B2 (ja) | ||
US20050272197A1 (en) | Semiconductor device | |
JPH08272608A (ja) | パイプライン処理装置 | |
JP3526773B2 (ja) | マルチプロセッサ装置およびその制御方法 | |
JPH09146769A (ja) | パイプライン処理装置 | |
JP2747353B2 (ja) | アドレス発生装置 | |
JP2503983B2 (ja) | 情報処理装置 | |
JP2001092658A (ja) | データ処理回路及びデータ処理装置 | |
JPS60105050A (ja) | パイプライン制御方式 | |
JP2000029508A (ja) | プログラマブルコントローラ | |
KR100631396B1 (ko) | 반도체장치 | |
JP3743155B2 (ja) | パイプライン制御型計算機 | |
JPH02181859A (ja) | コプロセッサ・インタフェース回路 | |
JPH02217924A (ja) | データ処理装置のストア処理方式 | |
JPH0222750A (ja) | アドレス変換方式 | |
JPH02112054A (ja) | データ処理装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20050201 |
|
A711 | Notification of change in applicant |
Free format text: JAPANESE INTERMEDIATE CODE: A711 Effective date: 20050201 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A821 Effective date: 20050201 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20050412 |
|
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: 20060817 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20060821 |
|
R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20100922 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110922 Year of fee payment: 5 |
|
LAPS | Cancellation because of no payment of annual fees |