JP2011118909A - メモリアクセス命令のベクトル化 - Google Patents
メモリアクセス命令のベクトル化 Download PDFInfo
- Publication number
- JP2011118909A JP2011118909A JP2010286239A JP2010286239A JP2011118909A JP 2011118909 A JP2011118909 A JP 2011118909A JP 2010286239 A JP2010286239 A JP 2010286239A JP 2010286239 A JP2010286239 A JP 2010286239A JP 2011118909 A JP2011118909 A JP 2011118909A
- Authority
- JP
- Japan
- Prior art keywords
- memory
- memory access
- access instructions
- read
- instructions
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
Landscapes
- Engineering & Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Devices For Executing Special Programs (AREA)
Abstract
【解決手段】最小データアクセス単位(MDAU)より小さい読み出し又は書き込みの複数のメモリアクセス命令を、複数の最小データアクセス単位を読み出す又は書き込む複数のメモリアクセス命令に変換する段階102と、複数のメモリアクセス命令をベースアドレスにオフセットを加算する形式に変換する段階104と、変換された複数のメモリアクセス命令の複数のサブセットを複数のパーティションにグループ化する段階106と、複数の命令パターンとマッチする複数のサブセット内の複数の変換されたメモリアクセス命令をベクトル化する段階108とを備える。
【選択図】図2
Description
1−同じメモリバンクにサブノードとしてアクセスする
2−同じメモリ操作(読み出し又は書き込み)をサブノードのメモリ操作特性として記述する
(1)最終マッチセットは、ノード内の全てのメモリ操作を補う最小数のマッチを含む。
(2)ノードに現れる、各メモリ操作は、最終マッチセットに属する、1つのマッチにのみ現れることが出来る。
(3)2つのパターンマッチが同じ数のマッチしたフラグメントを含む場合、より少ないインスタンス化されたフラグメントを持つマッチが選択される。
最終マッチセットの全てのマッチが1フラグメントのマッチの場合、メモリベクトル化の機会は、識別されない。
Claims (30)
- ソースコード内の複数のメモリアクセス命令を、標準フォーマットに変換する段階と、
フォーマットされた複数のメモリアクセス命令を有する複数のパーティションを生成する段階と、
複数の命令パターンと、前記複数のパーティション内の前記複数のフォーマット化されたメモリアクセス命令との、複数のマッチを有するマッチセットを生成する段階と、
前記複数のマッチを複数のベクトルメモリアクセス命令に変形する段階と
を備える方法。 - 変換する段階が、最小データアクセス単位(MDAU)より小さい読み出し又は書き込みの複数のメモリアクセス命令を、複数の最小データアクセス単位を読み出す又は書き込む複数のメモリアクセス命令に変換する段階を有する請求項1に記載の方法。
- 変換する段階が、前記複数の最小データアクセス単位を読み出す又は書き込む前記複数のメモリアクセス命令を、ベースアドレスにオフセットを加算する形式に変形する段階をさらに有する請求項2に記載の方法。
- 複数のパーティションを生成する段階が、
前記複数のメモリアクセス命令を含む複数の基本ブロックを有するデータフローグラフを生成する段階と、
各基本ブロックにルール群を適用する段階と
を有する請求項1に記載の方法。 - 適用する段階が、1つのパーティション内の1つのサブノードを、1種類の特定メモリバンクを対象にする複数のメモリアクセス命令に制限する段階を含む請求項4に記載の方法。
- 適用する段階が、1つのパーティション内の前記1つのサブノードを、1つのメモリ読み出し又はメモリ書き込みに制限する段階をさらに含む請求項5に記載の方法。
- 前記メモリバンクが、静的ランダムアクセスメモリ(SRAM)である請求項5に記載の方法。
- 前記メモリバンクが、動的ランダムアクセスメモリ(DRAM)である請求項5に記載の方法。
- 前記メモリバンクが、スクラッチパッドメモリである請求項5に記載の方法。
- 前記メモリバンクが、EEPROMである請求項5に記載の方法。
- 前記メモリバンクが、フラッシュメモリである請求項5に記載の方法。
- 前記メモリバンクが、NVRAMである請求項5に記載の方法。
- 前記複数の命令パターンが、命令セマンティクスを記述するパターンを有する請求項1に記載の方法。
- 前記複数のベクトルメモリアクセス命令が、ある種のメモリへの複数のメモリアクセスを表す、複数のシングルメモリアクセス命令を有する請求項1に記載の方法。
- コンパイル方法であって、
最小データアクセス単位(MDAU)より小さい読み出し又は書き込みの複数のメモリアクセス命令を、複数の最小データアクセス単位を読み出す又は書き込む複数のメモリアクセス命令に変換する段階と、
前記複数のメモリアクセス命令を、ベースアドレスにオフセットを加算する形式に変換する段階と、
前記複数の変換されたメモリアクセス命令の複数のサブセットを、複数のパーティションにグループ化する段階と、
複数の命令パターンとマッチする、前記複数のサブセット内の前記複数の変換されたメモリアクセス命令を、ベクトル化する段階と
を備えるコンパイル方法。 - 前記コンパイル方法であって、
グループ化する段階が、複数のメモリアクセス命令を含む複数の基本ブロックを有するデータフローグラフを生成する段階と、
複数のパーティション内の、1つのメモリバンクを対象とし且つ同じ操作を実行する複数のメモリアクセス命令を有する、複数のサブノードを生成する段階と
を有する請求項15に記載のコンパイル方法。 - 前記操作が、読み出しである請求項16に記載のコンパイル方法。
- 前記操作が、書き込みである請求項16に記載のコンパイル方法。
- 前記メモリバンクが、静的ランダムアクセスメモリ(SRAM)である請求項16に記載のコンパイル方法。
- 前記メモリバンクが、動的ランダムアクセスメモリ(DRAM)である請求項16に記載のコンパイル方法。
- 前記メモリバンクが、スクラッチパッドメモリである請求項16に記載のコンパイル方法。
- 前記メモリバンクが、EEPROMである請求項16に記載のコンパイル方法。
- 前記メモリバンクが、フラッシュメモリである請求項16に記載のコンパイル方法。
- 前記メモリバンクが、NVRAMである請求項16に記載のコンパイル方法。
- 前記複数の命令パターンが、命令セマンティクスを有する請求項15に記載のコンパイル方法。
- 前記命令セマンティクスが、複数のセグメントを含む請求項25に記載のコンパイル方法。
- 情報媒体内で明白に具現化され、複数のメモリアクセス命令をベクトル化するコンピュータプログラム製品であって、データ処理装置に、
ソースコードに存在する複数のメモリアクセス命令を標準形式に変換する手順と、
複数のフォーマットされたメモリアクセス命令を有する複数のパーティションを生成する手順と、
複数の命令パターンと、前記複数のサブセット内の前記複数のフォーマット化されたメモリアクセス命令との、複数のマッチを有するマッチセットを生成する手順と、
前記複数のマッチを複数のベクトルメモリアクセス命令に変形する手順
を実行させるコンピュータプログラム製品。 - 変換する手順が、最小データアクセス単位より小さい読み出し又は書き込みの複数のメモリアクセス命令を、複数の最小データアクセス単位を読み出す又は書き込む複数のメモリアクセス命令に変換する手順を有する請求項27に記載の製品。
- 変換する手順が、前記複数の最小データアクセス単位を読み出す又は書き込む前記複数のメモリアクセス命令を、ベースアドレスにオフセットを加算する形式に変形する手順をさらに有する請求項28に記載の製品。
- 複数のパーティションを生成する手順が、
複数のメモリアクセスを含む複数の基本ブロックを有するデータフローを生成する手順と、
複数のパーティション内の、1つのメモリバンクを対象とし且つ同じ操作を実行する複数のメモリアクセス命令を含む、複数サブノードを生成する手順と
を有する請求項27に記載の製品。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US10/718,283 | 2003-11-19 | ||
US10/718,283 US7457936B2 (en) | 2003-11-19 | 2003-11-19 | Memory access instruction vectorization |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2005510683A Division JP2007536599A (ja) | 2003-11-19 | 2003-11-24 | メモリアクセス命令のベクトル化 |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2011118909A true JP2011118909A (ja) | 2011-06-16 |
JP5118745B2 JP5118745B2 (ja) | 2013-01-16 |
Family
ID=34574661
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2005510683A Pending JP2007536599A (ja) | 2003-11-19 | 2003-11-24 | メモリアクセス命令のベクトル化 |
JP2010286239A Expired - Fee Related JP5118745B2 (ja) | 2003-11-19 | 2010-12-22 | メモリアクセス命令のベクトル化 |
Family Applications Before (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2005510683A Pending JP2007536599A (ja) | 2003-11-19 | 2003-11-24 | メモリアクセス命令のベクトル化 |
Country Status (6)
Country | Link |
---|---|
US (1) | US7457936B2 (ja) |
EP (1) | EP1685491A4 (ja) |
JP (2) | JP2007536599A (ja) |
CN (1) | CN100414514C (ja) |
AU (1) | AU2003304556A1 (ja) |
WO (1) | WO2005050451A1 (ja) |
Families Citing this family (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8281083B2 (en) * | 2005-06-30 | 2012-10-02 | Intel Corporation | Device, system and method of generating an execution instruction based on a memory-access instruction |
US8219786B1 (en) * | 2007-03-20 | 2012-07-10 | Nvidia Corporation | Request coalescing for instruction streams |
US9286256B2 (en) * | 2009-09-28 | 2016-03-15 | Nvidia Corporation | Sharing data crossbar for reads and writes in a data cache |
US8825982B2 (en) * | 2010-06-10 | 2014-09-02 | Global Supercomputing Corporation | Storage unsharing |
US20130113809A1 (en) * | 2011-11-07 | 2013-05-09 | Nvidia Corporation | Technique for inter-procedural memory address space optimization in gpu computing compiler |
JP5651622B2 (ja) * | 2012-03-07 | 2015-01-14 | 株式会社東芝 | データ伝送装置、データ伝送方法、及びプログラム |
CN103455280B (zh) * | 2012-05-31 | 2016-12-14 | 国际商业机器公司 | 用于执行存储器复制的方法和系统 |
CN102831004B (zh) * | 2012-07-13 | 2015-07-15 | 天津国芯科技有限公司 | 一种基于C*core处理器的优化编译方法及编译器 |
CN103207786B (zh) * | 2013-04-28 | 2016-03-23 | 中国人民解放军信息工程大学 | 渐进式智能回溯向量化代码调优方法 |
US9436450B2 (en) * | 2014-09-01 | 2016-09-06 | Freescale Semiconductor, Inc. | Method and apparatus for optimising computer program code |
US10180829B2 (en) * | 2015-12-15 | 2019-01-15 | Nxp Usa, Inc. | System and method for modulo addressing vectorization with invariant code motion |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS51853A (ja) * | 1974-06-21 | 1976-01-07 | Hitachi Ltd | Deetashorishisutemuno meireigoseisochi |
JPH02163831A (ja) * | 1988-12-16 | 1990-06-25 | Nec Corp | オブジェクトプログラム削減方式 |
JPH05127920A (ja) * | 1991-11-05 | 1993-05-25 | Fujitsu Ltd | 主記憶アクセス最適化処理方法 |
JPH08328870A (ja) * | 1995-05-30 | 1996-12-13 | Fujitsu Ltd | コンパイル処理装置 |
JPH09282177A (ja) * | 1996-04-12 | 1997-10-31 | Hitachi Ltd | プログラム変換方法およびコンパイラ |
JPH11194948A (ja) * | 1997-10-30 | 1999-07-21 | Hewlett Packard Co <Hp> | コンパイラ最適化アルゴリズム |
JP2000020318A (ja) * | 1998-07-03 | 2000-01-21 | Fujitsu Ltd | メモリアクセス命令削減装置および記録媒体 |
JP2003131887A (ja) * | 2001-10-25 | 2003-05-09 | Hitachi Ltd | 変数ロードおよび処理の一括化コンパイル方法 |
Family Cites Families (20)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH06230977A (ja) | 1993-02-05 | 1994-08-19 | Nec Corp | 言語処理装置 |
JP2987311B2 (ja) | 1995-05-12 | 1999-12-06 | 松下電器産業株式会社 | プロセッサ及び翻訳装置 |
US6356270B2 (en) * | 1998-03-31 | 2002-03-12 | Intel Corporation | Efficient utilization of write-combining buffers |
US6099585A (en) | 1998-05-08 | 2000-08-08 | Advanced Micro Devices, Inc. | System and method for streamlined execution of instructions |
EP1119805B8 (en) | 1998-10-10 | 2006-05-03 | Transitive Limited | Endian transformation |
US6434639B1 (en) * | 1998-11-13 | 2002-08-13 | Intel Corporation | System for combining requests associated with one or more memory locations that are collectively associated with a single cache line to furnish a single memory operation |
US6292938B1 (en) * | 1998-12-02 | 2001-09-18 | International Business Machines Corporation | Retargeting optimized code by matching tree patterns in directed acyclic graphs |
US6334171B1 (en) * | 1999-04-15 | 2001-12-25 | Intel Corporation | Write-combining device for uncacheable stores |
US6286134B1 (en) | 1999-04-23 | 2001-09-04 | Sun Microsystems, Inc. | Instruction selection in a multi-platform environment |
US6571319B2 (en) * | 1999-06-04 | 2003-05-27 | Sun Microsystems, Inc. | Methods and apparatus for combining a plurality of memory access transactions |
US6496905B1 (en) * | 1999-10-01 | 2002-12-17 | Hitachi, Ltd. | Write buffer with burst capability |
JP3936550B2 (ja) * | 2001-05-14 | 2007-06-27 | 富士通株式会社 | パケットバッファ |
US6681311B2 (en) * | 2001-07-18 | 2004-01-20 | Ip-First, Llc | Translation lookaside buffer that caches memory type information |
US6938127B2 (en) * | 2001-09-25 | 2005-08-30 | Intel Corporation | Reconfiguring memory to reduce boot time |
US20030217223A1 (en) * | 2002-05-14 | 2003-11-20 | Infineon Technologies North America Corp. | Combined command set |
US20040006667A1 (en) * | 2002-06-21 | 2004-01-08 | Bik Aart J.C. | Apparatus and method for implementing adjacent, non-unit stride memory access patterns utilizing SIMD instructions |
JP2004157695A (ja) * | 2002-11-06 | 2004-06-03 | Matsushita Electric Ind Co Ltd | 情報処理方法および情報処理装置 |
US7469316B2 (en) * | 2003-02-10 | 2008-12-23 | Intel Corporation | Buffered writes and memory page control |
US7085887B2 (en) * | 2003-08-21 | 2006-08-01 | Hewlett-Packard Development Company, L.P. | Processor and processor method of operation |
US7313788B2 (en) * | 2003-10-29 | 2007-12-25 | International Business Machines Corporation | Vectorization in a SIMdD DSP architecture |
-
2003
- 2003-11-19 US US10/718,283 patent/US7457936B2/en not_active Expired - Fee Related
- 2003-11-24 CN CNB2003801109938A patent/CN100414514C/zh not_active Expired - Fee Related
- 2003-11-24 AU AU2003304556A patent/AU2003304556A1/en not_active Abandoned
- 2003-11-24 JP JP2005510683A patent/JP2007536599A/ja active Pending
- 2003-11-24 WO PCT/CN2003/000989 patent/WO2005050451A1/en not_active Application Discontinuation
- 2003-11-24 EP EP03819015A patent/EP1685491A4/en not_active Withdrawn
-
2010
- 2010-12-22 JP JP2010286239A patent/JP5118745B2/ja not_active Expired - Fee Related
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS51853A (ja) * | 1974-06-21 | 1976-01-07 | Hitachi Ltd | Deetashorishisutemuno meireigoseisochi |
JPH02163831A (ja) * | 1988-12-16 | 1990-06-25 | Nec Corp | オブジェクトプログラム削減方式 |
JPH05127920A (ja) * | 1991-11-05 | 1993-05-25 | Fujitsu Ltd | 主記憶アクセス最適化処理方法 |
JPH08328870A (ja) * | 1995-05-30 | 1996-12-13 | Fujitsu Ltd | コンパイル処理装置 |
JPH09282177A (ja) * | 1996-04-12 | 1997-10-31 | Hitachi Ltd | プログラム変換方法およびコンパイラ |
JPH11194948A (ja) * | 1997-10-30 | 1999-07-21 | Hewlett Packard Co <Hp> | コンパイラ最適化アルゴリズム |
JP2000020318A (ja) * | 1998-07-03 | 2000-01-21 | Fujitsu Ltd | メモリアクセス命令削減装置および記録媒体 |
JP2003131887A (ja) * | 2001-10-25 | 2003-05-09 | Hitachi Ltd | 変数ロードおよび処理の一括化コンパイル方法 |
Also Published As
Publication number | Publication date |
---|---|
US7457936B2 (en) | 2008-11-25 |
JP2007536599A (ja) | 2007-12-13 |
EP1685491A1 (en) | 2006-08-02 |
CN1894674A (zh) | 2007-01-10 |
CN100414514C (zh) | 2008-08-27 |
EP1685491A4 (en) | 2008-03-19 |
WO2005050451A1 (en) | 2005-06-02 |
AU2003304556A1 (en) | 2005-06-08 |
US20050108499A1 (en) | 2005-05-19 |
JP5118745B2 (ja) | 2013-01-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP5118745B2 (ja) | メモリアクセス命令のベクトル化 | |
JP4640683B2 (ja) | プログラムコード変換方法 | |
US6925639B2 (en) | Method and system for register allocation | |
JP4041248B2 (ja) | コンパイラ装置、コンパイルプログラムが記録されたコンピュータ読み取り可能な記録媒体及びコンパイル方法 | |
JP6236093B2 (ja) | 並列パイプラインにおいてブランチを分岐するためのハードウェアおよびソフトウェアソリューション | |
US20220237041A1 (en) | Parallel processing system performing in-memory processing | |
JP4632666B2 (ja) | コンパイラ生成プログラムコードの最適化 | |
US20200117475A1 (en) | Function evaluation using multiple values loaded into registers by a single instruction | |
US8266416B2 (en) | Dynamic reconfiguration supporting method, dynamic reconfiguration supporting apparatus, and dynamic reconfiguration system | |
US6016398A (en) | Method for using static single assignment to color out artificial register dependencies | |
CN107408054B (zh) | 设备中的流控制的方法和计算机可读介质 | |
US7356812B2 (en) | Passing parameters by implicit reference | |
JP2000353097A (ja) | 低密回の干渉グラフを生成する方法および装置 | |
JPH11282814A (ja) | プログラム並列化方法及びその装置並びに並列化用プログラムを記録した記録媒体 | |
JPH11345127A (ja) | コンパイラ | |
US20220147442A1 (en) | Method for the execution of a computer program by an electronic computing device comprising a main memory and a secondary memory | |
JPH03135630A (ja) | 命令スケジューリング方式 | |
Shaikhha et al. | Using Destination-Passing Style to Compile a Functional Language into Efficient Low-Level Code | |
Goosey | A minipascal compiler for the e-machine | |
V'yukova et al. | Effective code generation for processor architectures with explicit parallelism | |
JPH0675987A (ja) | ループ変換方法 | |
JPH10301791A (ja) | オブジェクトコード最適化装置、オブジェクトコード最適化方法、オブジェクトコード最適化プログラムを記録した機械読み取り可能な記録媒体、及び、コンパイラ | |
JP2004021441A (ja) | プログラム処理装置及びプログラム処理方法、並びにコンピュータ・プログラム | |
JP2005100240A (ja) | コンパイラ | |
Aho et al. | Translation and code generation |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
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: 20121002 |
|
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: 20121019 |
|
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: 20151026 Year of fee payment: 3 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20151026 Year of fee payment: 3 |
|
LAPS | Cancellation because of no payment of annual fees |