JPH08314717A - コンピュータ及びコンピュータ動作方法 - Google Patents

コンピュータ及びコンピュータ動作方法

Info

Publication number
JPH08314717A
JPH08314717A JP8146619A JP14661996A JPH08314717A JP H08314717 A JPH08314717 A JP H08314717A JP 8146619 A JP8146619 A JP 8146619A JP 14661996 A JP14661996 A JP 14661996A JP H08314717 A JPH08314717 A JP H08314717A
Authority
JP
Japan
Prior art keywords
data string
substring
instruction
data
sequence
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
Application number
JP8146619A
Other languages
English (en)
Other versions
JP3771968B2 (ja
Inventor
Mackenzie Sidwell Nathan
マッキンゼー サイドウェル ネイサン
Catherine L Barnaby
ルイス バーナビィー キャサリン
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
S G S THOMSON MICROELECTRON Ltd
SGS THOMSON MICROELECTRONICS
STMicroelectronics Ltd Great Britain
Original Assignee
S G S THOMSON MICROELECTRON Ltd
SGS THOMSON MICROELECTRONICS
STMicroelectronics Ltd Great Britain
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by S G S THOMSON MICROELECTRON Ltd, SGS THOMSON MICROELECTRONICS, STMicroelectronics Ltd Great Britain filed Critical S G S THOMSON MICROELECTRON Ltd
Publication of JPH08314717A publication Critical patent/JPH08314717A/ja
Application granted granted Critical
Publication of JP3771968B2 publication Critical patent/JP3771968B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/76Arrangements for rearranging, permuting or selecting data according to predetermined rules, independently of the content of the data
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30018Bit or string instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30025Format conversion instructions, e.g. Floating-Point to Integer, decimal conversion
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30032Movement instructions, e.g. MOVE, SHIFT, ROTATE, SHUFFLE
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30036Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • G06F9/30105Register structure
    • G06F9/30112Register structure comprising data of variable length
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30145Instruction analysis, e.g. decoding, instruction word fields
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30145Instruction analysis, e.g. decoding, instruction word fields
    • G06F9/3016Decoding the operand specifier, e.g. specifier format
    • G06F9/30167Decoding the operand specifier, e.g. specifier format of immediate specifier, e.g. constants
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3824Operand accessing
    • G06F9/383Operand prefetching
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Executing Machine-Instructions (AREA)

Abstract

(57)【要約】 【課題】 再構成インストラクションを実行してデータ
ストリング内のオブジェクトを再編成することでメモリ
への読み出し及び記憶動作を最小化する。 【解決手段】 プロセッサ及び離散データの複数のサブ
ストリングを有するデータストリングを処理するための
データ記憶回路を有するコンピュータが提供され、サブ
ストリングはそれぞれ同じビット長を有する第1サブス
トリング、最終サブストリング及び少なくとも四つの中
間サブストリングを有し、コンピュータは少なくとも一
つのデータストリング再構成インストラクションを含む
インストラクションセットを有し、再構成インストラク
ションがデータストリングに実行されて第1及び最終サ
ブストリングを変わらない位置で保持し、再構成された
データにおいて少なくとも二つの中間サブストリングの
位置を互いに交換する。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明はデータの操作に関す
る。本発明は全面的という訳ではないが詳細にはコンピ
ュータ及びコンピュータを動作させて所謂 "パックイン
ストラクション(命令)”の実行に関連してデータ値の
操作を実行する方法に関する。
【0002】
【従来の技術及び発明が解決しようとする課題】パック
インストラクションはパックオペランドで実行される。
パックオペランドは複数のサブストリングからなるビッ
トストリングを有し、各サブストリングは特定のデータ
値を画定し、本明細書中では "オブジェクト”と称され
る。従って、オペランドは複数のオブジェクトを有す
る。各オペランドはレジスタ記憶装置を有し、その記憶
装置は単一のアドレスによってアドレス可能な予め決め
られたビット容量を有し、各ビット位置は個々にアドレ
スできない。従って、各オペランド内で個々のオブジェ
クトをアドレス且つ処理することはできない。
【0003】"パックインストラクション”によってオ
ブジェクトを個々に識別せずにオペランド内の全てのオ
ブジェクトに対して共通の動作が実行される。単一の共
通動作はオペランドをメモリの中へ及び該メモリの外へ
ロードすることである。
【0004】別の "パックインストラクション”は演算
インストラクションであり、このインストラクションは
個々のオペランドからのオブジェクトのペアに対して同
じ演算動作を並列実行し、複数の結果オブジェクトを有
するパック結果オペランドを提供する。パックインスト
ラクションの実行のために、コンピュータはパック演算
ユニットを提供し、このユニットは少なくとも一つがパ
ックされている二つのソースオペランドに動作してパッ
ク結果を生成する。
【0005】メモリへのローディング及び記憶動作が減
少し、各レジスタを埋めることによって使用可能なレジ
スタ容量を最大にすることができるため、単一のオペラ
ンド内のオブジェクトのセットを一緒に処理することが
有益であるのは明らかである。
【0006】しかしながら、オペランド内のオブジェク
トのシーケンスはオブジェクトがメモリに記憶される順
序によって予め決められているという不利益を有する。
このシーケンスはメモリからオブジェクトを検索してそ
のオブジェクトを別個のレジスタに一時的に記憶し、異
なる位置のメモリに再度書き込むことによってのみ変え
ることが可能である。これはマトリックス操作に特に要
求される。この性質の動作はメモリへの繰り返しのアク
セス及び長いインストラクションシーケンスを必要とす
る。インストラクションシーケンスはメモリの空間を占
有する。インストラクションシーケンスの長さをできる
だけ短くすることが所望される。メモリアクセスは動作
を遅くするため、このアクセスを最小化することも所望
される。
【0007】
【課題を解決するための手段】本発明の一態様に従う
と、コンピュータが提供されており、そのコンピュータ
は、プロセッサ及び離散データの複数のサブストリング
を有するデータストリングを処理するためのデータ記憶
回路を有し、前記サブストリングはそれぞれ同じビット
長を有する第1サブストリング、最終サブストリング及
び少なくとも四つの中間サブストリングを有し、前記コ
ンピュータは少なくとも一つのデータストリング再構成
インストラクションを含むインストラクションセットを
有し、前記再構成インストラクション又は各再構成イン
ストラクションがデータストリングに実行されて前記第
1サブストリング及び最終サブストリングを変わらない
位置で保持し、再構成データストリングにおいて少なく
とも二つの中間サブストリングの位置が互いに交換され
る。
【0008】従って単一の再構成インストラクションの
実行によってオペランド内の二つのオブジェクトの配置
をスワップすることが可能である。
【0009】この性質を有する本明細書中で述べられる
インストラクションの主なカテゴリーは "フリップ”イ
ンストラクションである。
【0010】他に二つの画定されるインストラクション
のカテゴリーがあり、それらは "ジップ”及び "アンジ
ップ”インストラクションである。これらのインストラ
クションのいくつかもペアのオブジェクトのオペランド
内で互いに位置をスワップする性質を有する。
【0011】以下の記述から明らかになるように、再構
成インストラクションは単一のレジスタ記憶装置の内容
又は二つのレジスタ記憶装置の内容に対して実行され、
二つのレジスタ記憶装置の内容がデータストリングを画
定する。
【0012】インストラクションが単一のレジスタ記憶
装置の内容に関して実行されると、幾つかのインストラ
クションに対してデータストリングが考慮され、このイ
ンストラクションは前記データストリングの第1の半分
を形成する第1ビットシーケンス及び前記データストリ
ングの第2の半分を形成する第2ビットシーケンスによ
って形成された偶数のサブストリングを含む。再構成イ
ンストラクションが実行されて前記第1シーケンスから
選択されたサブストリングと前記第2シーケンスから選
択されたサブストリングとを交換する。或いは、各シー
ケンスの二つの中間サブストリングの位置を交換するこ
ともできる。第1シーケンス及び第2シーケンスは別個
のレジスタ記憶装置に選択的に保持される。
【0013】再構成インストラクションが実行されて前
記再構成データストリングにおける前記第1及び第2シ
ーケンスからサブストリングを1つ置きに配置すること
ができる。
【0014】再構成インストラクションが実行されてデ
ータストリングの各半分の1つ置きのサブストリングを
変わらない位置で保持し、前記第1及び最終サブストリ
ングを変わらない位置で保持する。
【0015】再構成インストラクションが実行されて半
分のデータストリングの奇数番目のサブストリング間に
他方の半分のデータストリングの奇数番目のサブストリ
ングを挿入することができる。
【0016】本発明はコンピュータを動作させる方法を
提供し、その方法は、離散データを表しデータストリン
グの複数のサブストリングの一つを形成する複数のビッ
トシーケンスをデータ記憶装置に保持し、各サブストリ
ングはそれぞれ同じビット長を有する第1サブストリン
グ、最終サブストリング及び少なくとも四つの中間サブ
ストリングを含み、更に少なくとも一つのデータストリ
ング再構成インストラクションを含むインストラクショ
ンシーケンスを実行し、再構成インストラクション又は
各再構成インストラクションがデータストリングに実行
されて前記第1及び最終サブストリングを変わらない位
置で保持し、再構成されたデータストリングにおいて少
なくとも二つの中間サブストリングの位置を交換する。
【0017】本発明はコンピュータを動作させる方法を
提供し、その方法は、離散データを表しデータストリン
グの複数のサブストリングの一つを形成する複数のビッ
トシーケンスをデータ記憶装置に保持し、インストラク
ションシーケンスを実行し、そのインストラクションシ
ーケンスは、データストリング内の個々のサブストリン
グを識別せずに前記データストリングのサブストリング
に共通動作を実行する第1インストラクション、データ
ストリング内の個々のサブストリングを識別して少なく
とも一つのサブストリングを変わらない位置で保持しつ
つデータストリング内の少なくとも二つの中間サブスト
リングの位置を交換してデータストリングを再構成する
第2インストラクション、更にデータストリング内の前
記サブストリングを識別せずに再構成されたデータスト
リングのサブストリングに共通動作を実行する第3イン
ストラクションを含む。
【0018】この方法において、インストラクションの
シーケンスが実行され、そのシーケンスにおいて、第1
インストラクションはオペランド内の個々のオブジェク
トを識別せず、第2インストラクションはオペランド内
のオペランドを再配置し、第3インストラクションは更
に共通動作を実行する。これはパック演算環境で動作を
実行するのに特に有益である。
【0019】本発明はコンピュータを提供し、コンピュ
ータはプロセッサ、メモリ及びデータストリング内の離
散データのサブストリングを形成するビットシーケンス
を保持するデータ記憶回路を有し、前記コンピュータは
インストラクションシーケンスを前記メモリに記憶し、
そのインストラクションシーケンスはデータストリング
内の前記サブストリングの識別なしで前記データストリ
ングのサブストリングに共通動作を指定する第1インス
トラクション、データストリング内の個々のサブストリ
ングを識別して少なくとも一つのサブストリングを変わ
らない位置で残しつつデータストリング内の少なくとも
二つのサブストリングの位置を互いに交換してデータス
トリングを再構成する第2インストラクション、及びデ
ータストリング内の前記サブストリングの識別なしで再
構成データストリングのサブストリングに更に共通動作
を実行する第3インストラクションを含む。
【0020】本発明の再構成インストラクションはマト
リックス操作を実行する場合に特に有益である。従っ
て、本発明はコンピュータシステムを動作させてマトリ
ックス転置動作を実行する方法を更に提供しており、そ
の方法は、各々がマトリックスの行及び列の位置のデー
タ値を表す複数のサブストリングからデータストリング
を形成し、本発明の再構成インストラクションを使用し
てデータストリングを再構成して選択された行及び列の
値の交換を実行する。
【0021】本発明の請求項1の態様では、コンピュー
タであって、プロセッサ及び離散データの複数のサブス
トリングを有するデータストリングを処理するためのデ
ータ記憶回路を有し、前記サブストリングは同じビット
長を有する第1サブストリング、最終サブストリング及
び少なくとも四つの中間サブストリングを有し、前記コ
ンピュータは少なくとも一つのデータストリング再構成
インストラクションを含むインストラクションセットを
有し、前記再構成インストラクション又は各再構成イン
ストラクションがデータストリングに実行されて前記第
1及び最終サブストリングを変わらない位置で保持し、
再構成されたデータにおいて少なくとも二つの中間サブ
ストリングの位置を互いに交換する、ことを含む。
【0022】本発明の請求項2の態様では、請求項1の
態様において、前記データストリングは前記データスト
リングの第1の半分を形成するビットの第1シーケンス
及び前記データストリングの第2の半分を形成するビッ
トの第2シーケンスによって形成された偶数のサブスト
リングを含み、前記再構成インストラクションが実行さ
れて前記第1シーケンスから選択されたサブストリング
と前記第2シーケンスから選択されたサブストリングを
交換する、ことを含む。
【0023】本発明の請求項3の態様では、請求項2の
態様において、前記再構成インストラクションが実行さ
れて前記再構成データストリングにおいて前記第1及び
第2シーケンスからのサブストリングを1つ置きに配置
する、ことを含む。
【0024】本発明の請求項4の態様では、請求項2又
は3の態様において、前記再構成インストラクションが
実行されて前記データストリングの各半分の1つ置きの
サブストリングを変わらない位置で保持し、変わらない
位置の前記第1及び最終サブストリングを保持する。
【0025】本発明の請求項5の態様では、請求項1乃
至4の態様において、前記再構成インストラクションが
実行されてデータストリングの半分の奇数番目のサブス
トリング間に前記データストリングの他方の半分の奇数
番目のサブストリングを挿入する、ことを含む。
【0026】本発明の請求項6の態様では、前述の請求
項のいずれかの態様において、データ記憶回路は各々が
単一のアドレスによってアドレス可能な予め決められた
ビット容量を有する複数のレジスタ記憶装置を有する。
【0027】本発明の請求項7の態様では、請求項6の
態様において、データストリングは再構成インストラク
ションの実行の前に前記レジスタ記憶装置の一つに保持
される。
【0028】本発明の請求項8の態様では、請求項6の
態様において、データストリングは二つのレジスタ記憶
装置の内容を有し再構成インストラクションの実行の前
に二つのレジスタ記憶装置に保持される。
【0029】本発明の請求項9の態様では、コンピュー
タであって、前記コンピュータはプロセッサ、メモリ及
びデータストリング内の離散データのサブストリングを
形成するビットシーケンスを保持するデータ記憶回路を
有し、前記コンピュータはインストラクションシーケン
スを前記メモリに記憶し、そのインストラクションシー
ケンスはデータストリング内の前記サブストリングの識
別なしで前記データストリングのサブストリングに共通
動作を指定する第1インストラクション、データストリ
ング内の別個のサブストリングを識別し、少なくとも一
つのサブストリングを変わらない位置で保持しつつデー
タストリング内の少なくとも二つのサブストリングの位
置を互いに交換してデータストリングを再構成する第2
インストラクション及びデータストリング内の前記サブ
ストリングの識別なしで再構成されたデータストリング
のサブストリングに更に共通動作を指定する第3インス
トラクションを含む。
【0030】本発明の請求項10の態様では、請求項9
の態様において、前記第2インストラクションは前記デ
ータストリングにおいて前記データストリングの第1及
び最終サブストリングを変わらない位置で保持する。
【0031】本発明の請求項11の態様では、コンピュ
ータを動作させる方法であって、その方法は、離散デー
タを表しデータストリングの複数のサブストリングの一
つを形成する複数のビットシーケンスをデータ記憶装置
に保持し、各サブストリングは同じビット長を有する第
1サブストリング、最終サブストリング及び少なくとも
4つの中間サブストリングを含み、更に少なくとも一つ
のデータストリング再構成インストラクションを含むイ
ンストラクションシーケンスを実行し、再構成インスト
ラクション又は各再構成インストラクションが実行され
て前記再構成データストリングの第1の半分を形成する
第1ビットシーケンス及び前記再構成データストリング
の第2の半分を形成する第2ビットシーケンスによって
形成された偶数のサブストリングを含む再構成データス
トリングを生成し、前記再構成インストラクションが実
行されて互いに隣接する原データストリングの第1サブ
ストリング及び1つ置いた次のサブストリングを配置す
ることによって第1シーケンスを生成し、互いに隣接す
る原データストリングの第2サブストリング及び1つ置
いた次のサブストリングを配置することによって第2シ
ーケンスを生成する。
【0032】本発明の請求項12の態様では、コンピュ
ータを動作させる方法であって、その方法は、各々が離
散データを表しデータストリングの複数のサブストリン
グの一つを形成する複数のビットシーケンスをデータ記
憶装置に保持し、前記サブストリングはそれぞれ同じビ
ット長を有する第1サブストリング、最終サブストリン
グ及び少なくとも二つの中間サブストリングを含み、更
に少なくとも一つのデータストリング再構成インストラ
クションを含むインストラクションシーケンスを実行
し、前記再構成インストラクション又は各再構成インス
トラクションがデータストリングに実行されて第1及び
最終サブストリングを変わらない位置で保持し、再構成
されたデータストリングにおいて少なくとも二つの中間
サブストリングの位置を互いに交換する、ことを含む。
【0033】本発明の請求項13の態様では、請求項1
2の態様において、前記データストリングは前記データ
ストリングの第1の半分を形成する第1ビットシーケン
ス及び前記データストリングの第2の半分を形成する第
2ビットシーケンスによって形成された偶数のサブスト
リングを含み、前記再構成インストラクションが実行さ
れて前記第1シーケンスから選択されたサブストリング
と前記第2シーケンスから選択されたサブストリングを
交換する、ことを含む。
【0034】本発明の請求項14の態様では、請求項1
3の態様において、前記再構成インストラクションが実
行されて前記再構成データストリングにおいて前記第1
及び第2シーケンスからのサブストリングを1つ置きに
配置する、ことを含む。
【0035】本発明の請求項15の態様では、請求項1
3又は14の態様において、前記再構成インストラクシ
ョンが実行されて前記データストリングの各半分の1つ
置きのサブストリングを変わらない位置で保持し変わら
ない位置の前記第1及び最終サブストリングを保持す
る。
【0036】本発明の請求項16の態様では、請求項1
3乃至15の態様において、前記再構成インストラクシ
ョンが実行されてデータストリングの半分の奇数番目の
サブストリング間に前記データストリングの他方の半分
からの奇数番目のサブストリングを挿入する、ことを含
む。
【0037】
【発明の実施の形態】本発明をより理解し、どのように
実行されるかを示すために、添付図面を例として参照さ
れる。
【0038】図1は本発明の第1実施の形態に従ったプ
ロセッサを示す。プロセッサは三つの実行ユニットを有
し、これらのユニットは従来通りの演算ユニット2及び
メモリアクセスユニット4を有する。更に、パック演算
ユニット6も有する。プロセッサはインストラクション
フェッチャー8、インストラクションレジスタ10、レ
ジスタファイル12及びインストラクションポインタ1
4も有し、これらは全てプロセッサのコントロールユニ
ット16の制御によって動作する。レジスタファイルは
レジスタのセットを有し、各レジスタは予め決められた
ビット容量を有し、単一のアドレスでアドレス可能であ
る。レジスタ内の個々の位置にアドレスすることは出来
ない。レジスタにアクセスすると、レジスタの全体的内
容が考慮される。プロセッサは更に定数ユニット18及
び選択ユニット20を有する。定数ユニット18及び選
択ユニット20も制御ユニット16の制御によって動作
する。プロセッサはメモリ22と協働して動作し、該メ
モリはプロセッサの動作を実行するためのインストラク
ション及びデータ値を保持する。データ値及びインスト
ラクションはデータバス24を介してメモリ22へ及び
該メモリ22から与えられる。データバス24はメモリ
データ入力26を介してメモリ22へ及び該メモリ22
からデータ値を与える。データバス24はフェッチャー
データ入力28を介してインストラクションフェッチャ
ー8にデータを与え、メモリアクセス読み取り入力30
を介してメモリアクセスユニット4にデータを与える。
メモリは選択ユニット20を介してアドレス入力32で
アドレスされる。選択ユニット20は制御ユニット16
からのフェッチ信号34を介して制御されてフェッチャ
ー8からアドレス36を選択するか又はメモリアクセス
ユニット4からアドレス38を選択する。制御ユニット
16からの読み書き制御ライン40、42はメモリ22
から及び該メモリ22への読み書き動作を制御する。イ
ンストラクションフェッチャー8は制御ユニット16の
制御によってメモリ22からのインストラクションを以
下のようにフェッチする。インストラクションが読み取
られるアドレス36が選択ユニット20を介してメモリ
22に与えられる。これらのインストラクションはデー
タバス24を介してフェッチャーデータ入力28に与え
られる。インストラクションフェッチャーが次にインス
トラクションをフェッチすると、又は任意のイベントに
おいて次のインストラクションが実行可能になると、ラ
イン44を介してReady 信号が制御ユニット16に出さ
れる。実行されるインストラクションはインストラクシ
ョンラインInst46に沿ってインストラクションレジス
タ10に与えられ、実行中該レジスタに保持される。イ
ンストラクションポインタ14は、インストラクション
ポインタライン48を介してフェッチャー8から与えら
れ実行されるインストラクションのアドレスを保持す
る。制御ユニット16からのNewInst 信号53に応答し
たGet 信号47によって、インストラクションレジスタ
10はInstライン46の次のインストラクションを記憶
し、フェッチャー8は次のインストラクションの準備を
する。NewInst 信号53によってインストラクションポ
インタ14は次のインストラクションのアドレスを記憶
する。制御ユニット116からのブランチライン50に
よってフェッチャー8はブランチを実行する。
【0039】インストラクションレジスタ10は、ソー
ス1及ソース2レジスタアドレスをReg1及びReg2として
レジスタファイルに提供する。結果レジスタアドレスは
Destとして提供される。オペコードはライン51に沿っ
て制御ユニット16に与えられる。更に、幾つかのイン
ストラクションは一つの又は両方のソースレジスタをエ
ンコードする代わりに定数オペランドを与える。定数は
定数ユニット18によって提供される。インストラクシ
ョンのソース値は、入力E1,E2 でS1Reg 及びS2Reg 信号
を適切に設定することによってソース1バス52、ソー
ス2バス54に与えられる。ライン51のオペコードに
従って制御ユニット16からのPack Ops、Mem Ops 及び
ALU Ops の適切な値を提供することによって正確な実行
ユニットがイネーブルとなる。イネーブルになったユニ
ットは普通結果バス56に結果Res を与える。これは普
通レジスタファイル12の選択された結果レジスタDest
に記憶される。これには幾つかの例外がある。
【0040】幾つかのインストラクションはダブル長結
果を提供する。これらのインストラクションは結果の第
1部分を通常の方法で記憶する。連続する追加の段階で
は、結果の第2部分はDouble信号58を表すことによっ
てレジスタファイル12の次のレジスタに記憶される。
【0041】Branch50にはインストラクションポイン
タ14を読み取り且つ調節することが要求される。これ
らのBranchによってS1Reg 信号は表されないため、イン
ストラクションポインタ14はライン60にソース1の
値を提供する。ソース2の値は通常の方法で(レジスタ
ファイル12のレジスタからか又は定数ユニット18か
ら)与えられる。演算ユニット2はブランチ演算を実行
し、その結果はレジスタファイル12ではなくNew IP入
力64でフェッチャー8に記憶されて制御ユニット16
からのBranchライン50によって信号が送られる。これ
によって新しいアドレスからフェッチャーがスタートす
る。
【0042】条件ライン62の状態に応じて二つの段階
で条件ブランチが実行されなければならない。第1段階
では、ReadDest信号45を表すことによって別のソース
としてDestレジスタを使用する。条件が満たされると、
次に通常のブランチソースオペランドが読み取られブラ
ンチが実行される。
【0043】コールはリターンアドレスをセーブしなけ
ればならない。これは、ブランチターゲットを計算する
前にデスティネーションレジスタにインストラクション
ポインタ値を記憶することによって行われる。
【0044】本明細書で述べられるコンピュータは幾つ
かの重要な性質を有する。
【0045】ソースオペランドは常に自然ワード長であ
る。一つ、二つ又は三つのソースオペランドがありう
る。
【0046】結果は常に自然ワード長であるか又は自然
ワード長の2倍の長さである。自然ワード長の2倍の長
さである場合は、一つではなく二つのレジスタに記憶
し、二つのレジスタを占有する特別の段階を踏むため動
作ペナルティがある。このコンピュータでは、64ビッ
トの自然ワード長とする。つまり、レジスタファイルの
各レジスタは64ビットの予め決められた容量を有す
る。
【0047】実行ユニット2、4、6はインストラクシ
ョン実行間に何らの状態も保持しない。従って、連続す
るインストラクションは独立的である。
【0048】アンパックインストラクション 演算ユニット2及びメモリアクセスユニット4は制御ユ
ニット16と共に従来通りのインストラクションセット
の以下のインストラクションを実行することができる。
以下の定義において、レジスタは、当該技術分野の技術
者には公知であるように、レジスタの中身及び記憶位置
としてのレジスタ自体を示すために使用される。 mov 定数又はレジスタをレジスタに移動する。 add 2個のレジスタを加算して結果を第3レジスタ
(ソースのいずれかと同様である)に記憶する。 sub 2個のレジスタを減算し結果を第3レジスタに
記憶する。 load 一つのレジスタをアドレスとして使用してメモ
リの位置から読み取り結果を別のレジスタに記憶する。 store 一つのレジスタをアドレスとして使用し、別の
レジスタの中身をアドレスによって特定された位置でメ
モリに記憶する。 compe 2個のレジスタ(又はレジスタと定数)が等し
いかを比較する。等しい場合、1をデスティネーション
レジスタに記憶し、そうでない場合はゼロを記憶する。 compge 2個のレジスタ(又はレジスタと定数)の順序
性を比較する。2番目が1番目より小さくなければ、デ
スティネーションレジスタに1を記憶し、そうでない場
合はゼロを記憶する。 jump 新しい位置へ無条件にジャンプする。 jumpz 特定のレジスタの中身がゼロである場合、新し
いプログラム位置にジャンプする。 jumpnz 特定のレジスタの中身がゼロでなければ新し
いプログラム位置にジャンプする。 shr 定数又は別のレジスタによってレジスタのビッ
ト毎の右シフトを実行する。符号ビットはシフトの際複
製されるため、シフトは符号が付けられる。 shl 定数又は別のレジスタによってレジスタのビッ
ト毎の左シフトを実行して結果をデスティネーションレ
ジスタに記憶する。 or/xor 2個のレジスタでビット毎のロジック動作(or
/xor) を実行し、結果をデスティネーションレジスタに
記憶する。
【0049】パックユニット 図2はパック演算ユニット6のブロック図を示す。これ
は別個のユニットの集合として示され、各々はパック演
算インストラクションの幾つかのサブセットに対して応
答可能である。別の実施では異なる方法で機能を組み合
わせることがあり得るかもしれない。このユニットはバ
イト複製ユニット70、ツイスト及びジップユニット7
4、明確なパック演算ユニット80及び本明細書では説
明されないが他のパック演算ユニット72、76、78
を含む。これらは演算ユニット70乃至80を選択的に
制御するルートオペコードユニット82に応答して動作
する。演算ユニット70乃至80のオペランドはソース
1バス52、ソース2バス54に沿って与えられる。演
算ユニットからの結果は結果バス56に与えられる。ル
ートオペコードユニット82へのOP入力は制御ユニット
16(図1)からのPack Opsインストラクションを受け
る。ソース1バス及びソース2バスに与えられるオペラ
ンドは演算ユニットのそれぞれの入力バッファにロード
され、結果は一つ又は二つの出力バッファからレジスタ
ファイル12の一つ又は二つのディスティネーションレ
ジスタに与えられる。
【0050】明確なパック演算 明確なパック演算ユニット80は、二つのソースオペラ
ンドを各々が幾つかのパックオブジェクトを含むものと
して扱い、二つのオペランドのオブジェクトの各ペアに
動作して各ソースと同じ数のパックオブジェクトを含む
結果を生成する。サポートされる動作は、加算、減算、
比較、乗算、左シフト、右シフト等である。上記に説明
されたように、単一のアドレスを使用してレジスタをア
ドレスすることによって、オペランドがアクセスされ
る。オペランドは個々にアドレスできない複数のオブジ
ェクトを有する。
【0051】図3はパック演算ユニット6の演算ユニッ
トを例示した図において使用される記号を示す。
【0052】図4は、パック16ビット数の加算、減
算、比較及び乗算を実行することができる明確なパック
演算ユニットを示す。この場合、ソース及び結果バスの
幅は64ビットであるため、4つのパックオブジェクト
があり、それぞれは各バスで16ビットの長さである。
【0053】明確なパック演算ユニット80は4つの演
算ロジカルユニットALU0-ALU3 を有し、各ユニットはラ
イン100のオペコードによって制御され、このライン
は図2のルートオペコードユニット82から導出され
る。ソースレジスタ1SRC1から与えられた64ビットワ
ードは4つのパックオブジェクトS1[0]-S1[3] を含む。
ソースレジスタ2SRC2から与えられた64ビットワード
は4つのパックオブジェクトS2[0]-S2[3] を含む。これ
らは第1入力バッファ90及び第2入力バッファ92に
記憶される。第1演算ロジックユニットALU0は各オペラ
ンドの第1パックオブジェクトS1[0],S2[0] に動作して
結果R[0]を生成する。第2乃至第4演算ロジックユニッ
トALU1-ALU3 も同様にオブジェクトの第2ペア乃至第4
ペアを使用してそれぞれ結果R[1]乃至R[3]を生成する。
これらは結果バッファ102に記憶される。従って、結
果ワードは4つのパックオブジェクトを含む。イネーブ
ルユニット101はユニットのうちのいくつがアクティ
ブであるべきかを決定し、出力バッファがその出力を表
すかどうかを制御する。
【0054】インストラクションは以下の通りに表され
る。 add2p 各S1[i] にその2の補数S2[i] を加えてR[i]を
生成する。オーバーフローは無視される。 sub2p 各S2[i] の2の補数S1[i] から各S2[i] を減算
してR[i]を生成する。オーバーフローは無視される。 cmpe2p S1[i] とS2[i] を比較する。等しい場合はR[i]
を全て1に設定し、異なる場合はR[i]をゼロに設定す
る。 cmpge2ps S1[i] と符号が付けられたその2の補数のS2
[i] を比較する。S1[i]がS2[i] より大きいかS2[i] に
等しい場合はR[i]を全てゼロに設定し、S1[i] がS2[i]
より小さければR[i]をゼロに設定する。 mul2ps S1[i] とその符号付き2の補数のS2[i] を乗
算してR[i]をフル(32ビット)プロダクトの最下位1
6ビットに設定する。
【0055】幾つかの明確なパック演算インストラクシ
ョンは、普通一つのパックソースオペランド及び一つの
アンパックソースオペランドを使用する。図5はそのよ
うなユニットを示す。
【0056】図5のパック演算ユニットの中身は、実質
的には図4の中身と同様である。唯一異なる点は、第2
ソースオペランドの入力バッファ92’はアンパック形
態のソースオペランドを受けることである。入力バッフ
ァ92’は前のようにパック形態の第1ソースオペラン
ドを受ける。アンパックソースオペランド及びパックソ
ースオペランドを使用したインストラクションの一つの
例は、シフトインストラクションであり、シフトの量は
パックされないため、全てのパックオブジェクトに対し
て同じシフトが与えられる。シフト量はアンパックであ
る必要はないが、この方がより有益である。 shl2p S1[i] をS2(パックされていない)だけ左にシ
フトしてR[i]を結果に設定する。 shr2ps 各S1[i] をS2(パックされていない)だけ右に
シフトしてR[i]を結果に設定する。シフトの際符号ビッ
トが複製されるため、シフトは符号付きである。
【0057】同じセットの動作がパック8ビット及びパ
ック32ビットオブジェクトに与えられることが予想さ
れる。このインストラクションは類似した名前を有する
が、"2”を "1”又は "4に置き換えたものである。
【0058】バイト複製 図6はバイト複製ユニット70を示す。バイト複製ユニ
ットは入力バッファ104を有し、このバッファは単一
のオペランドを受け、このオペランドは図6では8つの
パック8ビットオブジェクトS[0]乃至S[7]を含む64ビ
ットワードとして例示される。第1マルチプレクサ10
6は入力として第1オブジェクトS[0]及び第2オブジェ
クトS[1]を受ける。第2マルチプレクサ108は入力と
して第1オブジェクトS[0]及び第3オブジェクトS[2]を
受ける。第3マルチプレクサ110は入力として第1マ
ルチプレクサ108の出力及び第4オブジェクトS[3]を
受ける。バイト複製ユニットは出力バッファ112も有
する。出力バッファは8つの8ビットオブジェクトR[0]
乃至R[7]としてパックされた64ビットワードを保持す
る。出力バッファ112の第1及び第5の8ビット位置
は入力バッファ104の第1の8ビットに直接接続す
る。出力バッファ112の第2及び第6の8ビット位置
は、第1マルチプレクサ106の出力を受けるように接
続される。出力バッファ112の第3及び第7の8ビッ
ト位置は第2マルチプレクサ108の出力を受けるよう
に接続される。出力バッファ112の第4及び第8の8
ビット位置は第3マルチプレクサ110の出力を受ける
ように接続される。出力バッファの8ビット結果オブジ
ェクトはR[0]乃至R[7]と称される。タイプユニット11
4は図2のルートオペコードユニット82から導出され
たライン118のオペコードを受ける。タイプユニット
は複製されるオブジェクトのサイズを選択して3つの出
力信号Do8,Do16,Do32 の内の一つを与える。これらの出
力信号はORゲート120に与えられる。ORゲートの出力
によって出力バッファ112がイネーブルとなる。Do16
及びDo32信号は第2ORゲート122への入力であり、そ
の出力は第1マルチプレクサ106を制御する。Do32信
号自体が第2マルチプレクサ108及び第3マルチプレ
クサ110を制御する。従って、バイト複製ユニットは
ソースオペランドの最下位オブジェクト(8、16、又
は32ビット)を使用してそれを8、4又は2倍に複製
して出力バッファ112に保持されるパック64ビット
結果を生成する。動作は8ビットピースに分解され、S
[i]及びR[i]の各々は8ビットである。幾つかのロジッ
クが異なる複製において共有される。タイプユニット1
14は16ビットシーケンス又は32ビットシーケンス
のどちらを複製するかを決定する。Do16又はDo32のどち
らの信号も表されない場合、8ビットシーケンスが複製
される。
【0059】バイト複製ユニットによってサポートされ
る三つのインストラクションは以下の通りである。 re
plp S[0]をR[0]乃至R[7]のそれぞれに複製する。 rep2p S[0]及びS[1]をi が0から3までのR[2i] 及び
R[2i+1] に複製して16ビットを複製する。 rep4p S[0]及びS[3]をi が0から1までのR[4i] から
R[4i+3] に複製して32ビットを複製する。
【0060】ツイスト及びジップ ツイスト及びジップユニット74によって実行される再
構成動作には三つの種類がある。それらは以下の通りで
ある。 shuffle (zip) オブジェクトストリングのペアからな
るソースストリングを使用してオブジェクトストリング
のペアからオブジェクトをインターリーブしてソースス
トリングと同じ長さの単一のストリングを生成する。こ
れはパーフェクトシャッフルである。 Sort (unzip) オブジェクトペアを含むソースストリン
グを使用してこのペアをデインターリーブしてその結果
デインターリーブされたペアの連結からなるストリング
を生成する。これはパーフェクトソートである。 Transpose (flip) 4オブジェクトを含むソースストリ
ングを使用し、適切なソースオブジェクトを交換するこ
とによって結果ストリングを生成し、マトリックス転置
のセットを実行する。
【0061】これらの動作のうちの任意の一つは他の二
つの動作の適切な組み合わせによって構成されることが
できる。
【0062】これら全ての変換に対してソースストリン
グは複数のベクトルからなり、各ベクトルは同じサイズ
のオブジェクトを同じ数だけ含む。これらの変換を挙げ
るためには3つの数字が必要である。 number of vectors ソース及び結果ストリングのベク
トル数を特定する。 size of vector 各ベクトルのオブジェクトの数を
特定する。 size of object 各オブジェクトのビット数を特定
する。
【0063】インストラクションネームは変換タイプ
(zip, unzip, flip) からなり、引き続きベクトルの数
"n"が付き、各ベクトルのサイズ "v"が付き、8ビット
バイトの数として表されるオブジェクトサイズ "p"が付
く。従って、インストラクションzip4n2vlp では、zip
はインストラクションタイプを示し、4n2vlpはオペラン
ドフォーマットを特定する。この場合、zip 動作は4ベ
クトルで実行され、それぞれは2つの1バイトオブジェ
クトである。この特定の動作を行うためには、各zip は
2つのベクトルを要求するため、2つの別個のジップが
実行される。
【0064】ソース及び結果ストリングが全体で64又
は128ビットである場合、図7に示されるような9個
の固有ジップ及びアンジップ変換がある。
【0065】このジップ及びアンジップのセットはこの
実施によってサポートされる64及び128ビットスト
リングに対しては完全である。より長いストリングのジ
ップ及びアンジップは従来のmoveインストラクションと
協働したこれらのインストラクションのシーケンスによ
って実行することができる。
【0066】64及び128ビットストリングに適切な
flipは図8に示されている。これらのうちの幾つかは図
7のジップ及びアンジップの幾つかと同様である。
【0067】ジップ及びアンジップと同様に、このフリ
ップのセットも64及び128ビットストリングに対し
て完全である。より長いストリングのフリップはフリッ
プのシーケンス及び従来のmoveインストラクションによ
って実行可能である。
【0068】図9は64ビットジップ及びアンジップを
処理するツイスト及びジップユニット74の部分を示
す。図9に示されるツイスト及びジップユニットのジッ
プ及びアンジップ部分は、S[0]からS[7]の8つのパック
8ビットソースオブジェクトを含む入力バッファ130
を含む。結果バッファ132はR[0]からR[7]の8個のパ
ック8ビット結果オブジェクトを保持するために提供さ
れる。結果R[0]は第1ソースオブジェクトS[0]に直接接
続する。第2ソースオブジェクトS[1]は第1入力として
第1マルチプレクサ134、第2マルチプレクサ136
及び第3マルチプレクサ138に与えられる。第1、第
2及び第3マルチプレクサ134、136、138は、
第2入力として第5ソースオブジェクトS[4]を受ける。
第4マルチプレクサ140は一つの入力として第3ソー
スオブジェクトS[2]及び別の入力として第1マルチプレ
クサ134の出力を受ける。第4マルチプレクサの出力
は第2結果オブジェクトR[1]に提供される。第2マルチ
プレクサ136の出力は第3結果オブジェクトR[2]を提
供される。第5マルチプレクサ142は入力として第3
マルチプレクサ138の出力及び第6ソースオブジェク
トS[5]を受ける。第5マルチプレクサ142の出力は第
4結果オブジェクトR[3]に与えられる。第6マルチプレ
クサ144は一つの入力として第4ソースオブジェクト
S[3]及び別の入力として第7ソースオブジェクトS[6]を
受ける。第6マルチプレクサの出力は、第7マルチプレ
クサ146の一つの入力として与えられ、該マルチプレ
クサ146の別の入力は第3ソースオブジェクトS[2]で
ある。第7マルチプレクサ146の出力は第5結果オブ
ジェクトR[4]に与えられる。第8マルチプレクサ150
は一つの入力として第4ソースオブジェクトS[3]を受
け、別の入力として第7ソースオブジェクトS[6]を受け
て、出力を第6結果オブジェクトR[5]に与える。第9マ
ルチプレクサ152は一つの入力として第4ソースオブ
ジェクトS[3]を受け、別の入力として第7ソースオブジ
ェクトS[6]を受ける。第9マルチプレクサ152の出力
は第10マルチプレクサ154に与えられ、該第10マ
ルチプレクサは第2入力として第6ソースオブジェクト
S[5]を受ける。第10マルチプレクサ154の出力は第
7結果オブジェクトR[6]を提供する。第8ソースオブジ
ェクトS7は第8結果オブジェクトR7を提供するように該
結果オブジェクトに直接接続する。タイプユニット16
2は図2のルートオペコードユニット82から導出され
たライン160のオペコードを受ける。タイプユニット
162はツイスト及びジップユニット74のジップ及び
アンジップ部分で実行されるインストラクションを定め
る。この目的のために、該タイプユニットは4つの出力
信号zip2n2v2p 、unzip2n4vlp 、zip2n4vlp 及びzip4n2
vlp のうちの1つを与える。zip2n4vlp 及びzip4n2vlp
出力は第1ORゲート164に与えられ、その出力は第8
マルチプレクサ150を制御する。出力信号zip4n2vlp
は第2ORゲート166にも与えられ、このゲート166
はunzip2n4vlp の出力を受ける。第2ORゲートの出力は
第4、第5、第7及び第10マルチプレクサを制御す
る。信号unzip2n4vlp は第3及び第6マルチプレクサを
制御する。出力zip2n2v2p は第1及び第9マルチプレク
サを制御する。タイプユニット162の4つ全ての出力
は第3ORゲート168に与えられ、そのゲート168は
出力バッファ132がイネーブルかどうかを決定する。
図9においてロジックパスの幾つかは共有されるため、
10個の8ビットマルチプレクサしか必要としない。ソ
ース及び結果はパック8ビットオブジェクトとして示さ
れる。しかしながら、ある一つのインストラクションで
はこの実施はパック16ビットオブジェクトのみに画定
され、これはソース及び結果8ビットオブジェクトのペ
アを使用することによって達成される。
【0069】64ビットジップ及びアンジップは以下の
通りである。 zip4n2v1p 2つの8ビットオブジェクトからなるベク
トルをジップ(インターリーブ)する。これは同じベク
トルのアンジップ(デインターリーブ)と同様である。 zip2n4v1p 4つの8ビットオブジェクトからなるベク
トルをジップ(インターリーブ)する。 unzip1n4v1p 4つの8ビットオブジェクトからなるベク
トルをアンジップ(デインターリーブ)する。 zip2n2v2p 2つの16ビットオブジェクトからなるベ
クトルをジップ(インターリーブ)する。これは同じオ
ブジェクトのアンジップ(デインターリーブ)と同様で
ある。
【0070】図10はダブル長8ビットジップ及びアン
ジップインストラクションを実行するツイスト及びジッ
プユニットの部分を示す。このツイスト及びジップユニ
ットの部分は第1及び第2入力バッファ170、172
を有し、各バッファは64ビットワードを保持する。入
力バッファ170、172に保持される64ビットワー
ドは、S1[0] からS2[7] までラベル付けされた16個の
オブジェクトを有する連続データストリングとしてみな
すことができる。第1及び第2出力バッファ174、1
76があり、それぞれ64ビットワードを保持する。結
果はライン178の出力である。6個の切り換えスイッ
チ180乃至190があり、それぞれ2つの入力及び2
つの出力を有する。図10に例示されるように、切り換
えスイッチ180乃至190の入力は第1及び第2入力
バッファ170、172の位置に接続する。図10に例
示されるように切り換えスイッチ180乃至190の出
力は第1及び第2出力バッファ174、176の位置に
接続する。図7に例示されたようなzip2n8v1p 動作又は
unzip2n8v1p 動作のいずれかが実施されるように接続さ
れる。図10から分かるように、第1入力バッファS1
[0] の第1位置及び第2入力バッファS2[7] の最終位置
はそれぞれ出力バッファの第1位置R[0]及び第2出力バ
ッファの最終位置R[15] に接続する。このようにして、
第1及び最終オブジェクトのデータストリングはジップ
及びアンジップインストラクションに従ったデータスト
リングの再構成後も変化しないままである。タイプユニ
ット192は図2のルートオペコードユニット82から
導出されたライン160のオペコードを受ける。タイプ
ユニット192は、再構成インストラクションがジップ
インストラクションであるか又はアンジップインストラ
クションであるか、即ち、zip2n8v1p であるか又はunzi
p2n8v1p であるかに応じて2つの信号を出力する。これ
らの出力信号はORゲート196に与えられる。unzip2n8
v1p 信号は切り換えスイッチ180乃至190を制御す
る。ORゲート196の出力は2つのAND ゲート198、
200に与えられる。AND ゲート198はDouble信号5
8も受ける。AND ゲート200は逆のDouble信号58を
受ける。AND ゲート200は第1出力バッファ174を
制御し、AND ゲート198は第2出力バッファ176を
制御する。2つの出力バッファはDouble信号によって制
御され、該Double信号によって第1出力バッファ174
はその中身をライン178に沿って第1デスティネーシ
ョンレジスタに与え、次に状態を変化させ、第2出力バ
ッファ176はその中身をライン178に沿ってレジス
タファイル12の連続レジスタに与える。
【0071】処理される2つのインストラクションは以
下の通りである。 zip2n8v1p 8個の8ビットオブジェクトからなるベク
トルをジップ(インターリーブ)する。 unzip2n8v1p 8個の8ビットオブジェクトからなるベク
トルをアンジップ(デインターリーブ)する。
【0072】図11はダブル長16ビット及び32ビッ
トジップ及びアンジップインストラクションを実行する
ツイスト及びジップユニットの部分を示す。この部分は
第1及び第2入力バッファ202、204を有し、それ
ぞれは4つのパック形態の16ビットオブジェクトを画
定する64ビットワードを保持する。2つのオブジェク
トは32ビットジップインストラクションを使用するこ
とによって一緒に処理することができる。第1及び第2
出力バッファ206及び208はそれぞれ4つのパック
16ビットオブジェクトR[0]乃至R[3]、R[4]乃至R[7]を
画定する64ビットワードを保持する。結果はライン2
10に与えられる。Double信号58は出力バッファがそ
の出力を表すシーケンスを制御する。ツイスト及びジッ
プユニットの他の部分と同様に、第1オブジェクトの第
1入力バッファは第1出力バッファの第1オブジェクト
位置に直接接続する。同様に、第2入力バッファ204
の最終ソースオブジェクト位置は第2出力バッファ20
8の最終結果オブジェクト位置R[7]に直接接続する。
【0073】第1マルチプレクサ210は第1入力とし
てソースオブジェクトS1[1] 及び第2入力としてソース
オブジェクトS1[2] を受ける。第2マルチプレクサ21
2は第1入力として第2ソースオブジェクトS1[1] 及び
第2入力として第3ソースオブジェクトS1[2] を受け
る。第3マルチプレクサ214は第1入力として第2ソ
ースオブジェクトS1[1] 及び第2入力として第2入力バ
ッファの第1ソースオブジェクトS2[0] を受ける。第4
マルチプレクサ216は第1入力としてソースオブジェ
クトS1[3] 及び第2入力としてソースオブジェクトS2
[2] を受ける。第5マルチプレクサ218は第1入力と
してソースオブジェクトS2[1] 及び第2入力としてソー
スオブジェクトS2[2] を受ける。第6マルチプレクサ2
20は第1入力としてソースオブジェクトS2[1] 及び第
2入力としてソースオブジェクトS2[2] を受ける。第1
マルチプレクサ210の出力は第2出力バッファ208
の第1結果オブジェクトR[4]に与えられる。第2マルチ
プレクサ212の出力は第7マルチプレクサ222に与
えられ、この第7マルチプレクサは第2出力としてソー
スオブジェクトS2[0] を受ける。第2マルチプレクサ2
22の出力は第1出力バッファ206の第2結果オブジ
ェクトR[1]に与えられる。第3マルチプレクサ214の
出力は第1出力バッファ206の第3結果オブジェクト
R[2]に与えられる。第4マルチプレクサ216の出力は
第2出力バッファ208の第2結果オブジェクトR[5]に
与えられる。第5マルチプレクサ218の出力は第8マ
ルチプレクサ224の第1出力として与えられ、この第
8マルチプレクサは第2入力としてソースオブジェクト
S1[3] を受ける。第8マルチプレクサ224の出力は第
2出力バッファ208の第3結果オブジェクトR[6]に与
えられる。第6マルチプレクサ220の出力は第1出力
バッファ206の第4結果オブジェクトR[3]に与えられ
る。タイプユニット226はライン160で図2のルー
トオペコードユニット82から導出されたライン160
のオペコードを受ける。タイプユニットはツイスト及び
ジップユニットによって実行される再構成動作のタイプ
に応じて3つの出力信号を生成する。これらの信号は、
zip2n4vp2p、unzip2n4v2p 及びzip2n2v4p である。これ
らの信号はORゲート228に与えられ、その出力は二つ
のAND ゲート230及び232に与えられる。AND ゲー
ト230はDouble信号も受ける。AND ゲート232はDo
uble信号の逆転バージョンを受ける。AND ゲート23
0、232の出力は出力バッファ206、208の動作
を制御する。
【0074】zip2n4v2p 信号は第7及び第8マルチプレ
クサ222、224を制御する。unzip2n4v2p 信号は第
1、第2、第3、第4、第5及び第6マルチプレクサを
制御する。
【0075】ツイスト及びジップユニットのこの部分に
よって処理される3つのインストラクションは以下の通
りである。 zip2n4v2p 4個の16ビットオブジェクトからなるベ
クトルをジップ(インターリーブ)する。 unzip2n4v2p 4個の16ビットオブジェクトからなる
ベクトルをアンジップ(デインターリーブ)する。 zip2n2v4p 2個の32ビットオブジェクトからなる
ベクトルをジップ(インターリーブ)する。同じベクト
ルのアンジップ(デインターリーブ)と同様である。
【0076】図12は8ビットflipを実行するツイスト
及びジップユニットの部分を示す。これはシングル長及
びダブル長の両方の動作を行う。図12において、2つ
の入力バッファ234及び236があり、それぞれは8
ビットオブジェクトとしてパックされた64ビットワー
ドを含む。第1及び第2入力バッファ234、236の
隣接ペアはそれぞれマルチプレクサ238−252に与
えられる。マルチプレクサ254−264の第2セット
は以下のように配置される。第2セットの第1マルチプ
レクサ254は第1入力として第1出力バッファ234
の第2ソースオブジェクトを受け、第2入力として第1
セットの第3マルチプレクサ242の出力を受ける。第
2セットの第2マルチプレクサ256は第1入力として
第1出力バッファ234の第5ソースオブジェクトを受
け、第2入力として第1セットの第5マルチプレクサ2
46の出力を受ける。第2セットの第3マルチプレクサ
258は第1入力として第1出力バッファ234の第4
ソースオブジェクトを受け、第2入力として第1セット
の第4マルチプレクサ244の出力を受ける。第2セッ
トの第4マルチプレクサ260は第1入力として第1出
力バッファ234の第7ソースオブジェクトを受け、第
2入力として第1セットの第6マルチプレクサの出力を
受ける。第2セットの第5マルチプレクサ262は第1
入力として第1出力バッファの第6ソースオブジェクト
を受け、第2入力として第1セットの第7マルチプレク
サ250の出力を受ける。第2セットの第6マルチプレ
クサ264は第1入力として第1出力バッファ234の
第8ソースオブジェクトを受け、第2入力として第1セ
ットの第8マルチプレクサ252の出力を受ける。ツイ
スト及びジップユニットの8ビットフリップ部分も出力
バッファ266を含み、8ビットパックオブジェクトと
して64ビットワードを収容する。第1結果オブジェク
トは第1セットの第1マルチプレクサ238の出力とし
て与えられる。第2ソースオブジェクトは第2セットの
第2マルチプレクサ256の出力として与えられる。結
果の第3オブジェクトは第1セットの第2マルチプレク
サ240の出力として与えられる。結果の第4オブジェ
クトは第2セットの第4マルチプレクサ260の出力と
して与えられる。結果の第5オブジェクトは第2セット
の第1マルチプレクサ254の出力として与えられる。
結果の第6オブジェクトは第2セットの第5マルチプレ
クサ262の出力として与えられる。結果の第7オブジ
ェクトは第2セットの第3マルチプレクサ258の出力
として与えられる。結果の第8オブジェクトは第2セッ
トの第6マルチプレクサ264の出力として与えられ
る。タイプユニット268はライン160でオペコード
を受け、実行される再構成動作のタイプに応じて2つの
信号を生成する。これらの信号はflip2n4v1p及びflip2n
8v1pである。これらの信号はORゲート270に与えら
れ、その出力は出力バッファ266を制御する。Double
信号58は第1セットのマルチプレクサ238−252
を制御する。Double信号はダブル長インストラクション
の上部分に対してのみアクティブである。第2セットの
マルチプレクサ254−264はflip2n8v1p信号によっ
て制御される。
【0077】図12では単一の64ビット出力バッファ
のみが例示されている。flip2n4v1pインストラクション
が実行されているとき、バッファは図9に示される単一
の出力バッファに対応する。2n8v1pflipがインストラク
ションが実行されているとき、出力バッファは最初に結
果のRESULT LOW部分を保持してその部分を与え、Double
信号58が表されると結果のRESULT HIGH 部分を保持
し、その部分を与える。
【0078】ユニットによって処理される2つのインス
トラクションは以下の通りである。 flip2n4v1p 4個の8ビットオブジェクトからなるベ
クトルをフリップする。 flip2n8v1p 8個の8ビットオブジェクトからなるベ
クトルをフリップする。
【0079】図13は16ビット及び32ビットフリッ
プを実行するツイスト及びジップユニットの部分を示
す。8ビットフリップユニットと同様に、この部分もシ
ングル長及びダブル長の両方のフリップを実行する。3
2ビットオブジェクトは16ビットオブジェクトのペア
として処理される。
【0080】ユニットによって処理される3つのインス
トラクションは以下の通りである。 flip2n2v2p 2個の16ビットオブジェクトからなる
ベクトルをフリップする。 flip2n4v2p 4個の16ビットオブジェクトからなる
ベクトルをフリップする。 flip2n2v4p 2個の32ビットオブジェクトからなる
ベクトルをフリップする。
【0081】これら3つのフリップのうちの2つはジッ
プのうちの2つと同様である。従って、両方のインスト
ラクションセットがある場合、1つのハードウェアのセ
ットのみを実施すればよい。
【0082】このツイスト及びジップユニットの部分は
第1及び第2入力バッファ272、274を有し、それ
ぞれのバッファは第1入力バッファではS1[0] からS1
[3] まで、第2入力バッファではS2[0] からS2[3] まで
の4つの16ビットオブジェクトとしてパックされた6
4ビットワードを収容する。マルチプレクサ276乃至
290の第1セットは第1及び第2入力バッファ27
2、274からの入力を以下のように受ける。第1セッ
トの第1マルチプレクサ276は第1入力として第1ソ
ースオブジェクトS1[0] を受け、第2入力として第3ソ
ースオブジェクトS1[2] を受ける。第1セットの第2マ
ルチプレクサ278は第1入力として第1ソースオブジ
ェクトS1[0] を受け、第2入力として第2ソースオブジ
ェクトS1[1]を受ける。第1セットの第3マルチプレク
サ280は第1入力として第2ソースオブジェクトS1
[1] を受け、第2入力として第4ソースオブジェクトS1
[3] を受ける。第1セットの第4マルチプレクサ282
は第1入力として第3ソースオブジェクトS1[2] を受
け、第2入力として第4ソースオブジェクトS1[3] を受
ける。第1セットの第5マルチプレクサ284は第1入
力として第2バッファ274の第1ソースオブジェクト
S2[0] を受け、第2入力として第3ソースオブジェクト
S2[2] を受ける。第1セットの第6マルチプレクサ28
6は第1入力として第2バッファ274の第1ソースオ
ブジェクトS2[0] を受け、第2入力として第2ソースオ
ブジェクトS2[1] を受ける。第7マルチプレクサ288
は第1入力として第2ソースオブジェクトS2[1] を受
け、第2入力として第4ソースオブジェクトS2[3] を受
ける。第8マルチプレクサ290は第1入力として第2
入力バッファ274の第3ソースオブジェクトS2[2] を
受け、第2入力として第4ソースオブジェクトS2[3] を
受ける。マルチプレクサ292乃至298の第2セット
は以下のように入力を受ける。第2セットの第1マルチ
プレクサ292は、第1セットの第1及び第2マルチプ
レクサ276、278の出力を入力として受ける。第2
セットの第2マルチプレクサ294は第1セットの第3
及び第6マルチプレクサ280、286からの出力を入
力として受ける。第2セットの第3マルチプレクサ29
6は第1セットの第4及び第5マルチプレクサ282、
284の出力を入力として受ける。第2セットの第4マ
ルチプレクサ298は第1セットの第7及び第8マルチ
プレクサ288、290の出力を入力として受ける。第
3セットのマルチプレクサ300−304は以下のよう
に入力を受ける。第3セットの第1マルチプレクサ30
0は第1入力バッファ272の第3ソースオブジェクト
S1[2] 及び第2セットの第2マルチプレクサ294の出
力を入力として受ける。第3セットの第2マルチプレク
サ302は第1入力バッファ272の第2ソースオブジ
ェクトS1[1] 及び第2セットの第3マルチプレクサ29
6の出力を入力として受ける。第3セットの第3マルチ
プレクサ304は第1入力バッファ272の第4ソース
オブジェクトS1[3] 及び第2セットの第4マルチプレク
サ298の出力を入力として受ける。
【0083】ツイスト及びジップユニットのこの部分も
4つの16ビットオブジェクトとしてパックされた64
ビットワードを収容することができる出力バッファ30
6を含む。第1結果オブジェクトR[0]は第2セットの第
1マルチプレクサ292から導出される。第2結果オブ
ジェクトR[1]乃至第3結果オブジェクトR[3]は第3セッ
トのマルチプレクサ300−304の出力から導出され
る。
【0084】タイプユニット306はライン160で図
2のルートオペコードユニット82からのオペコードを
受ける。タイプユニットはユニットのこの部分によって
実行される再構成インストラクションのタイプに応じて
3つの信号を生成する。この信号は、flip2n2v2p、flip
2n4v2p及びflip2n2v4pである。これらの信号はORゲート
308に与えられ、このゲートの出力は出力バッファ3
06を制御する。Double信号58は第1セットのマルチ
プレクサ276乃至290を制御する。flip2n2v4p信号
は第2セットのマルチプレクサを制御する。flip2n2v2p
信号は第3セットのマルチプレクサを制御する。
【0085】ユニットのこの部分がflip2n2v2pユニット
を実行するために使用される場合、出力バッファはその
インストラクションのために図9に示された単一の出力
バッファである。flip2n4v2p又はflip2n2v4pインストラ
クションを実行するためにユニットのこの部分が使用さ
れると、出力バッファは図12を参照して上記に述べら
れたように動作する。
【0086】バイト複製及びバイトツイスト及びジップ
インストラクションの使用例が与えられる。以下の例に
おいて、アセンブリ表記はレジスタオペランドRn(n
は任意の数)を示す。定数オペランドはnである。ダブ
ル長結果を生成するインストラクションはレジスタのペ
アの一番目のみを特定する。次に結果の上部分が次のレ
ジスタに書き込まれる。ラベルは ":" が続くアルファ
ベット及び数字からなるストリングによって示される。
【0087】一つの有益な動作はマトリックス転置であ
る。
【0088】マトリックス転置 ジップ、アンジップ又はフリップはマトリックスを転置
するために使用される。単一のインストラクションだけ
で転置できないマトリックスは、より長いサブユニット
に動作する一連のステップで処理することができる。
【0089】マトリックスは、左上からスタートして順
に各行に沿って右下まで進むことで表される。この行順
序付け表示は機能ユニットの図で使用された表示と逆で
ある。
【0090】フリップの使用 例えば、フリップを使用した16ビットオブジェクトの
4×4マトリックスの転置において、4つの4分割部分
(それぞれは2×2の16ビットオブジェクトである)
は個々に転置され、4×4マトリックスの右上及び左下
の4分割部分はスワッピングされる。これは、マトリッ
クスを32ビットオブジェクトの2つのインターリーブ
された2×2マトリックスとして処理することによって
実行することができる。図14はこれを実行するための
動作を示す。
【0091】転置を実行するためのアセンブリコードは
外1に示される。
【0092】
【外1】
【0093】ジップの使用 ジップ(パーフェクトシャッフル)を使用して同じマト
リックスを転置するためには、16ビットオブジェク
ト、次に16ビットオブジェクトのペア、更に4つの1
6ビットオブジェクトについての一連のシャッフルが要
求される。
【0094】これを実行するためのアセンブリコードは
外2に示される。
【0095】
【外2】
【0096】アンジップの使用 アンジップ(パーフェクトソート)を使用して同じマト
リックスを転置するためには、16ビットオブジェクト
のソートが必要である。図16はこれを実行するための
動作を示す。
【0097】これを実行するためのアセンブリコードは
外3に示される。
【0098】
【外3】
【0099】外3はアンジップを使用したバイトの4×
4マトリックスの転置を示す。
【0100】マトリックス乗算 マトリックス乗算は乗算累積のセットからなる。最も一
般的なケースはベクトル(1次元)とマトリックス(2
次元)を乗算して別のベクトルを生成することである。 M00...M0M-10...VN-1N-10...MN-1M-1
【0101】[V] 及び[M] が16ビットデータを含むな
らば、演算を行うためにパック16ビット乗算を使用す
ることができる。
【0102】乗算を行うための一つの方法は、バイト複
製インストラクションを使用してベクトルの各要素を複
製し、複製された各要素とマトリックスの正確な行のパ
ック乗算を実行し、部分積のパック加算を行うことであ
る。マトリックス転置の必要はないことに注意すべきで
ある。これを実行するためのコードシーケンスは外4に
示される。
【0103】
【外4】
【0104】ベクトル要素の複製の別の方法はジップを
使用することである。図17はこれを実行するための動
作を示す。
【0105】マトリックス乗算のために行うコードシー
ケンスは外5に示される。
【0106】
【外5】
【0107】データフォーマット変換 異なるフォーマット間の変換はジップ及びアンジップに
よって実行されうる。より大きなフォーマットへの符号
付き変換には、符号ビットを複製することが必要であ
り、これは符号付き右シフトによって実行される。表1
は種々の符号なしフォーマット間の変換に要求されるイ
ンストラクションを示し、表2は符号付き変換を示す。
【0108】
【表1】
【0109】
【表2】
【0110】ストリングサーチ ストリングが特定のキャラクタを含んでいるかを知る必
要があるときにストリングサーチが使用される。サーチ
キャラクタを複製し、パック比較を実行することによっ
て、幾つかのキャラクタが同時にテストされることがで
きる。このサーチのコードシーケンスは外6に示され
る。
【0111】
【外6】
【0112】複製 1、2又は4バイトオブジェクトの複製を実行するため
にジップ、アンジップ又はフリップを使用することが可
能である。外7、外8及び外9はそれぞれどのようにし
て最右のバイトを複製するかを示す。
【0113】
【外7】
【0114】
【外8】
【0115】
【外9】
【0116】RGBαと平面ビデオフォーマットとの変
グラフィックス環境で使用するためには、RGBα(又
はパック)フォーマットは、単一のピクセルのレッド、
グリーン、ブルー及びアルファカラー情報を含む4つの
連続バイトである。従って、各ピクセルは4つの連続バ
イトを含む。平面フォーマットはレッド、グリーン、ブ
ルー及びアルファカラー情報の全てがメモリの別個の領
域に記憶されている場合である。従って全ての同じカラ
ー情報は連続的であり、各ピクセルはメモリの4つの非
連続バイトに対応する。
【0117】RGBαフォーマットと平面フォーマット
の変換はジップ又はアンジップによって実行される。ジ
ップを使用したRGBαから平面への変換シーケンスは
外10に示され、アンジップを使用した変換シーケンス
は外11に示される。
【0118】
【外10】
【0119】
【外11】
【0120】ジップを使用した平面からRGBαへの変
換シーケンスは外12に示され、アンジップを使用した
変換シーケンスは外13に示される。
【0121】
【外12】
【0122】
【外13】
【0123】フリップを使用して変換を実行することも
可能であるが、ピクセルがインターリーブするため望ま
しくない。
【0124】回転 ジップ又はアンジップによってマトリックス回転を実行
することができる。このためのシーケンスは外14及び
外15に示される。グラフィックオブジェクトの回転を
サポートするために類似したシーケンスを使用すること
もできる。
【0125】
【外14】
【0126】
【外15】
【図面の簡単な説明】
【図1】コンピュータのプロセッサ及びメモリのブロッ
ク図である。
【図2】パック演算ユニットのブロック図である。
【図3】図面において使用される記号の意味を示す。
【図4】2つのパックソースオペランドに動作する明確
なパック演算ユニットのブロック図である。
【図5】パックソースオペランド及びアンパックソース
オペランドに動作する明確な演算パックユニットのブロ
ック図である。
【図6】バイト複製ユニットを示す。
【図7】ジップ及びアンジップ再構成動作を示す。
【図8】フリップ再構成動作を示す。
【図9】64ビットジップ及びアンジップを実行するツ
イスト及びジップユニットの部分を示す。
【図10】ダブル長8ビットジップ及びアンジップを実
行するツイスト及びジップユニットの部分を示す。
【図11】ダブル長16ビット及び32ビットジップ
及びアンジップを実行するツイスト及びジップユニット
の部分を示す。
【図12】8ビットフリップを実行するツイスト及びジ
ップユニットの部分を示す。
【図13】16ビット及び32ビットフリップを実行す
るツイスト及びジップユニットの部分を示す。
【図14】フリップインストラクションを使用したマト
リックス転置を示す。
【図15】ジップインストラクションを使用したマトリ
ックス転置を示す。
【図16】アンジップインストラクションを使用したマ
トリックス転置を示す。
【図17】ジップインストラクションを使用して複製が
どのように実行されるかを示す。
───────────────────────────────────────────────────── フロントページの続き (72)発明者 キャサリン ルイス バーナビィー イギリス国 BS17 2QY ブリストル コールピット ヒース ラウンドウェイ ズ 183

Claims (16)

    【特許請求の範囲】
  1. 【請求項1】 コンピュータであって、プロセッサ及び
    離散データの複数のサブストリングを有するデータスト
    リングを処理するためのデータ記憶回路を有し、前記サ
    ブストリングは同じビット長を有する第1サブストリン
    グ、最終サブストリング及び少なくとも四つの中間サブ
    ストリングを有し、前記コンピュータは少なくとも一つ
    のデータストリング再構成インストラクションを含むイ
    ンストラクションセットを有し、前記再構成インストラ
    クション又は各再構成インストラクションがデータスト
    リングに実行されて前記第1及び最終サブストリングを
    変わらない位置で保持し、再構成されたデータにおいて
    少なくとも二つの中間サブストリングの位置を互いに交
    換する、コンピュータ。
  2. 【請求項2】 前記データストリングは前記データスト
    リングの第1の半分を形成するビットの第1シーケンス
    及び前記データストリングの第2の半分を形成するビッ
    トの第2シーケンスによって形成された偶数のサブスト
    リングを含み、前記再構成インストラクションが実行さ
    れて前記第1シーケンスから選択されたサブストリング
    と前記第2シーケンスから選択されたサブストリングを
    交換する、請求項1記載のコンピュータ。
  3. 【請求項3】 前記再構成インストラクションが実行さ
    れて前記再構成データストリングにおいて前記第1及び
    第2シーケンスからのサブストリングを1つ置きに配置
    する、請求項2記載のコンピュータ。
  4. 【請求項4】 前記再構成インストラクションが実行さ
    れて前記データストリングの各半分の1つ置きのサブス
    トリングを変わらない位置で保持し、変わらない位置の
    前記第1及び最終サブストリングを保持する、請求項2
    又は3記載のコンピュータ。
  5. 【請求項5】 前記再構成インストラクションが実行さ
    れてデータストリングの半分の奇数番目のサブストリン
    グ間に前記データストリングの他方の半分の奇数番目の
    サブストリングを挿入する、請求項1乃至4記載のコン
    ピュータ。
  6. 【請求項6】 データ記憶回路は各々が単一のアドレス
    によってアドレス可能な予め決められたビット容量を有
    する複数のレジスタ記憶装置を有する、前述の請求項の
    いずれかに記載のコンピュータ。
  7. 【請求項7】 データストリングは再構成インストラ
    クションの実行の前に前記レジスタ記憶装置の一つに保
    持される、請求項6記載のコンピュータ。
  8. 【請求項8】 データストリングは二つのレジスタ記
    憶装置の内容を有し再構成インストラクションの実行の
    前に二つのレジスタ記憶装置に保持される、請求項6記
    載のコンピュータ。
  9. 【請求項9】 コンピュータであって、前記コンピュ
    ータはプロセッサ、メモリ及びデータストリング内の離
    散データのサブストリングを形成するビットシーケンス
    を保持するデータ記憶回路を有し、前記コンピュータは
    インストラクションシーケンスを前記メモリに記憶し、
    そのインストラクションシーケンスはデータストリング
    内の前記サブストリングの識別なしで前記データストリ
    ングのサブストリングに共通動作を指定する第1インス
    トラクション、データストリング内の別個のサブストリ
    ングを識別し、少なくとも一つのサブストリングを変わ
    らない位置で保持しつつデータストリング内の少なくと
    も二つのサブストリングの位置を互いに交換してデータ
    ストリングを再構成する第2インストラクション及びデ
    ータストリング内の前記サブストリングの識別なしで再
    構成されたデータストリングのサブストリングに更に共
    通動作を指定する第3インストラクションを含む、コン
    ピュータ。
  10. 【請求項10】 前記第2インストラクションは前記
    データストリングにおいて前記データストリングの第1
    及び最終サブストリングを変わらない位置で保持する、
    請求項9記載のコンピュータ。
  11. 【請求項11】 コンピュータを動作させる方法であ
    って、その方法は、離散データを表しデータストリング
    の複数のサブストリングの一つを形成する複数のビット
    シーケンスをデータ記憶装置に保持し、各サブストリン
    グは同じビット長を有する第1サブストリング、最終サ
    ブストリング及び少なくとも4つの中間サブストリング
    を含み、更に少なくとも一つのデータストリング再構成
    インストラクションを含むインストラクションシーケン
    スを実行し、再構成インストラクション又は各再構成イ
    ンストラクションが実行されて前記再構成データストリ
    ングの第1の半分を形成する第1ビットシーケンス及び
    前記再構成データストリングの第2の半分を形成する第
    2ビットシーケンスによって形成された偶数のサブスト
    リングを含む再構成データストリングを生成し、前記再
    構成インストラクションが実行されて互いに隣接する原
    データストリングの第1サブストリング及び1つ置いた
    次のサブストリングを配置することによって第1シーケ
    ンスを生成し、互いに隣接する原データストリングの第
    2サブストリング及び1つ置いた次のサブストリングを
    配置することによって第2シーケンスを生成する、コン
    ピュータ動作方法。
  12. 【請求項12】 コンピュータを動作させる方法であ
    って、その方法は、各々が離散データを表しデータスト
    リングの複数のサブストリングの一つを形成する複数の
    ビットシーケンスをデータ記憶装置に保持し、前記サブ
    ストリングはそれぞれ同じビット長を有する第1サブス
    トリング、最終サブストリング及び少なくとも二つの中
    間サブストリングを含み、更に少なくとも一つのデータ
    ストリング再構成インストラクションを含むインストラ
    クションシーケンスを実行し、前記再構成インストラク
    ション又は各再構成インストラクションがデータストリ
    ングに実行されて第1及び最終サブストリングを変わら
    ない位置で保持し、再構成されたデータストリングにお
    いて少なくとも二つの中間サブストリングの位置を互い
    に交換する、コンピュータ動作方法。
  13. 【請求項13】 前記データストリングは前記データ
    ストリングの第1の半分を形成する第1ビットシーケン
    ス及び前記データストリングの第2の半分を形成する第
    2ビットシーケンスによって形成された偶数のサブスト
    リングを含み、前記再構成インストラクションが実行さ
    れて前記第1シーケンスから選択されたサブストリング
    と前記第2シーケンスから選択されたサブストリングを
    交換する、請求項12記載の方法。
  14. 【請求項14】 前記再構成インストラクションが実
    行されて前記再構成データストリングにおいて前記第1
    及び第2シーケンスからのサブストリングを1つ置きに
    配置する、請求項13記載の方法。
  15. 【請求項15】 前記再構成インストラクションが実
    行されて前記データストリングの各半分の1つ置きのサ
    ブストリングを変わらない位置で保持し変わらない位置
    の前記第1及び最終サブストリングを保持する請求項1
    3又は14記載の方法。
  16. 【請求項16】 前記再構成インストラクションが実
    行されてデータストリングの半分の奇数番目のサブスト
    リング間に前記データストリングの他方の半分からの奇
    数番目のサブストリングを挿入する、請求項13乃至1
    5のいずれかに従った方法。
JP14661996A 1995-05-17 1996-05-16 コンピュータ及びコンピュータ動作方法 Expired - Fee Related JP3771968B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
GB9509987-5 1995-05-17
GBGB9509987.5A GB9509987D0 (en) 1995-05-17 1995-05-17 Manipulation of data

Publications (2)

Publication Number Publication Date
JPH08314717A true JPH08314717A (ja) 1996-11-29
JP3771968B2 JP3771968B2 (ja) 2006-05-10

Family

ID=10774615

Family Applications (1)

Application Number Title Priority Date Filing Date
JP14661996A Expired - Fee Related JP3771968B2 (ja) 1995-05-17 1996-05-16 コンピュータ及びコンピュータ動作方法

Country Status (5)

Country Link
US (1) US6145077A (ja)
EP (2) EP0743592B1 (ja)
JP (1) JP3771968B2 (ja)
DE (1) DE69622637T2 (ja)
GB (1) GB9509987D0 (ja)

Cited By (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007514227A (ja) * 2003-12-09 2007-05-31 アーム・リミテッド レジスタとメモリとの間でデータを移動するためのデータ処理装置および方法
JP2007514226A (ja) * 2003-12-09 2007-05-31 アーム・リミテッド データ処理レジスタに別名を付ける装置および方法
JP2007535020A (ja) * 2003-12-09 2007-11-29 アーム・リミテッド レジスタとメモリとの間でデータを移動するためのデータ処理装置および方法
JP2009545823A (ja) * 2006-08-02 2009-12-24 クゥアルコム・インコーポレイテッド マイクロプロセッサ内の複数のレジスタ部を組み合わせる方法およびシステム
JP2012190389A (ja) * 2011-03-14 2012-10-04 Ricoh Co Ltd プロセッサ装置及びその演算方法
JP2017529601A (ja) * 2014-09-25 2017-10-05 インテル・コーポレーション ビットシャッフルプロセッサ、方法、システム、および命令
JP2017529597A (ja) * 2014-09-25 2017-10-05 インテル・コーポレーション ビット群インターリーブプロセッサ、方法、システムおよび命令
JP2017534981A (ja) * 2014-11-14 2017-11-24 インテル・コーポレーション 3次元モートン座標変換プロセッサ、方法、システム、及び命令
JP2018500630A (ja) * 2014-11-14 2018-01-11 インテル・コーポレーション 4次元モートン座標変換プロセッサ、方法、システム、及び命令
JP2020501270A (ja) * 2016-12-13 2020-01-16 エイアールエム リミテッド パーティション・レプリケート命令
US11977884B2 (en) 2016-12-13 2024-05-07 Arm Limited Replicate elements instruction

Families Citing this family (82)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6643765B1 (en) * 1995-08-16 2003-11-04 Microunity Systems Engineering, Inc. Programmable processor with group floating point operations
GB9801713D0 (en) * 1998-01-27 1998-03-25 Sgs Thomson Microelectronics Executing permutations
US7133040B1 (en) * 1998-03-31 2006-11-07 Intel Corporation System and method for performing an insert-extract instruction
JP2000322235A (ja) * 1999-05-07 2000-11-24 Sony Corp 情報処理装置
GB2352065B (en) * 1999-07-14 2004-03-03 Element 14 Ltd A memory access system
US7546444B1 (en) 1999-09-01 2009-06-09 Intel Corporation Register set used in multithreaded parallel processor architecture
EP1122688A1 (en) * 2000-02-04 2001-08-08 Texas Instruments Incorporated Data processing apparatus and method
US7681018B2 (en) 2000-08-31 2010-03-16 Intel Corporation Method and apparatus for providing large register address space while maximizing cycletime performance for a multi-threaded register file set
US20020053017A1 (en) * 2000-09-01 2002-05-02 Adiletta Matthew J. Register instructions for a multithreaded processor
US7620832B2 (en) * 2000-09-20 2009-11-17 Mips Technologies, Inc. Method and apparatus for masking a microprocessor execution signature
US7711763B2 (en) 2001-02-21 2010-05-04 Mips Technologies, Inc. Microprocessor instructions for performing polynomial arithmetic operations
US7162621B2 (en) 2001-02-21 2007-01-09 Mips Technologies, Inc. Virtual instruction expansion based on template and parameter selector information specifying sign-extension or concentration
US7237097B2 (en) * 2001-02-21 2007-06-26 Mips Technologies, Inc. Partial bitwise permutations
US7181484B2 (en) 2001-02-21 2007-02-20 Mips Technologies, Inc. Extended-precision accumulation of multiplier output
US7318145B1 (en) 2001-06-01 2008-01-08 Mips Technologies, Inc. Random slip generator
US7305540B1 (en) 2001-12-31 2007-12-04 Apple Inc. Method and apparatus for data processing
US6822654B1 (en) 2001-12-31 2004-11-23 Apple Computer, Inc. Memory controller chipset
US7114058B1 (en) 2001-12-31 2006-09-26 Apple Computer, Inc. Method and apparatus for forming and dispatching instruction groups based on priority comparisons
US7034849B1 (en) 2001-12-31 2006-04-25 Apple Computer, Inc. Method and apparatus for image blending
US6931511B1 (en) 2001-12-31 2005-08-16 Apple Computer, Inc. Parallel vector table look-up with replicated index element vector
US7015921B1 (en) 2001-12-31 2006-03-21 Apple Computer, Inc. Method and apparatus for memory access
US6573846B1 (en) 2001-12-31 2003-06-03 Apple Computer, Inc. Method and apparatus for variable length decoding and encoding of video streams
US6877020B1 (en) 2001-12-31 2005-04-05 Apple Computer, Inc. Method and apparatus for matrix transposition
US7558947B1 (en) 2001-12-31 2009-07-07 Apple Inc. Method and apparatus for computing vector absolute differences
US7055018B1 (en) 2001-12-31 2006-05-30 Apple Computer, Inc. Apparatus for parallel vector table look-up
US6693643B1 (en) 2001-12-31 2004-02-17 Apple Computer, Inc. Method and apparatus for color space conversion
US6697076B1 (en) 2001-12-31 2004-02-24 Apple Computer, Inc. Method and apparatus for address re-mapping
US7467287B1 (en) 2001-12-31 2008-12-16 Apple Inc. Method and apparatus for vector table look-up
US7681013B1 (en) 2001-12-31 2010-03-16 Apple Inc. Method for variable length decoding using multiple configurable look-up tables
US7437724B2 (en) * 2002-04-03 2008-10-14 Intel Corporation Registers for data transfers
US7272835B2 (en) * 2002-06-28 2007-09-18 International Business Machines Corporation Apparatus and method for obtaining a string representation of objects in displayed hierarchical structures
US6781528B1 (en) 2002-10-24 2004-08-24 Apple Computer, Inc. Vector handling capable processor and run length encoding
US6707398B1 (en) 2002-10-24 2004-03-16 Apple Computer, Inc. Methods and apparatuses for packing bitstreams
US6707397B1 (en) 2002-10-24 2004-03-16 Apple Computer, Inc. Methods and apparatus for variable length codeword concatenation
US6781529B1 (en) * 2002-10-24 2004-08-24 Apple Computer, Inc. Methods and apparatuses for variable length encoding
US7395527B2 (en) 2003-09-30 2008-07-01 International Business Machines Corporation Method and apparatus for counting instruction execution and data accesses
US7937691B2 (en) 2003-09-30 2011-05-03 International Business Machines Corporation Method and apparatus for counting execution of specific instructions and accesses to specific data locations
US20050071516A1 (en) * 2003-09-30 2005-03-31 International Business Machines Corporation Method and apparatus to autonomically profile applications
US7373637B2 (en) 2003-09-30 2008-05-13 International Business Machines Corporation Method and apparatus for counting instruction and memory location ranges
US7421681B2 (en) 2003-10-09 2008-09-02 International Business Machines Corporation Method and system for autonomic monitoring of semaphore operation in an application
US8381037B2 (en) 2003-10-09 2013-02-19 International Business Machines Corporation Method and system for autonomic execution path selection in an application
GB2409064B (en) * 2003-12-09 2006-09-13 Advanced Risc Mach Ltd A data processing apparatus and method for performing in parallel a data processing operation on data elements
GB2409060B (en) * 2003-12-09 2006-08-09 Advanced Risc Mach Ltd Moving data between registers of different register data stores
GB2409061B (en) * 2003-12-09 2006-09-13 Advanced Risc Mach Ltd Table lookup operation within a data processing system
GB2411973B (en) * 2003-12-09 2006-09-27 Advanced Risc Mach Ltd Constant generation in SMD processing
GB2409068A (en) * 2003-12-09 2005-06-15 Advanced Risc Mach Ltd Data element size control within parallel lanes of processing
GB2411974C (en) * 2003-12-09 2009-09-23 Advanced Risc Mach Ltd Data shift operations
GB2411975B (en) * 2003-12-09 2006-10-04 Advanced Risc Mach Ltd Data processing apparatus and method for performing arithmetic operations in SIMD data processing
GB2409067B (en) * 2003-12-09 2006-12-13 Advanced Risc Mach Ltd Endianess compensation within a SIMD data processing system
GB2411976B (en) * 2003-12-09 2006-07-19 Advanced Risc Mach Ltd A data processing apparatus and method for moving data between registers and memory
GB2409063B (en) * 2003-12-09 2006-07-12 Advanced Risc Mach Ltd Vector by scalar operations
GB2410097B (en) * 2004-01-13 2006-11-01 Advanced Risc Mach Ltd A data processing apparatus and method for performing data processing operations on floating point data elements
US7392370B2 (en) 2004-01-14 2008-06-24 International Business Machines Corporation Method and apparatus for autonomically initiating measurement of secondary metrics based on hardware counter values for primary metrics
US7526757B2 (en) 2004-01-14 2009-04-28 International Business Machines Corporation Method and apparatus for maintaining performance monitoring structures in a page table for use in monitoring performance of a computer program
US7415705B2 (en) 2004-01-14 2008-08-19 International Business Machines Corporation Autonomic method and apparatus for hardware assist for patching code
US7895382B2 (en) 2004-01-14 2011-02-22 International Business Machines Corporation Method and apparatus for qualifying collection of performance monitoring events by types of interrupt when interrupt occurs
US7496908B2 (en) 2004-01-14 2009-02-24 International Business Machines Corporation Method and apparatus for optimizing code execution using annotated trace information having performance indicator and counter information
GB2411978B (en) * 2004-03-10 2007-04-04 Advanced Risc Mach Ltd Inserting bits within a data word
US7987453B2 (en) * 2004-03-18 2011-07-26 International Business Machines Corporation Method and apparatus for determining computer program flows autonomically using hardware assisted thread stack tracking and cataloged symbolic data
US7421684B2 (en) 2004-03-22 2008-09-02 International Business Machines Corporation Method and apparatus for autonomic test case feedback using hardware assistance for data coverage
US7386690B2 (en) * 2004-04-29 2008-06-10 International Business Machines Corporation Method and apparatus for hardware awareness of data types
US7269718B2 (en) * 2004-04-29 2007-09-11 International Business Machines Corporation Method and apparatus for verifying data types to be used for instructions and casting data types if needed
US20050251706A1 (en) * 2004-04-29 2005-11-10 International Business Machines Corporation Method and apparatus for data-aware hardware operations
US7895473B2 (en) * 2004-04-29 2011-02-22 International Business Machines Corporation Method and apparatus for identifying access states for variables
US7328374B2 (en) * 2004-04-29 2008-02-05 International Business Machines Corporation Method and apparatus for implementing assertions in hardware
US9557994B2 (en) * 2004-07-13 2017-01-31 Arm Limited Data processing apparatus and method for performing N-way interleaving and de-interleaving operations where N is an odd plural number
US8127117B2 (en) 2006-05-10 2012-02-28 Qualcomm Incorporated Method and system to combine corresponding half word units from multiple register units within a microprocessor
US7453377B2 (en) * 2006-08-09 2008-11-18 Reti Corporation Apparatus and methods for searching a pattern in a compressed data
GB2444744B (en) * 2006-12-12 2011-05-25 Advanced Risc Mach Ltd Apparatus and method for performing re-arrangement operations on data
US8924401B2 (en) * 2010-04-30 2014-12-30 Infosys Limited Method and system for logical data masking
US20160139921A1 (en) * 2014-11-14 2016-05-19 Intel Corporation Vector instruction to compute coordiante of next point in a z-order curve
US9772850B2 (en) * 2014-11-14 2017-09-26 Intel Corporation Morton coordinate adjustment processors, methods, systems, and instructions
US20160139919A1 (en) * 2014-11-14 2016-05-19 Intel Corporation Machine Level Instructions to Compute a 3D Z-Curve Index from 3D Coordinates
US20160139924A1 (en) * 2014-11-14 2016-05-19 Intel Corporation Machine Level Instructions to Compute a 4D Z-Curve Index from 4D Coordinates
US20170192780A1 (en) * 2015-12-30 2017-07-06 Robert Valentine Systems, Apparatuses, and Methods for Getting Even and Odd Data Elements
US10255462B2 (en) 2016-06-17 2019-04-09 Arm Limited Apparatus and method for obfuscating power consumption of a processor
US10564967B2 (en) 2017-03-03 2020-02-18 International Business Machines Corporation Move string processing via inline decode-based micro-operations expansion
US10613862B2 (en) * 2017-03-03 2020-04-07 International Business Machines Corporation String sequence operations with arbitrary terminators
US10620956B2 (en) 2017-03-03 2020-04-14 International Business Machines Corporation Search string processing via inline decode-based micro-operations expansion
US10564965B2 (en) 2017-03-03 2020-02-18 International Business Machines Corporation Compare string processing via inline decode-based micro-operations expansion
US10789069B2 (en) 2017-03-03 2020-09-29 International Business Machines Corporation Dynamically selecting version of instruction to be executed
US10324716B2 (en) 2017-03-03 2019-06-18 International Business Machines Corporation Selecting processing based on expected value of selected character

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3810112A (en) * 1972-12-18 1974-05-07 Bell Lab Inc Shift-shuffle memory system with rapid sequential access
US4727474A (en) * 1983-02-18 1988-02-23 Loral Corporation Staging memory for massively parallel processor
JPS63292185A (ja) * 1987-05-25 1988-11-29 日本電気株式会社 デジタル入出力回路
JP2633331B2 (ja) * 1988-10-24 1997-07-23 三菱電機株式会社 マイクロプロセッサ
KR0181471B1 (ko) * 1990-07-27 1999-05-15 윌리암 피.브레이든 컴퓨터 데이타 경로배정 시스템
US5471628A (en) * 1992-06-30 1995-11-28 International Business Machines Corporation Multi-function permutation switch for rotating and manipulating an order of bits of an input data byte in either cyclic or non-cyclic mode
US5524256A (en) * 1993-05-07 1996-06-04 Apple Computer, Inc. Method and system for reordering bytes in a data stream
US5590352A (en) * 1994-04-26 1996-12-31 Advanced Micro Devices, Inc. Dependency checking and forwarding of variable width operands
GB9509983D0 (en) * 1995-05-17 1995-07-12 Sgs Thomson Microelectronics Replication of data
GB9509988D0 (en) * 1995-05-17 1995-07-12 Sgs Thomson Microelectronics Matrix transposition
GB9509989D0 (en) * 1995-05-17 1995-07-12 Sgs Thomson Microelectronics Manipulation of data

Cited By (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007514227A (ja) * 2003-12-09 2007-05-31 アーム・リミテッド レジスタとメモリとの間でデータを移動するためのデータ処理装置および方法
JP2007514226A (ja) * 2003-12-09 2007-05-31 アーム・リミテッド データ処理レジスタに別名を付ける装置および方法
JP2007535020A (ja) * 2003-12-09 2007-11-29 アーム・リミテッド レジスタとメモリとの間でデータを移動するためのデータ処理装置および方法
US7822947B2 (en) 2003-12-09 2010-10-26 Arm Limited Aliasing data processing registers
JP2009545823A (ja) * 2006-08-02 2009-12-24 クゥアルコム・インコーポレイテッド マイクロプロセッサ内の複数のレジスタ部を組み合わせる方法およびシステム
US8417922B2 (en) 2006-08-02 2013-04-09 Qualcomm Incorporated Method and system to combine multiple register units within a microprocessor
JP2013242879A (ja) * 2006-08-02 2013-12-05 Qualcomm Inc マイクロプロセッサ内の複数のレジスタ部を組み合わせる方法およびシステム
JP2012190389A (ja) * 2011-03-14 2012-10-04 Ricoh Co Ltd プロセッサ装置及びその演算方法
JP2017529601A (ja) * 2014-09-25 2017-10-05 インテル・コーポレーション ビットシャッフルプロセッサ、方法、システム、および命令
JP2017529597A (ja) * 2014-09-25 2017-10-05 インテル・コーポレーション ビット群インターリーブプロセッサ、方法、システムおよび命令
US10713044B2 (en) 2014-09-25 2020-07-14 Intel Corporation Bit shuffle processors, methods, systems, and instructions
JP2017534981A (ja) * 2014-11-14 2017-11-24 インテル・コーポレーション 3次元モートン座標変換プロセッサ、方法、システム、及び命令
JP2018500630A (ja) * 2014-11-14 2018-01-11 インテル・コーポレーション 4次元モートン座標変換プロセッサ、方法、システム、及び命令
JP2020501270A (ja) * 2016-12-13 2020-01-16 エイアールエム リミテッド パーティション・レプリケート命令
US11947962B2 (en) 2016-12-13 2024-04-02 Arm Limited Replicate partition instruction
US11977884B2 (en) 2016-12-13 2024-05-07 Arm Limited Replicate elements instruction

Also Published As

Publication number Publication date
EP0743592B1 (en) 2002-07-31
EP1197845A2 (en) 2002-04-17
DE69622637T2 (de) 2003-02-06
US6145077A (en) 2000-11-07
EP1197845A3 (en) 2002-07-03
GB9509987D0 (en) 1995-07-12
EP0743592A1 (en) 1996-11-20
DE69622637D1 (de) 2002-09-05
JP3771968B2 (ja) 2006-05-10

Similar Documents

Publication Publication Date Title
JP3771968B2 (ja) コンピュータ及びコンピュータ動作方法
JP3138209B2 (ja) マトリックス転置方法
JP3150286B2 (ja) データストリング生成方法、コンピュータ動作方法、コンピュータシステムによるマトリックス乗算方法、及びコンピュータ
JPH08328849A (ja) コンピュータ及びコンピュータ動作方法
KR100996888B1 (ko) 앨리어싱 데이터 처리 레지스터
KR100991984B1 (ko) 레지스터와 메모리 사이에 데이터를 이동시키는 데이터처리장치 및 방법
KR101099467B1 (ko) 레지스터와 메모리 사이에 데이터를 이동시키는 데이터처리장치 및 방법
US5933650A (en) Alignment and ordering of vector elements for single instruction multiple data processing
JP2905446B2 (ja) データストリング生成方法、コンピュータ動作方法、ピクセル値セット生成方法及びコンピュータ
US7793077B2 (en) Alignment and ordering of vector elements for single instruction multiple data processing
US6381690B1 (en) Processor for performing subword permutations and combinations
US7689811B2 (en) Method and apparatus for constant generation in SIMD processing
EP0754998A1 (en) An arithmetic unit
EP0755015B1 (en) Combining data values
US5673321A (en) Efficient selection and mixing of multiple sub-word items packed into two or more computer words
JP4955149B2 (ja) ビットfifoを有するディジタル信号プロセッサ
JPH06103062A (ja) コンピュータ処理装置に利用できるレジスタ数を増大させる装置
US6865272B2 (en) Executing permutations
Blinn Fugue for MMX [parallel programming]
JPH0540622A (ja) デジタル信号処理装置

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20050221

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20050301

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20050526

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20050607

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20050901

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20050927

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20051216

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: 20060117

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20060213

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: 20100217

Year of fee payment: 4

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20110217

Year of fee payment: 5

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120217

Year of fee payment: 6

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120217

Year of fee payment: 6

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130217

Year of fee payment: 7

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130217

Year of fee payment: 7

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

S531 Written request for registration of change of domicile

Free format text: JAPANESE INTERMEDIATE CODE: R313531

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130217

Year of fee payment: 7

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees