JP2014515532A - 動的言語のハッシュテーブルのためのハードウェアサポート - Google Patents
動的言語のハッシュテーブルのためのハードウェアサポート Download PDFInfo
- Publication number
- JP2014515532A JP2014515532A JP2014513554A JP2014513554A JP2014515532A JP 2014515532 A JP2014515532 A JP 2014515532A JP 2014513554 A JP2014513554 A JP 2014513554A JP 2014513554 A JP2014513554 A JP 2014513554A JP 2014515532 A JP2014515532 A JP 2014515532A
- Authority
- JP
- Japan
- Prior art keywords
- hash table
- processor
- key
- dedicated hardware
- hardware
- 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
- G06F8/44—Encoding
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/30—Creation or generation of source code
- G06F8/31—Programming languages or programming paradigms
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/448—Execution paradigms, e.g. implementations of programming paradigms
- G06F9/4488—Object-oriented
- G06F9/4492—Inheritance
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computing Systems (AREA)
- Devices For Executing Special Programs (AREA)
- Advance Control (AREA)
- Executing Machine-Instructions (AREA)
- Stored Programmes (AREA)
Abstract
Description
本出願は、すべての目的のためにその内容全体が参照によって本明細書に組み込まれる、2011年5月27日に出願した「Hardware Support for Hashtables in Dynamic Languages」という名称の米国仮特許出願第61/491,075号の優先権の利益を主張する。
get r1,r2,r3 // r3=HASH[key(r1,r2)]
set r1,r2,r3 // HASH[key(r1,r2)]=r3
// z=o.x
ID1=StringtoIDHash["x"]; // first hash lookup
ID2=o.ID
ID3=IdToIndexHash[ID1,ID2] // second hash lookup
// Using the GET instruction
Z=o.Fields[ID3]
// o.x=z
ID1=StringtoIDHash["x"];
ID2=o.ID
ID3=IdToIndexHash[ID1,ID2] // Using the GET instruction
IF(ID3==-1){
ID3=o.Fields.Legth
IdToIndexHash[ID1,ID2]=ID3; // Using the SET instruction
}
o.Fields[ID3]=z
502 オペレーティングシステム
504 ハードウェア
506 「get」機械語命令レジスタ
508 「set」機械語命令レジスタ
510 専門のプロセッサ
512 コンパイラ
514 ソフトウェアハッシュテーブル
516 コンパイラハッシュモジュール
518 ハードウェアハッシュテーブル
520 CPU
522 算術論理ユニット(ALU)
524 浮動小数点ユニット(FPU)
528 ハードウェアハッシュテーブルインプリメンテーションユニット
530 ハードウェアアーキテクチャ
560 ハードウェアアーキテクチャ
590 ハードウェアアーキテクチャ
592 入力/出力(MMIO)アクセラレータデバイス
Claims (58)
- 動的ソフトウェア言語コードを実行するための方法であって、
ハッシュテーブルストリングキーをハッシュテーブル整数キーとして符号化するように前記動的ソフトウェア言語コードをコンパイルするステップと、
前記符号化されたハッシュテーブル整数キーを、ソフトウェアによってアクセス可能なメモリに記憶するステップと、
前記符号化されたハッシュテーブル整数キーの一部分を、第1の専用のハードウェア命令を介して専用のハードウェアハッシュテーブルインプリメンテーションにロードするステップと
を含む、方法。 - 前記第1の専用のハードウェア命令が、前記専用のハードウェアハッシュテーブルインプリメンテーションに値をプッシュするSET命令である、請求項1に記載の方法。
- ハッシュテーブルルックアップを必要とする動的ソフトウェア言語動作ごとに、ハードウェアプロセッサ上で専用のハードウェア命令を実行することによって、ハッシュテーブル値が前記ハードウェアプロセッサによって取り出され得るかどうかを判断するステップと、
前記キーが前記ハードウェアプロセッサに記憶されている場合、対応する前記ハッシュテーブル整数キーを返すためにハードウェアベースのハッシュテーブルルックアップを実行するステップと
をさらに含む、請求項2に記載の方法。 - 前記キーが前記ハードウェアプロセッサ上にない場合、ソフトウェアアクセス可能なメモリに記憶されている、要求された前記ハッシュテーブル値と前記符号化されたハッシュテーブル整数キーの一部分とを取り出すために、ソフトウェアベースのハッシュテーブルルックアップを実行するステップと、
符号化されたハッシュテーブル整数キーの前記取り出された部分を、第2の専用のハードウェア命令を介して前記ハードウェアプロセッサの専用メモリにロードすることによって、前記専用のハードウェアハッシュテーブルインプリメンテーションを更新するステップと
をさらに含む、請求項3に記載の方法。 - 前記第2の専用のハードウェア命令が、前記ハードウェアプロセッサの前記専用メモリから値を取り出すGET命令である、請求項4に記載の方法。
- ハッシュテーブルストリングキーをハッシュテーブル整数キーとして符号化するステップがコンパイル時に厳密に一度だけ遂行され、前記符号化されたハッシュテーブル整数キーの一部分をロードするステップが、動的ソフトウェア言語動作の要求ごとに実行される、請求項5に記載の方法。
- 前記動的ソフトウェア言語コードがJavaScript(登録商標)コードであり、
ハッシュテーブルストリングキーをハッシュテーブル整数キーとして符号化するように前記動的ソフトウェア言語コードをコンパイルするステップが、JavaScriptハッシュテーブルストリングキーをハッシュテーブル整数キーとして符号化するようにJavaScriptコードをコンパイルするステップを含む、請求項5に記載の方法。 - JavaScript(登録商標)ハッシュテーブルストリングキーをハッシュテーブル整数キーとして符号化するステップがコンパイル時に厳密に一度だけ遂行され、前記符号化されたハッシュテーブル整数キーの一部分をロードするステップが、JavaScript(登録商標)動作の要求ごとに実行される、請求項7に記載の方法。
- 前記第1の専用のハードウェア命令が、メモリマップされたロケーションに値を記憶することによって、前記専用のハードウェアハッシュテーブルインプリメンテーションに前記値をプッシュするSTORE命令である、請求項1に記載の方法。
- 前記符号化されたハッシュテーブル整数キーの一部分を専用のハードウェアハッシュテーブルインプリメンテーションにロードするステップが、前記符号化されたハッシュテーブル整数キーの一部分を、1次プロセッサに結合されたコプロセッサ上の専用のハードウェアハッシュテーブルインプリメンテーションにロードするステップを含む、請求項1に記載の方法。
- ハッシュテーブルストリングキーをハッシュテーブル整数キーとして符号化するように前記動的ソフトウェア言語コードをコンパイルするステップがコンピューティングデバイスの第1のプロセッサによって実施され、前記符号化されたハッシュテーブル整数キーの一部分を、第1の専用のハードウェア命令を介して専用のハードウェアハッシュテーブルインプリメンテーションにロードするステップが、前記コンピューティングデバイスの第2のプロセッサによって実施される、請求項1に記載の方法。
- 前記コンピューティングデバイスの前記第2のプロセッサが専門のハッシュテーブルコプロセッサである、請求項11に記載の方法。
- ハッシュテーブルルックアップを必要とする動的ソフトウェア言語動作ごとに、前記専門のハッシュテーブルコプロセッサ上で第2の専用のハードウェア命令を実行することによって、前記ハッシュテーブル値が取り出され得るかどうかを判断するステップと、
前記ハッシュテーブル値が取り出され得るものと判断される場合、前記コンピューティングデバイスの前記第1のプロセッサ上で対応する前記ハッシュテーブル整数キーを取り出すために、前記専門のハッシュテーブルコプロセッサ上でハードウェアベースのハッシュテーブルルックアップを実行するステップと
をさらに含む、請求項12に記載の方法。 - メモリと、
前記メモリに結合されたプロセッサであって、
ハッシュテーブルストリングキーをハッシュテーブル整数キーとして符号化するように動的ソフトウェア言語コードをコンパイルするステップと、
前記符号化されたハッシュテーブル整数キーがソフトウェアによってアクセス可能となるように、前記符号化されたハッシュテーブル整数キーを前記メモリに記憶するステップと、
前記符号化されたハッシュテーブル整数キーの一部分を、第1の専用のハードウェア命令を介して専用のハードウェアハッシュテーブルインプリメンテーションにロードするステップと
を含む動作を実施するためのプロセッサ実行可能命令で構成される、プロセッサと
を備える、コンピューティングデバイス。 - 前記メモリが前記プロセッサ内のハッシュテーブルメモリである、請求項14に記載のコンピューティングデバイス。
- 前記メモリが前記プロセッサの外部にある、請求項14に記載のコンピューティングデバイス。
- 前記プロセッサが、前記第1の専用のハードウェア命令が前記専用のハードウェアハッシュテーブルインプリメンテーションに値をプッシュするSET命令であるような動作を実施するためのプロセッサ実行可能命令で構成される、請求項14に記載のコンピューティングデバイス。
- 前記プロセッサが、
ハッシュテーブルルックアップを必要とする動的ソフトウェア言語動作ごとに、ハードウェアプロセッサ上で専用のハードウェア命令を実行することによって、ハッシュテーブル値が前記ハードウェアプロセッサによって取り出され得るかどうかを判断するステップと、
前記キーが前記ハードウェアプロセッサに記憶されている場合、対応する前記ハッシュテーブル整数キーを返すためにハードウェアベースのハッシュテーブルルックアップを実行するステップと
をさらに含む動作を実施するためのプロセッサ実行可能命令で構成される、請求項17に記載のコンピューティングデバイス。 - 前記プロセッサが、
前記キーが前記ハードウェアプロセッサ上にない場合、ソフトウェアアクセス可能なメモリに記憶されている、要求された前記ハッシュテーブル値と前記符号化されたハッシュテーブル整数キーの一部分とを取り出すためにソフトウェアベースのハッシュテーブルルックアップを実行するステップと、
符号化されたハッシュテーブル整数キーの前記取り出された部分を、第2の専用のハードウェア命令を介して前記ハードウェアプロセッサの専用メモリにロードすることによって、前記専用のハードウェアハッシュテーブルインプリメンテーションを更新するステップと
をさらに含む動作を実施するためのプロセッサ実行可能命令で構成される、請求項18に記載のコンピューティングデバイス。 - 前記プロセッサが、前記第2の専用のハードウェア命令が前記ハードウェアプロセッサの前記専用メモリから値を取り出すGET命令であるような動作を実施するためのプロセッサ実行可能命令で構成される、請求項19に記載のコンピューティングデバイス。
- 前記プロセッサが、ハッシュテーブルストリングキーをハッシュテーブル整数キーとして符号化するステップがコンパイル時に厳密に一度だけ遂行され、前記符号化されたハッシュテーブル整数キーの一部分をロードするステップが、動的ソフトウェア言語動作の要求ごとに実行されるような動作を実施するためのプロセッサ実行可能命令で構成される、請求項20に記載のコンピューティングデバイス。
- 前記プロセッサが、
前記動的ソフトウェア言語コードがJavaScript(登録商標)コードであり、
ハッシュテーブルストリングキーをハッシュテーブル整数キーとして符号化するように前記動的ソフトウェア言語コードをコンパイルするステップが、JavaScriptハッシュテーブルストリングキーをハッシュテーブル整数キーとして符号化するようにJavaScriptコードをコンパイルするステップを含む
ような動作を実施するためのプロセッサ実行可能命令で構成される、請求項20に記載のコンピューティングデバイス。 - 前記プロセッサが、JavaScript(登録商標)ハッシュテーブルストリングキーをハッシュテーブル整数キーとして符号化するステップがコンパイル時に厳密に一度だけ遂行され、前記符号化されたハッシュテーブル整数キーの一部分をロードするステップが、JavaScript(登録商標)動作の要求ごとに実行されるような動作を実施するためのプロセッサ実行可能命令で構成される、請求項22に記載のコンピューティングデバイス。
- 前記プロセッサが、前記第1の専用のハードウェア命令がメモリマップされたロケーションに値を記憶することによって前記専用のハードウェアハッシュテーブルインプリメンテーションに前記値をプッシュするSTORE命令であるような動作を実施するためのプロセッサ実行可能命令で構成される、請求項14に記載のコンピューティングデバイス。
- 前記プロセッサが、前記符号化されたハッシュテーブル整数キーの一部分を専用のハードウェアハッシュテーブルインプリメンテーションにロードするステップが、前記符号化されたハッシュテーブル整数キーの一部分を、1次プロセッサに結合されたコプロセッサ上の専用のハードウェアハッシュテーブルインプリメンテーションにロードするステップを含むような動作を実施するためのプロセッサ実行可能命令で構成される、請求項14に記載のコンピューティングデバイス。
- 前記プロセッサが第1のプロセッサと第2のプロセッサとを備え、前記プロセッサが、ハッシュテーブルストリングキーをハッシュテーブル整数キーとして符号化するように前記動的ソフトウェア言語コードをコンパイルするステップが前記第1のプロセッサによって実施され、前記符号化されたハッシュテーブル整数キーの一部分を第1の専用のハードウェア命令を介して専用のハードウェアハッシュテーブルインプリメンテーションにロードするステップが前記コンピューティングデバイスの前記第2のプロセッサによって実施されるような動作を実施するためのプロセッサ実行可能命令で構成される、請求項14に記載のコンピューティングデバイス。
- 前記第2のプロセッサが専門のハッシュテーブルコプロセッサである、請求項26に記載のコンピューティングデバイス。
- 前記プロセッサが、
ハッシュテーブルルックアップを必要とする動的ソフトウェア言語動作ごとに、前記専門のハッシュテーブルコプロセッサ上で第2の専用のハードウェア命令を実行することによって、前記ハッシュテーブル値が取り出され得るかどうかを判断するステップと、
前記ハッシュテーブル値が取り出され得るものと判断される場合、前記コンピューティングデバイスの前記第1のプロセッサ上で対応する前記ハッシュテーブル整数キーを受信するために、前記専門のハッシュテーブルコプロセッサ上でハードウェアベースのハッシュテーブルルックアップを実行するステップと
をさらに含む動作を実施するためのプロセッサ実行可能命令で構成される、請求項27に記載のコンピューティングデバイス。 - ハッシュテーブルストリングキーをハッシュテーブル整数キーとして符号化するように動的ソフトウェア言語コードをコンパイルするための手段と、
前記符号化されたハッシュテーブル整数キーをソフトウェアによってアクセス可能なメモリに記憶するための手段と、
前記符号化されたハッシュテーブル整数キーの一部分を、第1の専用のハードウェア命令を介して専用のハードウェアハッシュテーブルインプリメンテーションにロードするための手段と
を含む、コンピューティングデバイス。 - 前記メモリが前記コンピューティングデバイスのプロセッサ内のハッシュテーブルメモリである、請求項29に記載のコンピューティングデバイス。
- 前記メモリが前記コンピューティングデバイスのプロセッサの外部にある、請求項29に記載のコンピューティングデバイス。
- 前記符号化されたハッシュテーブル整数キーの一部分を第1の専用のハードウェア命令を介して専用のハードウェアハッシュテーブルインプリメンテーションにロードするための手段が、前記符号化されたハッシュテーブル整数キーの一部分を、専用のハードウェアハッシュテーブルインプリメンテーションに値をプッシュするSET命令を介して前記専用のハードウェアハッシュテーブルインプリメンテーションにロードするための手段を含む、請求項29に記載のコンピューティングデバイス。
- ハッシュテーブルルックアップを必要とする動的ソフトウェア言語動作ごとに、ハードウェアプロセッサ上で専用のハードウェア命令を実行することによって、ハッシュテーブル値が前記ハードウェアプロセッサによって取り出され得るかどうかを判断するための手段と、
前記キーが前記ハードウェアプロセッサに記憶されている場合、対応する前記ハッシュテーブル整数キーを返すためにハードウェアベースのハッシュテーブルルックアップを実行するための手段と
をさらに含む、請求項32に記載のコンピューティングデバイス。 - 前記キーが前記ハードウェアプロセッサ上にない場合、ソフトウェアアクセス可能なメモリに記憶されている、要求された前記ハッシュテーブル値と前記符号化されたハッシュテーブル整数キーの一部分とを取り出すために前記ソフトウェアベースのハッシュテーブルルックアップを実行するための手段と、
符号化されたハッシュテーブル整数キーの前記取り出された部分を、第2の専用のハードウェア命令を介して前記ハードウェアプロセッサの専用メモリにロードすることによって、前記専用のハードウェアハッシュテーブルインプリメンテーションを更新するための手段と
をさらに含む、請求項33に記載のコンピューティングデバイス。 - 符号化されたハッシュテーブル整数キーの前記取り出された部分を第2の専用のハードウェア命令を介して前記ハードウェアプロセッサの専用メモリにロードすることによって前記専用のハードウェアハッシュテーブルインプリメンテーションを更新するための手段が、符号化されたハッシュテーブル整数キーの前記取り出された部分を前記ハードウェアプロセッサの前記専用メモリから値を取り出すGET命令を介して前記ハードウェアプロセッサの専用メモリにロードすることによって前記専用のハードウェアハッシュテーブルインプリメンテーションを更新するための手段を含む、請求項34に記載のコンピューティングデバイス。
- ハッシュテーブルストリングキーをハッシュテーブル整数キーとして符号化するように前記動的ソフトウェア言語コードをコンパイルするための手段が、コンパイル時に厳密に一度だけハッシュテーブルストリングキーをハッシュテーブル整数キーとして符号化するように前記動的ソフトウェア言語コードをコンパイルするための手段を含み、
前記符号化されたハッシュテーブル整数キーの一部分を第1の専用のハードウェア命令を介して専用のハードウェアハッシュテーブルインプリメンテーションにロードするための手段が、前記符号化されたハッシュテーブル整数キーの一部分を、動的ソフトウェア言語動作の要求ごとに第1の専用のハードウェア命令を介して専用のハードウェアハッシュテーブルインプリメンテーションにロードするための手段を含む、請求項35に記載のコンピューティングデバイス。 - 前記動的ソフトウェア言語コードがJavaScript(登録商標)コードであり、
ハッシュテーブルストリングキーをハッシュテーブル整数キーとして符号化するように前記動的ソフトウェア言語コードをコンパイルするための手段が、JavaScriptハッシュテーブルストリングキーをハッシュテーブル整数キーとして符号化するようにJavaScriptコードをコンパイルするための手段を含む、
請求項35に記載のコンピューティングデバイス。 - JavaScript(登録商標)ハッシュテーブルストリングキーをハッシュテーブル整数キーとして符号化するための手段が、コンパイル時に厳密に一度だけJavaScript(登録商標)ハッシュテーブルストリングキーをハッシュテーブル整数キーとして符号化するための手段を含み、
前記符号化されたハッシュテーブル整数キーの一部分を第1の専用のハードウェア命令を介して専用のハードウェアハッシュテーブルインプリメンテーションにロードするための手段が、JavaScript(登録商標)動作の要求ごとに、前記符号化されたハッシュテーブル整数キーの一部分を第1の専用のハードウェア命令を介して専用のハードウェアハッシュテーブルインプリメンテーションにロードするための手段を含む、請求項37に記載のコンピューティングデバイス。 - 前記第1の専用のハードウェア命令が、メモリマップされたロケーションに値を記憶することによって、前記専用のハードウェアハッシュテーブルインプリメンテーションに前記値をプッシュするSTORE命令である、請求項29に記載のコンピューティングデバイス。
- 前記符号化されたハッシュテーブル整数キーの一部分を専用のハードウェアハッシュテーブルインプリメンテーションにロードするための手段が、前記符号化されたハッシュテーブル整数キーの一部分を、1次プロセッサに結合されたコプロセッサ上の専用のハードウェアハッシュテーブルインプリメンテーションにロードするための手段を含む、請求項29に記載のコンピューティングデバイス。
- 第1のプロセッサと、
第2のプロセッサとを備え、
ハッシュテーブルストリングキーをハッシュテーブル整数キーとして符号化するように前記動的ソフトウェア言語コードをコンパイルするための手段が、前記第1のプロセッサによってハッシュテーブルストリングキーをハッシュテーブル整数キーとして符号化するように前記動的ソフトウェア言語コードをコンパイルするための手段を含み、
前記符号化されたハッシュテーブル整数キーの一部分を第1の専用のハードウェア命令を介して専用のハードウェアハッシュテーブルインプリメンテーションにロードするための手段が、前記符号化されたハッシュテーブル整数キーの一部分を、前記第2のプロセッサによって第1の専用のハードウェア命令を介して専用のハードウェアハッシュテーブルインプリメンテーションにロードするための手段を含む、
請求項29に記載のコンピューティングデバイス。 - 前記第2のプロセッサが専門のハッシュテーブルコプロセッサである、請求項41に記載のコンピューティングデバイス。
- ハッシュテーブルルックアップを必要とする動的ソフトウェア言語動作ごとに、前記専門のハッシュテーブルコプロセッサ上で第2の専用のハードウェア命令を実行することによって、前記ハッシュテーブル値が取り出され得るかどうかを判断するための手段と、
前記ハッシュテーブル値が取り出され得るものと判断される場合、前記コンピューティングデバイスの前記第1のプロセッサ上で対応する前記ハッシュテーブル整数キーを受信するために、前記専門のハッシュテーブルコプロセッサ上でハードウェアベースのハッシュテーブルルックアップを実行するための手段と
をさらに含む、請求項42に記載のコンピューティングデバイス。 - プロセッサ実行可能命令を記憶した非一時的プロセッサ可読媒体であって、前記プロセッサ実行可能命令がプロセッサに、
ハッシュテーブルストリングキーをハッシュテーブル整数キーとして符号化するように動的ソフトウェア言語コードをコンパイルするステップと、
前記符号化されたハッシュテーブル整数キーをソフトウェアによってアクセス可能なメモリに記憶するステップと、
前記符号化されたハッシュテーブル整数キーの一部分を、第1の専用のハードウェア命令を介して専用のハードウェアハッシュテーブルインプリメンテーションにロードするステップと
を含む動作を実行させるように構成される、非一時的プロセッサ可読媒体。 - 前記記憶されたプロセッサ実行可能命令がプロセッサ上で機能するように構成され、前記メモリが前記プロセッサ内のハッシュテーブルメモリである、請求項44に記載の非一時的プロセッサ可読媒体。
- 前記記憶されたプロセッサ実行可能命令がプロセッサ上で機能するように構成され、前記メモリが前記プロセッサの外部にある、請求項44に記載の非一時的プロセッサ可読媒体。
- 前記記憶されたプロセッサ実行可能命令が、プロセッサに、前記第1の専用のハードウェア命令が前記専用のハードウェアハッシュテーブルインプリメンテーションに値をプッシュするSET命令であるような動作を実施させるように構成される、請求項44に記載の非一時的プロセッサ可読媒体。
- 前記記憶されたプロセッサ実行可能命令が、プロセッサに、
ハッシュテーブルルックアップを必要とする動的ソフトウェア言語動作ごとに、ハードウェアプロセッサ上で専用のハードウェア命令を実行することによって、ハッシュテーブル値が前記ハードウェアプロセッサによって取り出され得るかどうかを判断するステップと、
前記キーが前記ハードウェアプロセッサに記憶されている場合、対応する前記ハッシュテーブル整数キーを返すためにハードウェアベースのハッシュテーブルルックアップを実行するステップと
をさらに含む動作を実施させるように構成される、請求項47に記載の非一時的プロセッサ可読媒体。 - 前記記憶されたプロセッサ実行可能命令が、プロセッサに、
前記キーが前記ハードウェアプロセッサ上にない場合、ソフトウェアアクセス可能なメモリに記憶されている、要求された前記ハッシュテーブル値と前記符号化されたハッシュテーブル整数キーの一部分とを取り出すためにソフトウェアベースのハッシュテーブルルックアップを実行するステップと、
符号化されたハッシュテーブル整数キーの前記取り出された部分を、第2の専用のハードウェア命令を介して前記ハードウェアプロセッサの専用メモリにロードすることによって、前記専用のハードウェアハッシュテーブルインプリメンテーションを更新するステップと
をさらに含む動作を実施させるように構成される、請求項48に記載の非一時的プロセッサ可読媒体。 - 前記記憶されたプロセッサ実行可能命令が、プロセッサに、前記第2の専用のハードウェア命令が前記ハードウェアプロセッサの前記専用メモリから値を取り出すGET命令であるような動作を実施させるように構成される、請求項49に記載の非一時的プロセッサ可読媒体。
- 前記記憶されたプロセッサ実行可能命令が、プロセッサに、ハッシュテーブルストリングキーをハッシュテーブル整数キーとして符号化するステップがコンパイル時に厳密に一度だけ遂行され、前記符号化されたハッシュテーブル整数キーの一部分をロードするステップが動的ソフトウェア言語動作の要求ごとに実行されるような動作を実施させるように構成される、請求項50に記載の非一時的プロセッサ可読媒体。
- 前記記憶されたプロセッサ実行可能命令が、プロセッサに、
前記動的ソフトウェア言語コードがJavaScript(登録商標)コードであり、
ハッシュテーブルストリングキーをハッシュテーブル整数キーとして符号化するように前記動的ソフトウェア言語コードをコンパイルするステップが、JavaScriptハッシュテーブルストリングキーをハッシュテーブル整数キーとして符号化するようにJavaScriptコードをコンパイルするステップを含む
ような動作を実施させるように構成される、請求項50に記載の非一時的プロセッサ可読媒体。 - 前記記憶されたプロセッサ実行可能命令が、プロセッサに、JavaScript(登録商標)ハッシュテーブルストリングキーをハッシュテーブル整数キーとして符号化するステップがコンパイル時に厳密に一度だけ遂行され、前記符号化されたハッシュテーブル整数キーの一部分をロードするステップがJavaScript(登録商標)動作の要求ごとに実行されるような動作を実施させるように構成される、請求項52に記載の非一時的プロセッサ可読媒体。
- 前記記憶されたプロセッサ実行可能命令が、プロセッサに、前記第1の専用のハードウェア命令が、メモリマップされたロケーションに値を記憶することによって前記専用のハードウェアハッシュテーブルインプリメンテーションに前記値をプッシュするSTORE命令であるような動作を実施させるように構成される、請求項44に記載の非一時的プロセッサ可読媒体。
- 前記記憶されたプロセッサ実行可能命令が、プロセッサに、前記符号化されたハッシュテーブル整数キーの一部分を専用のハードウェアハッシュテーブルインプリメンテーションにロードするステップが、前記符号化されたハッシュテーブル整数キーの一部分を、1次プロセッサに結合されたコプロセッサ上の専用のハードウェアハッシュテーブルインプリメンテーションにロードするステップを含むような動作を実施させるように構成される、請求項44に記載の非一時的プロセッサ可読媒体。
- 前記記憶されたプロセッサ実行可能命令が第1のプロセッサと第2のプロセッサとを備えるプロセッサによって実行可能であるように構成され、前記記憶されたプロセッサ実行可能命令が、前記プロセッサに、ハッシュテーブルストリングキーをハッシュテーブル整数キーとして符号化するように前記動的ソフトウェア言語コードをコンパイルするステップが前記第1のプロセッサによって実施され、前記符号化されたハッシュテーブル整数キーの一部分を、第1の専用のハードウェア命令を介して専用のハードウェアハッシュテーブルインプリメンテーションにロードするステップが前記コンピューティングデバイスの前記第2のプロセッサによって実施されるような動作を実施させるように構成される、請求項44に記載の非一時的プロセッサ可読媒体。
- 前記第2のプロセッサが専門のハッシュテーブルコプロセッサである、請求項56に記載の非一時的プロセッサ可読媒体。
- 前記記憶されたプロセッサ実行可能命令が、前記プロセッサに、
ハッシュテーブルルックアップを必要とする動的ソフトウェア言語動作ごとに、前記専門のハッシュテーブルコプロセッサ上で第2の専用のハードウェア命令を実行することによって、前記ハッシュテーブル値が取り出され得るかどうかを判断するステップと、
前記ハッシュテーブル値が取り出され得るものと判断される場合、前記コンピューティングデバイスの前記第1のプロセッサ上で対応する前記ハッシュテーブル整数キーを受信するために、前記専門のハッシュテーブルコプロセッサ上でハードウェアベースのハッシュテーブルルックアップを実行するステップと
をさらに含む動作を実施させるように構成される、請求項57に記載の非一時的プロセッサ可読媒体。
Applications Claiming Priority (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201161491075P | 2011-05-27 | 2011-05-27 | |
US61/491,075 | 2011-05-27 | ||
US13/181,712 | 2011-07-13 | ||
US13/181,712 US9063749B2 (en) | 2011-05-27 | 2011-07-13 | Hardware support for hashtables in dynamic languages |
PCT/US2012/038797 WO2012166410A1 (en) | 2011-05-27 | 2012-05-21 | Hardware support for hashtables in dynamic languages |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2014515532A true JP2014515532A (ja) | 2014-06-30 |
JP5666745B2 JP5666745B2 (ja) | 2015-02-12 |
Family
ID=47220165
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2014513554A Expired - Fee Related JP5666745B2 (ja) | 2011-05-27 | 2012-05-21 | 動的言語のハッシュテーブルのためのハードウェアサポート |
Country Status (6)
Country | Link |
---|---|
US (1) | US9063749B2 (ja) |
EP (1) | EP2715536B1 (ja) |
JP (1) | JP5666745B2 (ja) |
KR (1) | KR101688821B1 (ja) |
CN (1) | CN103518190B (ja) |
WO (1) | WO2012166410A1 (ja) |
Families Citing this family (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20130332434A1 (en) * | 2012-06-11 | 2013-12-12 | Actian Netherlands, B.V. | System and method using partial just-in-time complation to resolve memory access pattern problems in hash table probing |
US9836316B2 (en) * | 2012-09-28 | 2017-12-05 | Intel Corporation | Flexible acceleration of code execution |
US9390208B2 (en) * | 2013-06-14 | 2016-07-12 | Synopsys, Inc. | Formal verification of temporal properties expressed using local variables |
US9128749B1 (en) * | 2013-06-27 | 2015-09-08 | Emc Corporation | Method and system for lock free statistics collection |
US9740504B2 (en) * | 2014-01-23 | 2017-08-22 | Qualcomm Incorporated | Hardware acceleration for inline caches in dynamic languages |
US9710388B2 (en) * | 2014-01-23 | 2017-07-18 | Qualcomm Incorporated | Hardware acceleration for inline caches in dynamic languages |
US9524114B2 (en) * | 2015-01-27 | 2016-12-20 | Futurewei Technologies, Inc. | Optimizing synchronous write via speculation |
US9690495B2 (en) * | 2015-11-03 | 2017-06-27 | International Business Machines Corporation | Emulating memory mapped I/O for coherent accelerators in error state |
KR101963629B1 (ko) | 2016-07-07 | 2019-03-29 | 고려대학교 산학협력단 | 메모리 관리 시스템 및 그 방법 |
GB2552717B (en) * | 2016-08-05 | 2018-09-05 | Arm Ip Ltd | Management of control parameters in electronic systems |
KR101884913B1 (ko) | 2016-08-09 | 2018-08-02 | 고려대학교 산학협력단 | 별도의 가상 영역으로 관리되는 복수의 정보 저장 테이블을 가지는 메모리 장치 및 그의 제어 방법 |
US20180096127A1 (en) * | 2016-09-30 | 2018-04-05 | Salesforce.Com, Inc. | Associating multiple e-learning identities with a single user |
CN109240756A (zh) * | 2018-07-06 | 2019-01-18 | 沈文策 | 一种动态加载JavaScript模块的方法及装置 |
US11036512B2 (en) | 2019-09-23 | 2021-06-15 | Microsoft Technology Licensing, Llc | Systems and methods for processing instructions having wide immediate operands |
CN111309772A (zh) * | 2020-03-23 | 2020-06-19 | 优刻得科技股份有限公司 | 数据操作的管理方法及硬件处理模块 |
CN114489839B (zh) * | 2022-01-12 | 2023-08-01 | 海南车智易通信息技术有限公司 | 针对页面加载配置数据的方法及装置、服务器 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2003524934A (ja) * | 1999-04-03 | 2003-08-19 | トップ レイヤー ネットワークス,インク. | マルチメディアアプリケーションのための自動検出スイッチシステム及び方法 |
JP2009080696A (ja) * | 2007-09-26 | 2009-04-16 | Hitachi Ltd | ストレージサブシステム及びその制御方法 |
JP2010050600A (ja) * | 2008-08-20 | 2010-03-04 | Fujitsu Ltd | 情報検索装置 |
Family Cites Families (23)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5809494A (en) * | 1995-11-16 | 1998-09-15 | Applied Language Technologies, Inc. | Method for rapidly and efficiently hashing records of large databases |
GB9825102D0 (en) * | 1998-11-16 | 1999-01-13 | Insignia Solutions Plc | Computer system |
US6591274B1 (en) * | 2000-05-31 | 2003-07-08 | Sprint Communications Company, L.P. | Computer software framework and method for accessing data from one or more datastores for use by one or more computing applications |
US6952730B1 (en) | 2000-06-30 | 2005-10-04 | Hewlett-Packard Development Company, L.P. | System and method for efficient filtering of data set addresses in a web crawler |
US6813690B1 (en) * | 2001-06-12 | 2004-11-02 | Network Appliance, Inc. | Caching media data using content-sensitive identifiers |
US7188334B1 (en) * | 2001-11-20 | 2007-03-06 | Ncr Corp. | Value-ordered primary index and row hash match scan |
US7039764B1 (en) * | 2002-01-17 | 2006-05-02 | Nokia Corporation | Near-perfect, fixed-time searching algorithm using hashing, LRU and cam-based caching |
US7356802B2 (en) * | 2003-09-29 | 2008-04-08 | International Business Machines Corporation | Automatic customization of classes |
US20050171937A1 (en) * | 2004-02-02 | 2005-08-04 | Hughes Martin W. | Memory efficient hashing algorithm |
US7669194B2 (en) * | 2004-08-26 | 2010-02-23 | International Business Machines Corporation | Fine-grained software-directed data prefetching using integrated high-level and low-level code analysis optimizations |
US7676661B1 (en) | 2004-10-05 | 2010-03-09 | Xilinx, Inc. | Method and system for function acceleration using custom instructions |
US7664323B2 (en) * | 2005-01-28 | 2010-02-16 | Microsoft Corporation | Scalable hash-based character recognition |
US7469362B2 (en) * | 2005-04-15 | 2008-12-23 | Microsoft Corporation | Using a call stack hash to record the state of a process |
US7665015B2 (en) * | 2005-11-14 | 2010-02-16 | Sun Microsystems, Inc. | Hardware unit for parsing an XML document |
US20080215849A1 (en) | 2007-02-27 | 2008-09-04 | Thomas Scott | Hash table operations with improved cache utilization |
WO2008115519A1 (en) * | 2007-03-20 | 2008-09-25 | President And Fellows Of Harvard College | A system for estimating a distribution of message content categories in source data |
CN100574281C (zh) * | 2007-06-22 | 2009-12-23 | 中兴通讯股份有限公司 | 一种交换机路由表的管理方法 |
US8776191B2 (en) | 2008-01-25 | 2014-07-08 | Novell Intellectual Property Holdings, Inc. | Techniques for reducing storage space and detecting corruption in hash-based application |
US7502972B1 (en) * | 2008-03-16 | 2009-03-10 | International Business Machines Corporation | Reducing log entries using hash keys |
US8024719B2 (en) * | 2008-11-03 | 2011-09-20 | Advanced Micro Devices, Inc. | Bounded hash table sorting in a dynamic program profiling system |
US8180917B1 (en) * | 2009-01-28 | 2012-05-15 | Trend Micro, Inc. | Packet threshold-mix batching dispatcher to counter traffic analysis |
US8387003B2 (en) * | 2009-10-27 | 2013-02-26 | Oracle America, Inc. | Pluperfect hashing |
US8543543B2 (en) * | 2011-09-13 | 2013-09-24 | Microsoft Corporation | Hash-based file comparison |
-
2011
- 2011-07-13 US US13/181,712 patent/US9063749B2/en active Active
-
2012
- 2012-05-21 WO PCT/US2012/038797 patent/WO2012166410A1/en unknown
- 2012-05-21 CN CN201280022612.XA patent/CN103518190B/zh not_active Expired - Fee Related
- 2012-05-21 JP JP2014513554A patent/JP5666745B2/ja not_active Expired - Fee Related
- 2012-05-21 EP EP12724498.6A patent/EP2715536B1/en not_active Not-in-force
- 2012-05-21 KR KR1020137034573A patent/KR101688821B1/ko active IP Right Grant
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2003524934A (ja) * | 1999-04-03 | 2003-08-19 | トップ レイヤー ネットワークス,インク. | マルチメディアアプリケーションのための自動検出スイッチシステム及び方法 |
JP2009080696A (ja) * | 2007-09-26 | 2009-04-16 | Hitachi Ltd | ストレージサブシステム及びその制御方法 |
JP2010050600A (ja) * | 2008-08-20 | 2010-03-04 | Fujitsu Ltd | 情報検索装置 |
Non-Patent Citations (4)
Title |
---|
CSND200301100002; 山本哲史: '特集1 プログラム高速化の定石 Part2 VB,C++,Javaプログラマが知っておきたい20の定石' 日経ソフトウエア 第4巻,第10号(通巻41号), 20010924, p.52-63, 日経BP社 * |
CSND200800878002; 森田 創: '爆走するGoogleマシン 第2部<徹底解剖> 新型エンジン「V8」はなぜ速いのか' 日経エレクトロニクス 第990号, 20081103, p.61-73, 日経BP社 * |
JPN6014047518; 森田 創: '爆走するGoogleマシン 第2部<徹底解剖> 新型エンジン「V8」はなぜ速いのか' 日経エレクトロニクス 第990号, 20081103, p.61-73, 日経BP社 * |
JPN6014047521; 山本哲史: '特集1 プログラム高速化の定石 Part2 VB,C++,Javaプログラマが知っておきたい20の定石' 日経ソフトウエア 第4巻,第10号(通巻41号), 20010924, p.52-63, 日経BP社 * |
Also Published As
Publication number | Publication date |
---|---|
US20120304159A1 (en) | 2012-11-29 |
CN103518190B (zh) | 2017-03-22 |
KR101688821B1 (ko) | 2016-12-22 |
CN103518190A (zh) | 2014-01-15 |
JP5666745B2 (ja) | 2015-02-12 |
EP2715536B1 (en) | 2019-05-15 |
EP2715536A1 (en) | 2014-04-09 |
KR20140015591A (ko) | 2014-02-06 |
US9063749B2 (en) | 2015-06-23 |
WO2012166410A1 (en) | 2012-12-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP5666745B2 (ja) | 動的言語のハッシュテーブルのためのハードウェアサポート | |
US9672152B2 (en) | Size dependent type in accessing dynamically typed array objects | |
US9940229B2 (en) | Technologies for persistent memory programming | |
US9798528B2 (en) | Software solution for cooperative memory-side and processor-side data prefetching | |
US9923840B2 (en) | Improving performance and security of multi-processor systems by moving thread execution between processors based on data location | |
JP7483950B2 (ja) | バイナリ変換を実行するためのシステム及び方法 | |
US8887127B2 (en) | Web browsing apparatus and method through storing and optimizing JAVASCRIPT® code | |
JP2007531075A (ja) | プログラム・コードを変換するための共用コード・キャッシングの方法および装置 | |
US9298630B2 (en) | Optimizing memory bandwidth consumption using data splitting with software caching | |
KR101537725B1 (ko) | 워크 그룹 크기 결정 방법, 시스템 및 컴퓨터 판독가능 기록매체 | |
US9342303B2 (en) | Modified execution using context sensitive auxiliary code | |
US20100070716A1 (en) | Processor and prefetch support program | |
Yang et al. | Support OpenCL 2.0 Compiler on LLVM for PTX Simulators | |
Zhu et al. | Two-phase execution of binary applications on CPU/GPU machines | |
Budhiraja | Supporting Position Independence in NVM and Porting New and Legacy C Code to NVM. | |
Krintz et al. | Understanding the potential of interpreter-based optimizations for Python |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20131127 |
|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20131127 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20141022 |
|
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: 20141110 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20141210 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 5666745 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
LAPS | Cancellation because of no payment of annual fees |