[前][次][番号順一覧][スレッド一覧][生データ]

langsmith:268

From: MAEDA Atusi <maeda-langsmith atusi.org>
Date: 15 Aug 2005 14:11:28 +0900
Subject: [langsmith:268] Re: evalやVMの分岐の仕方の用語

Tsuguo MOGAMI <mogami brain.riken.go.jp> writes:

> P.S. しかしなぜサブルーチンスレッデッドが、ダイレクトスレッデッドより
> 遅いのか不思議で仕方がないのでした。

CPUによるので一概に言えませんが,direct threadingのNEXT操作がやること
は,おおむねCPUのRET命令がやる処理と同じです.

・仮想命令コードを指しているレジスタRがあって,
・Rが指している語を読み出してPCに入れ,
・Rが次の語を指すようにインクリメントする.

つまり,
direct threadingのコスト ≒ RET命令のコスト
です.

一方,subroutine threadingのコスト= CALL命令のコスト+RET命令のコスト
ですから,遅くなるのは,ある意味で自然と言えます.

(単純なRISCプロセッサでは,まさに上の通りになると思いますが,たとえば
最近のAMDのプロセッサでは,RET命令を高速化するためにreturn address
stackがオンチップでついていたりしますので,汎用レジスタと間接ジャンプ
で行なう鵜NEXT処理より本物のRET命令の方が速いかも知れません.)

				前田敦司

--
ML: langsmith quickml.atdot.net
使い方: http://www.atdot.net/~ko1/quickml

[前][次][番号順一覧][スレッド一覧][生データ]

       256 2005-08-06 13:32 [mogami brain.riken.g] プログラミング言語cipher                
       257 2005-08-06 18:41 ┗[hyuki hyuki.com     ]                                       
       258 2005-08-06 21:35  ┣[yamanoue cc.kagoshim]                                     
       261 2005-08-09 12:10  ┃┗[mogami brain.riken.g]                                   
       262 2005-08-09 12:39  ┃ ┗[yamanoue cc.kagoshim]                                 
       263 2005-08-09 12:51  ┃  ┗[matz ruby-lang.org  ]                               
       264 2005-08-09 18:35  ┃   ┗[ko1 atdot.net       ]                             
       265 2005-08-11 16:28  ┃    ┗[mogami brain.riken.g] evalやVMの分岐の仕方の用語 
       266 2005-08-12 14:34  ┃     ┗[maeda-langsmith atus]                         
       267 2005-08-14 20:21  ┃      ┗[mogami brain.riken.g]                       
->     268 2005-08-15 14:11  ┃       ┗[maeda-langsmith atus]                     
       259 2005-08-06 21:42  ┗[mogami brain.riken.g]