JP5118745B2 - メモリアクセス命令のベクトル化 - Google Patents
メモリアクセス命令のベクトル化 Download PDFInfo
- Publication number
- JP5118745B2 JP5118745B2 JP2010286239A JP2010286239A JP5118745B2 JP 5118745 B2 JP5118745 B2 JP 5118745B2 JP 2010286239 A JP2010286239 A JP 2010286239A JP 2010286239 A JP2010286239 A JP 2010286239A JP 5118745 B2 JP5118745 B2 JP 5118745B2
- Authority
- JP
- Japan
- Prior art keywords
- memory
- memory access
- instruction
- data processing
- processor
- 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
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)
Description
1−同じメモリバンクにサブノードとしてアクセスする
2−同じメモリ操作(読み出し又は書き込み)をサブノードのメモリ操作特性として記述する
(1)最終マッチセットは、ノード内の全てのメモリ操作を補う最小数のマッチを含む。
(2)ノードに現れる、各メモリ操作は、最終マッチセットに属する、1つのマッチにのみ現れることが出来る。
(3)2つのパターンマッチが同じ数のマッチしたフラグメントを含む場合、より少ないインスタンス化されたフラグメントを持つマッチが選択される。
最終マッチセットの全てのマッチが1フラグメントのマッチの場合、メモリベクトル化の機会は、識別されない。
Claims (26)
- データ処理装置上でプログラムを実行することにより実現され、記憶デバイスに格納された対象ソースコードにおける、2つ又はそれ以上のメモリアクセス命令を1つのシングルメモリアクセス命令に結合させる方法であって、
前記データ処理装置のプロセッサの動作により、当該ソースコード内の複数のメモリアクセス命令を、フォーマットパスにおいて、最小データアクセス単位(MDAU)より少ない読み出し又は書き込みを規定する各メモリ命令を、最小データアクセス単位を読み出し又は書き込みするメモリアクセス命令に変換し、次のパスにおいて、最小データアクセス単位を読み出し又は書き込みするメモリアクセス命令を標準フォーマットメモリアクセス命令に対応する、ベースアドレスにオフセットを加えた形式を含むフォーマットに変換する段階と、
前記データ処理装置のプロセッサの動作により、特定のメモリバンクへ対応する標準フォーマットメモリアクセス命令の組を有する複数のメモリアクセスパーティションを生成する段階と、
前記データ処理装置のプロセッサの動作により、予め定義された複数の命令パターンと、前記複数のメモリアクセスパーティション内の複数の標準フォーマットメモリアクセス命令とを比較し、複数のマッチを有するマッチセットを生成する段階と、
前記データ処理装置のプロセッサの動作により、前記マッチセットを複数のメモリアクセス命令を結合したベクトルメモリアクセス命令に変形する段階と
を備える方法。 - 前記複数のメモリアクセスパーティションを生成する段階が、
前記データ処理装置のプロセッサの動作により、前記複数のメモリアクセス命令を含む複数の基本ブロックを有するデータフローグラフを生成する段階と、
前記データ処理装置のプロセッサの動作により、各基本ブロックにルール群を適用する段階と
を有する請求項1に記載の方法。 - 前記適用する段階が、前記データ処理装置のプロセッサの動作により、1つのメモリアクセスパーティション内の1つのサブノードを、1種類の特定メモリバンクを対象にする複数のメモリアクセス命令に制限する段階を含む請求項2に記載の方法。
- 前記適用する段階が、前記データ処理装置のプロセッサの動作により、1つのメモリアクセスパーティション内の前記1つのサブノードを、1つのメモリ読み出し又はメモリ書き込みに制限する段階をさらに含む請求項3に記載の方法。
- 前記メモリバンクが、静的ランダムアクセスメモリ(SRAM)である請求項3または4に記載の方法。
- 前記メモリバンクが、動的ランダムアクセスメモリ(DRAM)である請求項3または4に記載の方法。
- 前記メモリバンクが、スクラッチパッドメモリである請求項3または4に記載の方法。
- 前記メモリバンクが、EEPROM(登録商標)である請求項3または4に記載の方法。
- 前記メモリバンクが、フラッシュメモリである請求項3または4に記載の方法。
- 前記メモリバンクが、NVRAMである請求項3または4に記載の方法。
- 前記複数の命令パターンが、命令セマンティクスを記述するパターンを有する請求項1から10のいずれか一項に記載の方法。
- 前記ベクトルメモリアクセス命令が、ある種のメモリへの複数のメモリアクセスを表す、シングルメモリアクセス命令である請求項1から11のいずれか一項に記載の方法。
- 前記ベクトルメモリアクセス命令に変形する段階は、特定のメモリバンクを対象とするメモリアクセス命令に対して、前記マッチセットを独立にベクトルメモリアクセス命令に変換する、請求項1から12のいずれか一項に記載の方法。
- データ処理装置上でコンパイラプログラムを実行することにより実現され、記憶デバイスに格納された対象ソースコードにおける、2つ又はそれ以上のメモリアクセス命令を1つのシングルメモリアクセス命令に結合させるコンパイル方法であって、
前記データ処理装置のプロセッサの動作により、前記コンパイラプログラムのフォーマットパスにおいて、最小データアクセス単位(MDAU)より小さい読み出し又は書き込みの複数のメモリアクセス命令を、最小データアクセス単位を読み出す又は書き込む複数のメモリアクセス命令に変換する段階と、
前記データ処理装置のプロセッサの動作により、前記コンパイラプログラムの次のパスにおいて、前記複数のメモリアクセス命令を、ベースアドレスにオフセットを加算する形式に変換する段階と、
前記データ処理装置のプロセッサの動作により、前記変換されたメモリアクセス命令の複数のサブセットを、複数のパーティションにグループ化する段階と、
前記データ処理装置のプロセッサの動作により、予め定義された複数の命令パターンと、前記複数のサブセット内の前記変換されたメモリアクセス命令とを比較し、複数のマッチを有するマッチセットを生成する段階と、
前記データ処理装置のプロセッサの動作により、前記マッチセットを複数のメモリアクセス命令を結合したベクトルメモリアクセス命令に変形しベクトル化する段階と
を備えるコンパイル方法。 - 前記グループ化する段階が、前記データ処理装置のプロセッサの動作により、複数のメモリアクセス命令を含む複数の基本ブロックを有するデータフローグラフを生成する段階と、
前記データ処理装置のプロセッサの動作により、複数のパーティション内の、1つのメモリバンクを対象とし且つ同じ操作を実行する複数のメモリアクセス命令を有する、複数のサブノードを生成する段階と
を有する請求項14に記載のコンパイル方法。 - 前記操作が、読み出しである請求項15に記載のコンパイル方法。
- 前記操作が、書き込みである請求項15に記載のコンパイル方法。
- 前記メモリバンクが、静的ランダムアクセスメモリ(SRAM)である請求項15から17のいずれか一項に記載のコンパイル方法。
- 前記メモリバンクが、動的ランダムアクセスメモリ(DRAM)である請求項15から17のいずれか一項に記載のコンパイル方法。
- 前記メモリバンクが、スクラッチパッドメモリである請求項15から17のいずれか一項に記載のコンパイル方法。
- 前記メモリバンクが、EEPROM(登録商標)である請求項15から17のいずれか一項に記載のコンパイル方法。
- 前記メモリバンクが、フラッシュメモリである請求項15から17のいずれか一項に記載のコンパイル方法。
- 前記メモリバンクが、NVRAMである請求項15から17のいずれか一項に記載のコンパイル方法。
- 前記複数の命令パターンが、命令セマンティクスを有する請求項14から23のいずれか一項に記載のコンパイル方法。
- 前記命令セマンティクスが、複数のセグメントを含む請求項24に記載のコンパイル方法。
- 前記データ処理装置に、請求項1から25のいずれか一項に記載の方法を実行させるためのプログラム。
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 JP2011118909A (ja) | 2011-06-16 |
JP5118745B2 true 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 |
Family Cites Families (28)
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 | オブジェクトプログラム削減方式 |
JP3338466B2 (ja) * | 1991-11-05 | 2002-10-28 | 富士通株式会社 | 主記憶アクセス最適化処理装置 |
JPH06230977A (ja) | 1993-02-05 | 1994-08-19 | Nec Corp | 言語処理装置 |
JP2987311B2 (ja) | 1995-05-12 | 1999-12-06 | 松下電器産業株式会社 | プロセッサ及び翻訳装置 |
JPH08328870A (ja) * | 1995-05-30 | 1996-12-13 | Fujitsu Ltd | コンパイル処理装置 |
JPH09282177A (ja) * | 1996-04-12 | 1997-10-31 | Hitachi Ltd | プログラム変換方法およびコンパイラ |
US6151705A (en) * | 1997-10-30 | 2000-11-21 | Hewlett-Packard Company | Efficient use of the base register auto-increment feature of memory access instructions |
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 |
JP4020500B2 (ja) * | 1998-07-03 | 2007-12-12 | 富士通株式会社 | メモリアクセス命令削減装置および記録媒体 |
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 |
JP2003131887A (ja) * | 2001-10-25 | 2003-05-09 | Hitachi Ltd | 変数ロードおよび処理の一括化コンパイル方法 |
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 EP EP03819015A patent/EP1685491A4/en not_active Withdrawn
- 2003-11-24 JP JP2005510683A patent/JP2007536599A/ja active Pending
- 2003-11-24 AU AU2003304556A patent/AU2003304556A1/en not_active Abandoned
- 2003-11-24 CN CNB2003801109938A patent/CN100414514C/zh not_active Expired - Fee Related
- 2003-11-24 WO PCT/CN2003/000989 patent/WO2005050451A1/en not_active Application Discontinuation
-
2010
- 2010-12-22 JP JP2010286239A patent/JP5118745B2/ja not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
EP1685491A1 (en) | 2006-08-02 |
JP2007536599A (ja) | 2007-12-13 |
AU2003304556A1 (en) | 2005-06-08 |
CN100414514C (zh) | 2008-08-27 |
CN1894674A (zh) | 2007-01-10 |
US7457936B2 (en) | 2008-11-25 |
JP2011118909A (ja) | 2011-06-16 |
WO2005050451A1 (en) | 2005-06-02 |
US20050108499A1 (en) | 2005-05-19 |
EP1685491A4 (en) | 2008-03-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP5118745B2 (ja) | メモリアクセス命令のベクトル化 | |
JP4640683B2 (ja) | プログラムコード変換方法 | |
US7647473B2 (en) | Instruction processing method for verifying basic instruction arrangement in VLIW instruction for variable length VLIW processor | |
US6738966B1 (en) | Compiling device, computer-readable recording medium on which a compiling program is recorded and a compiling method | |
JP4632666B2 (ja) | コンパイラ生成プログラムコードの最適化 | |
US20220237041A1 (en) | Parallel processing system performing in-memory processing | |
US8266416B2 (en) | Dynamic reconfiguration supporting method, dynamic reconfiguration supporting apparatus, and dynamic reconfiguration system | |
US20220214866A1 (en) | Merged machine-level intermediate representation optimizations | |
US10528365B2 (en) | Function evaluation using multiple values loaded into registers by a single instruction | |
US6016398A (en) | Method for using static single assignment to color out artificial register dependencies | |
CN107408054B (zh) | 设备中的流控制的方法和计算机可读介质 | |
US20070169028A1 (en) | Partitioning of non-volatile memories for vectorization | |
US7356812B2 (en) | Passing parameters by implicit reference | |
EP0947922A2 (en) | Compiler | |
JP2000353097A (ja) | 低密回の干渉グラフを生成する方法および装置 | |
US20080077912A1 (en) | Software development methods, systems, and storage media storing software developed thereby | |
JP4626032B2 (ja) | プログラム変換装置,プログラム変換方法及び記録媒体 | |
JPH11345127A (ja) | コンパイラ | |
US7676799B1 (en) | Address simplification by binary transformation | |
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 | |
JPH0675987A (ja) | ループ変換方法 | |
Brook | Fortran 95 support in GCC | |
V'yukova et al. | Effective code generation for processor architectures with explicit parallelism |
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 |