Museum

Home

Lab Overview

Retrotechnology Articles

Online Manuals

⇒ cord2(1) — NEWS-os 4.2.1R

Media Vault

Software Library

Restoration Projects

Artifacts Sought

Related Articles

pixie(1)

cord(1)

CORD2(1)  —  NEWS-OS Programmer’s Manual

名称

cord2 − 実行可能ファイル内の基本ブロックを並べ変えて、よりよいキャッシュマッピングを提供する

形式

cord2 [ −v ] [ −o outfile ] [ −c cachewords ] [ −d ] [ −b bridge_limit ] [ −n ] [ −A addersfile ] [ [ −C countsfile ] ... ] obj

解説

cord2 コマンドは、プログラムから基本ブロックを抽出し、 それらをテキストの新領域に置いて、 必要に応じてその領域へのジャンプおよびその領域 からのジャンプを行います。 基本ブロックを分けることによって、命令キャッシュのミス率を低下させる ことができます。 cord2 は pixie プロファイリング実行の出力を入力として使用します ( pixie(1) を参照)。

obj は実行可能なオブジェクトファイルです。 cord2 は 1 つの addersfile しか必要としません。 cord2 は、−A によってファイル名が指定されない場合は、 obj ファイル名に .Bbaddrs を付加してファイル名を作成します。 複数の −C 引数によって数多く実行することにより、 多くのカウントファイルを指定することができます。 何も指定されない場合は、cord2 は obj の名前 に .Counts を付加してカウントファイル名を作成します。 複数のカウントファイルが一緒に、C の倍精度型の要素からなる内部 カウント配列に加算されます。 カウント配列要素には、ブロックの密度、すなわちサイクル/バイトが含まれます。 −n を指定すると、カウントは正規化されるので、各カウント配列要素は サイクル/トータルサイクルになります。 1 つのカウントが指定された場合、デフォルトでは小さいブロックを重視します。 −n ではそうはなりません。 多くのカウントファイルが指定された場合、−n は特定のカウントファイル を重視しないようにします。 なぜならば、そのファイルのトータルサイクルが別のカウントファイルの トータルサイクルを超えることがあるためです。

cord2 は、カウント配列をソートし、最大カウントをもつブロックを 集めることによって、どの基本ブロックを新領域に挿入するかを決定します。 cord2 は、新領域の終わりに入りきらない巨大ブロックをスキップする ことがあります。

ブロックが決定すると、それらのブロックは新領域に挿入され、それらの 元の位置は新領域にジャンプするように修正されます。 新領域の各ブロックの終わりで、元のブロックのその後またはフォールスルー の位置、および(必要な場合は)分岐/ジャンプターゲットにジャンプ命令が再び 追加されます。 新領域への出入りは、新領域内を含む別のブロックやジャンプ遅延スロットを 利用するために最適化されます。

新領域内のブロックに続いて、1) 小さく、2) めったに使用されず、3) 新領域内 にない、1 つ以上のフォールスルーブロックができることがよくあります。 これらのフォールスルーブロックに続くブロックが新領域にある場合は、 フォールスルーブロックはブリッジブロックと呼ばれます。 ブリッジブロックを新領域にコピーした時よりも、ブリッジブロックへ 出入りするジャンプの方がコストがかかる場合もあります。 cord2 を使用すると、ブリッジブロックの総計が新領域内の 2 つの ブロック間の bridge_limit 命令数よりも少ない場合は、 ブリッジブロックを新領域に追加するように指定できます。 −b を使って bridge_limit を指定することができます。 デフォルトは 0 です。 本来ならば新領域に入るはずのブロックを、 ブリッジブロックがはじき出すこともあります。

警告: cord2 はプロファイル出力から動作するので、 結果として生じるバイナリはデータに依存します。 すなわち、cord2 はプロファイル情報を生成した入力データと同じ入力 データのときには十分に機能するでしょうが、その他のデータ上ではオリジナル バイナリより性能が劣るかもしれません。 さらに、キャッシュのホットエリアが 1 つのキャッシュページにうまく入らない 場合は、性能が低下することがあります。

cord2 コマンドはまた、下記のオプションを受け付けます。

−d 新領域へ出入りするジャンプ命令を追加するときだけ、 nop で遅延スロットを満たします。

−v 冗長な情報を表示します。 これには、cord2 プロセスに関する統計が含まれます。

−v −v
−v 情報をすべて表示した上に、cord2 によって移動、変更、 および生成されたコードの詳細な分解が含まれます。

−c cachewords
実行したいマシンのキャッシュ内のワード数を指定します。 これは、実際には新領域のサイズになります。 ユーザは自分のマシンのキャッシュサイズ以外のサイズを指定することが でき、多分そのサイズ指定は正しいのですから、 cachesize は誤った名称かもしれません。

−o outputfile
出力ファイルを指定します。 指定しなかった場合は、a.out.cord2 が使用されます。

バグ

cord2 はテキストの終わりに新領域を追加するので、etext ( ld(1) を参照) シンボルを使用したプログラムは動作しないことがあります。

関連事項

pixie(1), cord(1),
RISC NEWS Compiler Languages Programmer’s Guide

NEWS-OSRelease 4.2.1R

Typewritten Software • bear@typewritten.org • Edmonds, WA 98026