(57)【要約】【課題】既存の整数演算用ＰＥを利用している従来の再構成アレイプロセッサとほぼ類似したハードウェアのサイズを有しつつも、浮動小数点演算（floating point operation）を比較的速く行うことができ、低電力であり、かつ性能対価格の高特性を有する再構成アレイ（reconfigurable array）プロセッサ、及びそのプロセッサを含んだマルチメディア・プラットホームである。【解決手段】浮動小数点演算を行うためのプロセッサは浮動小数点演算を行うことができるように配されたプロセッシング要素アレイを含む。各プロセッシング要素は、２つの入力値を受け、入力値に対する整数演算を行う演算装置を含む。該アレイ内のプロセッシング要素は、浮動小数点演算のために、２つ以上のグループに共に連結される。【選択図】図４
2010539582.tif 000002
【特許請求の範囲】
【請求項１】
浮動小数点演算を行うことができるように構成されたプロセッシング要素アレイを含み、
前記各プロセッシング要素は、２つの入力値を受け、前記入力値に対する整数演算を行う演算装置を含み、前記アレイ内の前記プロセッシング要素は、浮動小数点演算のために、２つ以上の前記プロセッシング要素からなるグループに共に連結されることを特徴とするプロセッサ。
【請求項２】
前記演算装置は、１６ビット演算装置を含み、
前記アレイの前記プロセッシング要素は、連結されたプロセッシング要素間で、データ交換のために、メッシュ構造に互いに連結されていることを特徴とする請求項１に記載のプロセッサ。
【請求項３】
前記アレイは、それぞれのプロセッシング要素を利用した整数演算遂行、及び互いに連結された２つ以上のプロセッシング要素を利用した浮動小数点演算遂行のうち、少なくとも一つを行うように選択的に構成されることを特徴とする請求項２に記載のプロセッサ。
【請求項４】
前記アレイの１行または１列内の少なくとも２個のプロセッシング要素が、浮動小数点演算のための２つ以上のグループを形成するために共に連結されることを特徴とする請求項３に記載のプロセッサ。
【請求項５】
前記アレイは、前記整数演算時には、８×５配列構造で動作し、前記浮動小数点演算時には、前記アレイの各行内の２個のプロセッシング要素が連結され、４×５配列構造で動作するように選択的に構成されることを特徴とする請求項３に記載のプロセッサ。
【請求項６】
前記アレイの行または列内のプロセッシング要素によって行われる整数演算及び浮動小数点演算のうちの少なくとも１つの演算と、プロセッシング要素間のデータ通信と、を制御するコンテクストを保存するための、前記アレイに連結された構成キャッシュをさらに含み、
前記プロセッシング要素は、前記コンテクストに基づいて、行または列単位で構成されてパイプラインを形成し、前記コンテクストが指示する方向に、前記パイプライン動作の結果をフォワーディングすることを特徴とする請求項３に記載のプロセッサ。
【請求項７】
時間的マッピングを介して前記２つ以上のプロセッシング要素からなるグループの２つ以上の各グループは、前記整数演算または浮動小数点演算を行うように構成され、マルチサイクル演算を行うための制御信号のコンテクストを受け、サイクルごとに最終的な値が得られた後、前記コンテクストの制御信号を受けることを特徴とする請求項６に記載のプロセッサ。
【請求項８】
前記２つ以上のプロセッシング要素からなるグループの前記２つ以上のグループは、浮動小数点に係わる四則演算及び超越関数計算を行うことができるように構成されることを特徴とする請求項３に記載のプロセッサ。
【請求項９】
前記２つ以上のプロセッシング要素からなるグループの前記２つ以上の各グループは、前記四則演算遂行のために連結された２個のプロセッシング要素を含み、
各グループ内の２個の連結されたプロセッシング要素は、２個のオペランドの符号及び仮数が入力される仮数部プロセッシング要素、及び前記２個のオペランドの指数が入力される指数部プロセッシング要素を含むことを特徴とする請求項８に記載のプロセッサ。
【請求項１０】
前記仮数部プロセッシング要素は、前記２つのオペランドの仮数を乗じたり割ったりするために、乗算器及び除算器のうち、少なくとも一つに連結されており、
前記指数部プロセッシング要素は、前記２つのオペランドの指数を加えたり差し引いたりするために構成されたことを特徴とする請求項９に記載のプロセッサ。
【請求項１１】
前記各プロセッシング要素は、
前記演算装置に連結され、前記演算装置に少なくとも２個の入力値を提供する２個のマルチプレクサと、
前記演算装置に連結され、前記演算装置から受けた結果値にシフト演算を行うシフタと、
前記演算装置及びシフタに連結され、前記演算装置の中間結果値及びシフタの中間結果値を保存する臨時レジスタと、
前記演算装置及びシフタに連結され、前記演算装置の最終結果値及びシフタの最終結果値を保存する出力レジスタと、
を含み、
前記各マルチプレクサは、データバス、他のプロセッシング要素及び自らのレジスタファイルから受けたデータの中からデータを選択し、前記演算装置に、選択した前記データを入力し、前記出力レジスタに保存された最終結果値は、データバスを介して、他のプロセッシング要素または出力値に入力することを特徴とする請求項１に記載のプロセッサ。
【請求項１２】
一つ以上の浮動小数点演算を行うように構成されたプロセッシング要素アレイであって、前記アレイ内のプロセッシング要素は、２つ以上のプロセッシング要素からなるグループに共に連結されるプロセッシング要素アレイと、
前記アレイに連結され、前記アレイの行または列内でプロセッシング要素によって行われる一つ以上の演算遂行を制御し、前記プロセッシング要素間のデータ交換を可能にするように構成されたコンテクストを保存する構成キャッシュと、
前記アレイに連結され、前記アレイによって行われた一つ以上の演算遂行の臨時結果値を保存するフレームバッファと、
を含む再構成アレイプロセッサ。
【請求項１３】
前記各プロセッシング要素は、２つの入力値を受け、前記入力値を処理する演算装置を含み、前記アレイの前記プロセッシング要素は、前記プロセッシング要素間で、データ交換のために、メッシュ構造に互いに連結されていることを特徴とする請求項１２に記載の再構成アレイプロセッサ。
【請求項１４】
前記アレイは、前記各プロセッシング要素を利用して整数演算を遂行し、または、共に連結された２つ以上のプロセッシング要素からなるグループの２つ以上の各グループを利用し、一つ以上の浮動小数点演算を行うように、選択的に構成されることを特徴とする請求項１３に記載の再構成アレイプロセッサ。
【請求項１５】
２つ以上のプロセッシング要素からなるグループの前記２つ以上の各グループは、前記一つ以上の浮動小数点演算を行うように連結された前記アレイの列または行内の少なくとも２個のプロセッシング要素を含むことを特徴とする請求項１４に記載の再構成アレイプロセッサ。
【請求項１６】
前記アレイは、前記整数演算時には、８×５配列構造で遂行され、前記浮動小数点演算時には、各行内の２個のプロセッシング要素が連結され、４×５配列構造で遂行されるように選択的に構成されることを特徴とする請求項１５に記載の再構成アレイプロセッサ。
【請求項１７】
前記プロセッシング要素は、パイプラインを形成するために、前記コンテクストに基づいて、行または列単位で構成され、
前記パイプライン動作の結果は、前記コンテクストによって指示する方向にフォワーディングされることを特徴とする請求項１４に記載の再構成アレイプロセッサ。
【請求項１８】
２つ以上のプロセッシング要素からなるグループの前記２つ以上の各グループは、時間的マッピングを介して、前記整数演算遂行または前記一つ以上の浮動小数点演算を行うように構成され、マルチサイクル演算を行うための制御信号のコンテクストを受け、サイクルごとに最終値が得られた後、前記コンテクストの制御信号を受けることを特徴とする請求項１７に記載の再構成アレイプロセッサ。
【請求項１９】
２つ以上のプロセッシング要素からなるグループの前記２つ以上のグループは、浮動小数点に係わる四則演算及び超越関数計算を行うことができるように構成されたことを特徴とする請求項１４に記載の再構成アレイプロセッサ。
【請求項２０】
２つ以上のプロセッシング要素からなるグループの前記２つ以上の各グループは、前記四則演算遂行のために連結された２個のプロセッシング要素を含み、
前記各グループ内の２個の連結されたプロセッシング要素は、２個のオペランドの符号及び仮数が入力される仮数部プロセッシング要素、及び前記２個のオペランドの指数が入力される指数部プロセッシング要素を含むことを特徴とする請求項１９に記載の再構成アレイプロセッサ。
【請求項２１】
前記仮数部プロセッシング要素は、前記２つのオペランドの仮数を乗じたり割ったりするために、乗算器及び除算器のうち、少なくとも一つに連結されており、
前記指数部プロセッシング要素は、前記２つのオペランドの指数を加えたり差し引いたりするために構成されたことを特徴とする請求項２０に記載の再構成アレイプロセッサ。
【請求項２２】
前記フレームバッファは、２４ビット浮動小数点フォーマットを有することを特徴とする請求項２１に記載の再構成アレイプロセッサ。
【請求項２３】
前記２４ビット浮動小数点フォーマットは、１ビットの符号ビット、８ビットの指数ビット及び１５ビットの仮数ビットを含むことを特徴とする請求項２２に記載の再構成アレイプロセッサ。
【請求項２４】
前記仮数部プロセッシング要素は、入力された２つのオペランドの符号及び仮数を、前記フレームバッファの１符号ビット及び１５仮数ビットに変換し、変換された前記１符号ビット及び１５仮数ビットを、前記フレームバッファに保存し、
前記指数部プロセッシング要素は、入力された２つのオペランドの指数をフレームバッファの８指数ビットに変換し、変換された前記８指数ビットを、前記フレームビットに保存するように構成されたことを特徴とする請求項２３に記載の再構成アレイプロセッサ。
【請求項２５】
前記各プロセッシング要素、
前記演算装置に連結され、前記演算装置に少なくとも２個の入力値を提供する２個のマルチプレクサと、
前記演算装置に連結され、前記演算装置から受けた結果値にシフト演算を行うシフタと、
前記演算装置及びシフタに連結され、前記演算装置の中間結果値及びシフタの中間結果値を保存する臨時レジスタと、
前記演算装置及びシフタに連結され、前記演算装置の最終結果値及びシフタの最終結果値を保存する出力レジスタと、
を含み、
前記各マルチプレクサ、データバス、他のプロセッシング要素及び自らのレジスタファイルから受けたデータの中からデータを選択し、前記演算装置に選択された前記データを入力し、前記出力レジスタに保存された最終結果値は、データバスを介して、他のプロセッシング要素または出力値に入力されるようにすることを特徴とする請求項１４に記載の再構成アレイプロセッサ。
【請求項２６】
前記アレイは、粗粒度再構成アレイ（ＣＧＲＡ）を含むことを特徴とする請求項１２に記載の再構成アレイプロセッサ。
【請求項２７】
前記アレイに連結され、前記アレイ、構成キャッシュ及びフレームバッファの動作を制御する再構成アレイ制御部を含むことを特徴とする請求項２６に記載の再構成アレイプロセッサ。
【請求項２８】
複数の構成要素を含み、前記構成要素が一つ以上の浮動小数点演算を行うように構成されたプロセッシング要素アレイであって、前記アレイ内のプロセッシング要素が２つ以上のプロセッシング要素からなるグループに共に連結されるプロセッシング要素アレイと、前記アレイに連結され、前記アレイの行または列内でプロセッシング要素によって行われる一つ以上の演算遂行を制御し、前記プロセッシング要素間のデータ交換を可能にするように構成されたコンテクストを保存する構成キャッシュと、前記アレイに連結され、前記アレイによって行われた一つ以上の演算遂行の臨時結果値を保存するフレームバッファと、を含む再構成アレイプロセッサと、
前記再構成アレイプロセッサに連結されたシステムバスと、
前記システムバスを介して、前記再構成アレイプロセッサに連結され、前記再構成アレイプロセッサを制御してデータを保存する制御及びメモリ部と、
を含む演算プラットホーム。
【請求項２９】
前記制御及びメモリ部は、
データの処理及び制御を行う組み込みコアと、データ保存を行う外部メモリと、データ移動を行うディレクト・メモリアクセス（ＤＭＡ）コントローラと、を含むことを特徴とする請求項２８に記載の演算プラットホーム。
【請求項３０】
前記組み込みコアは、縮小命令セットコンピュータ（ＲＩＳＣ）プロセッサ、または、前記縮小命令セットコンピュータ・プロセッサ及び複雑命令セットコンピュータ（ＣＩＳＣ）プロセッサの特徴が混合された形態のプロセッサ、を含むことを特徴とする請求項２９に記載の演算プラットホーム。
【請求項３１】
前記マルチメディア・プラットホームは、
前記再構成アレイプロセッサの各構成要素が１つの前記システムバスを介して、前記制御及びメモリ部の各構成要素に連結されるようにＳｏＣ構造で具現されたことを特徴とする請求項３０に記載の演算プラットホーム。
【請求項３２】
前記各プロセッシング要素は、２つの入力値を受け、前記入力値を処理する演算装置を含み、
前記アレイの前記プロセッシング要素は、前記プロセッシング要素間で、データ交換のために、メッシュ構造に互いに連結されている特徴とする請求項２８に記載の演算プラットホーム。
【請求項３３】
前記アレイは、前記各プロセッシング要素利用した整数演算の遂行、または、共に連結された２つ以上のプロセッシング要素からなるグループの２つ以上の各グループを利用した一つ以上の浮動小数点演算の遂行、を選択的に行うように構成されることを特徴とする請求項３２に記載の演算プラットホーム。
【請求項３４】
前記プロセッシング要素は、パイプラインを形成するために、前記コンテクストに基づいて、行または列単位で構成され、
前記パイプライン動作の結果は、前記コンテクストによって指示する方向にフォワーディングされることを特徴とする請求項３３に記載の演算プラットホーム。
【請求項３５】
前記２つ以上のプロセッシング要素からなるグループの前記２つ以上の各グループは、時間的マッピングを介して、前記整数演算遂行または前記一つ以上の浮動小数点演算を行うように構成され、マルチサイクル演算を行うための制御信号のコンテクストを受け、サイクルごとに最終値が得られた後、前記コンテクストの制御信号を受けることを特徴とする請求項３４に記載の演算プラットホーム。
【請求項３６】
前記２つ以上のプロセッシング要素からなるグループの前記２つ以上のグループは、浮動小数点に係わる四則演算及び超越関数計算を行うことができるように構成されることを特徴とする請求項３０に記載の演算プラットホーム。
【請求項３７】
前記２つ以上のプロセッシング要素からなるグループの前記２つ以上の各グループは、前記四則演算遂行のために連結された２個のプロセッシング要素を含み、
各グループ内の２個の連結されたプロセッシング要素は、２個のオペランドの符号及び仮数が入力される仮数部プロセッシング要素、及び前記２個のオペランドの指数が入力される指数部プロセッシング要素を含むことを特徴とする請求項３６に記載の演算プラットホーム。
【請求項３８】
前記仮数部プロセッシング要素は、前記２つのオペランドの仮数を乗じたり割ったりするために、乗算器及び除算器のうち、少なくとも一つに連結されており、
前記指数部プロセッシング要素は、前記２つのオペランドの指数を加えたり差し引いたりするために構成されたことを特徴とする請求項３７に記載の演算プラットホーム。
【請求項３９】
前記フレームバッファは、１符号ビット、８指数ビット及び１５仮数ビットを含んだ２４ビット浮動小数点フォーマットを有することを特徴とする請求項３６に記載の演算プラットホーム。
【請求項４０】
前記各プロセッシング要素は、
前記演算装置に連結され、前記演算装置に少なくとも２個の入力値を提供する２個のマルチプレクサと、
前記演算装置に連結され、前記演算装置から受けた結果値にシフト演算を行うシフタと、
前記演算装置及びシフタに連結され、前記演算装置の中間結果値及びシフタの中間結果値を保存する臨時レジスタと、
前記演算装置及びシフタに連結され、前記演算装置の最終結果値及びシフタの最終結果値を保存する出力レジスタと、
を含み、
前記各マルチプレクサは、データバス、他のプロセッシング要素及び自らのレジスタファイルから受けたデータの中からデータを選択し、前記演算装置に選択された前記データを入力し、前記出力レジスタに保存された最終結果値は、データバスを介して、他のプロセッシング要素または出力値に入力することを特徴とする請求項３２に記載の演算プラットホーム。
【請求項４１】
前記再構成アレイプロセッサは、粗粒度再構成アレイ（ＣＧＲＡ）を含み、
前記再構成アレイプロセッサは、前記再構成アレイプロセッサの構成要素を制御するための、前記アレイに連結された再構成アレイ制御部を含むことを特徴とする請求項２８に記載の演算プラットホーム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はマルチメディア・プラットホーム（multimedia platforms）を含む、多様なアプリケーションに適合するデジタル情報プロセッシング及び装置に関する。
【背景技術】
【０００２】
複雑なデータプロセッシングを行うためのデジタル情報プロセッシング及び装置が、マルチメディア・プラットホームを含む多様なアプリケーションのために具現されうる。高品質のマルチメディア・サービスに対する要求が高まるにつれ、携帯電話（cellular telephones）、スマートホン（smart phones）、ＰＤＡｓ（personal digital assistances）のようなモバイルシステムで、オーディオデータ及び／またはビデオデータを効率的にプロセッシングするためのアプリケーション・プログラムが開発されうる。このようなアプリケーション・プログラムは、データ集中計算（data intensive computation）を行うことができ、当該プロセッサで作動するソフトウェア実装（ＳＩ：software implementation）を利用して具現されたり、またはＡＳＩＣ（application specific integrated circuit）タイプのハードウェア実装（ＨＩ：hardware implementation）を利用して具現されたりしうる。
【発明の概要】
【発明が解決しようとする課題】
【０００３】
従って、本発明が解決しようとする課題は、既存の整数演算用ＰＥを利用している従来の再構成アレイプロセッサとほぼ類似したハードウェアのサイズを有しつつも、浮動小数点演算（floating point operation）を比較的速く行うことができ、低電力であり、かつ性能対価格の高特性を有する再構成アレイ（reconfigurable array）プロセッサ、及びそのプロセッサを含んだマルチメディア・プラットホームを提供するところにある。
【課題を解決するための手段】
【０００４】
浮動小数点演算を行うためのデジタル情報プロセッシング及び装置が記述される。本発明は、浮動小数点演算を行うことができるように構成されたプロセッシング要素アレイ（array of processing elements）を含み、前記各プロセッシング要素は、２つの入力値を受け、前記入力値に対する整数演算を行う演算装置（arithmetic logic unit）を含むことを特徴とするプロセッサを提供する。前記アレイ内の前記プロセッシング要素は、浮動小数点演算のために、２つ以上の前記プロセッシング要素からなるグループに共に連結される。
【０００５】
本発明の一実施形態は、下記の特徴のうち、一つ以上を選択的に含むことができる。前記演算装置は、１６ビット演算装置を含むことができる。前記アレイの前記プロセッシング要素（ＰＥｓ：processing elements）は、連結されたプロセッシング要素間で、データ交換のために、メッシュ（mesh）構造に互いに連結されうる。また、前記アレイは、それぞれのプロセッシング要素を利用した整数演算遂行、及び互いに連結された２つ以上のプロセッシング要素のグループを利用した浮動小数点演算遂行のうち、少なくとも一つを行うように選択的に構成されうる。前記アレイの１行または１列内の少なくとも２個のプロセッシング要素が、浮動小数点演算のための２つ以上のグループを形成するために、共に連結されうる。前記アレイは、前記整数演算時には、８×５配列構造で動作し、前記浮動小数点演算時には、前記アレイの各行内の２個のプロセッシング要素が連結され、４×５配列構造で動作するように選択的に構成されうる。さらに、前記アレイの行または列内のプロセッシング要素によって行われる整数演算及び浮動小数点演算のうちの少なくとも１つの演算を制御するコンテクスト（context）を保存するための構成キャッシュが、前記アレイに連結されうる。前記構成キャッシュはまた、前記プロセッシング要素間のデータ交換を制御できる。前記プロセッシング要素は、前記コンテクストに基づいて、行または列単位で構成されてパイプライン（pipeline）を形成し、前記コンテクストが指示する方向に、前記パイプライン動作の結果をフォワーディングすることができる。
【０００６】
本発明の一実施形態は、下記の特徴のうち、一つ以上を選択的に含むことができる。２つ以上のプロセッシング要素からなるグループの前記２つ以上の各グループは、時間的マッピング（temporal mapping）を介して、前記整数演算または浮動小数点演算を行うように構成されうる。また、２つ以上のプロセッシング要素からなるグループの前記２つ以上の各グループは、整数演算遂行または浮動小数点演算遂行の最終値が獲得された後、次のコンテクストを受けるように構成されうる。さらに、２つ以上のプロセッシング要素からなるグループの前記２つ以上の各グループは、マルチサイクル演算を行うための制御信号をコンテクストから受け付けるように構成されうる。２つ以上のプロセッシング要素の前記２つ以上のグループは、浮動小数点に係わる四則演算及び超越関数演算を行うことができるように構成されうる。さらに、前記２つ以上のプロセッシング要素からなるグループの前記２つ以上の各グループは、前記四則演算遂行のために連結された２個のプロセッシング要素を含むことができる。各グループ内の２個の連結されたプロセッシング要素は、２個のオペランド（operand）の符号及び仮数（mantissa）が入力される仮数部プロセッシング要素、及び前記２個のオペランドの指数が入力される指数部プロセッシング要素を含むことができる。前記仮数部プロセッシング要素は、２つのオペランドの仮数を乗じたり割ったりするように、乗算器及び除算器のうち、少なくとも一つに連結される。前記指数部プロセッシング要素は、２つのオペランドの指数を加えたり差し引いたりするように構成されうる。さらに、前記各プロセッシング要素は、前記演算装置に連結され、前記演算装置に少なくとも２個の入力値を提供する２個のマルチプレクサ（multiplexer）を含むことができる。前記各プロセッシング要素はまた、前記演算装置に連結され、前記演算装置から受けた結果値にシフト演算を行うシフタ（shifter）を含むことができる。また、臨時レジスタが前記演算装置の中間結果値及びシフタの中間結果値を保存するために、前記演算装置及びシフタに連結されうる。さらに、出力レジスタが前記演算装置の最終結果値及びシフタの最終結果値を保存するために、前記演算装置及びシフタに連結されうる。前記各マルチプレクサは、データバス、他のプロセッシング要素及び自らのレジスタファイルから受けたデータの中から、データを選択できるように構成できる。選択されたデータは、前記演算装置の入力値として提供される。前記出力レジスタに保存された最終結果値は、データバスを介して、他のプロセッシング要素に入力されうる。代案として、最終値は、データバスを介して出力値として提供されうる。
【０００７】
他の観点で、本発明は、一つ以上の浮動小数点演算を行うように構成されたプロセッシング要素アレイを含む再構成アレイプロセッサ（reconfigurable array processor）を提供する。前記アレイ内のプロセッシング要素は、２つ以上のプロセッシング要素からなるグループに共に連結される。前記再構成アレイプロセッサはまた、コンテクストを保存するために、前記アレイに連結された構成キャッシュを含む。保存されたコンテクストは、前記アレイの行または列内で前記プロセッシング要素によって行われる一つ以上の演算遂行を制御し、前記プロセッシング要素間のデータ交換を可能にするように構成されうる。さらに、フレームバッファが前記アレイに連結され、前記アレイによって行われた一つ以上の演算遂行の臨時結果値を保存するために、キャッシュメモリー（cache memory）として動作されうる。
【０００８】
本発明の一実施形態は、下記の特徴のうち、一つ以上を選択的に含むことができる。前記各プロセッシング要素は、２つの入力値を受けて前記入力値を処理する演算装置を含むことができる。前記アレイの前記プロセッシング要素は、前記プロセッシング要素間で、データ交換のために、メッシュ構造に互いに連結されうる。前記アレイは、前記各プロセッシング要素を利用して整数演算遂行をアレイは、前記各プロセッシング要素を利用して整数演算を行うことができるように、選択的に構成されうる。または代案として、前記アレイは、共に連結された２つ以上のプロセッシング要素の２つ以上の各グループを利用し、一つ以上の浮動小数点演算を行うように、選択的に構成されうる。２つ以上のプロセッシング要素からなるグループの前記２つ以上の各グループは、前記一つ以上の浮動小数点演算を行うように連結された、前記アレイの列または行内の少なくとも２個のプロセッシング要素を含むことができる。前記アレイは、前記アレイは、整数演算時には、８×５配列構造で遂行されるように選択的に構成されうる。または代案として、前記アレイは、浮動小数点演算時には、各行内の２個のプロセッシング要素が結合され、４×５配列構造で遂行されるように選択的に構成されうる。前記コンテクストに基づいて、前記プロセッシング要素は、パイプラインを形成するために、行または列単位で構成され、前記パイプライン動作の結果は、前記コンテクストによって指示する方向にフォワーディングされるように構成されうる。
【０００９】
本発明の一実施形態は、下記の特徴のうち、一つ以上を選択的に含むことができる。２つ以上のプロセッシング要素からなるグループの前記２つ以上の各グループは、時間的マッピング（temporal mapping）を介して、前記整数演算遂行または前記一つ以上の浮動小数点演算を行うようにデザインされうる。また、各グループは、整数演算または浮動小数点演算の最終値が獲得された後、次のコンテクストを受けることができるように構成されうる。さらに、前記各グループは、マルチサイクル演算を行うための制御信号のコンテクストを受けることができるように構成されうる。２つ以上のプロセッシング要素の前記２つ以上のグループは、浮動小数点に係わる四則演算及び超越関数計算を行うことができるように構成されうる。２つ以上のプロセッシング要素からなるグループの前記２つ以上の各グループは、前記四則演算遂行のために連結された２個のプロセッシング要素を含むことができる。各グループ内の２個の連結されたプロセッシング要素は、２個のオペランドの符号及び仮数を入力される仮数部プロセッシング要素、及び前記２個のオペランドの指数を入力される指数部プロセッシング要素を含むことができる。前記仮数部プロセッシング要素は、２つのオペランドの仮数を乗じたり割ったりするように、乗算器及び除算器のうち、少なくとも一つに連結されうる。また、前記指数部プロセッシング要素は、２つのオペランドの指数を加えたり差し引いたりするように構成されうる。
【００１０】
本発明の一実施形態は、下記の特徴のうち、一つ以上を選択的に含むことができる。前記フレームバッファは、２４ビット浮動小数点フォーマットを含むように構成されうる。前記２４ビット浮動小数点フォーマットは、１ビットの符号ビット、８ビットの指数ビット及び１５ビットの仮数ビットを含む。前記仮数部プロセッシング要素は、入力された２つのオペランドの符号及び仮数を、前記フレームバッファの１符号ビット及び１５仮数ビットに変換するように構成される。さらに、変換された前記１符号ビット及び１５仮数ビットは、前記フレームバッファに保存されうる。前記指数部プロセッシング要素は、入力された２つのオペランドの指数をフレームバッファの８指数ビットに変換し、変換された前記８指数ビットを、前記フレームビットに保存するように構成されうる。前記各プロセッシング要素は、前記演算装置に連結され、前記演算装置に少なくとも２個の入力値を提供する２個のマルチプレクサを含むことができる。シフタが、前記演算装置から受けた結果値にシフト演算を行うために、前記演算装置に連結されうる。さらに、臨時レジスタが、前記演算装置の中間結果値及びシフタの中間結果値を保存するために、前記演算装置及びシフタに連結されうる。さらに、出力レジスタが前記演算装置の最終結果値及びシフタの最終結果値を保存するために、前記演算装置及びシフタに連結されうる。前記各マルチプレクサは、データバス、他のプロセッシング要素及び自体のレジスタファイルから受けたデータからデータを選択するようにデザインされうる。また、前記各マルチプレクサは、前記演算装置に選択された前記データを入力し、前記出力レジスタに保存された最終結果値を他のプロセッシング要素に入力したり、またはデータバスを介して最終結果値を出力できる。前記アレイは、粗粒度再構成アレイ（coarse-grained reconfigurable array）を含むことができる。さらに、前記再構成アレイ制御部が、前記アレイ、構成キャッシュ及びフレームバッファの動作を制御するために、前記アレイに連結されうる。
【００１１】
他の観点で、本発明の演算プラットホームは、複数の一つ以上の浮動小数点演算を行うように構成されたプロセッシング要素アレイを具備した多様な構成要素を含む再構成アレイプロセッサを含む。前記アレイ内のプロセッシング要素は、２つ以上のプロセッシング要素のグループに共に連結されうる。また、構成キャッシュが前記アレイの行または列内でプロセッシング要素によって行われる一つ以上の演算遂行を制御するために、前記アレイに連結される。前記コンテクストはまた、前記プロセッシング要素間にデータ交換を制御するために構成されうる。さらに、フレームバッファが、前記アレイに連結され、前記アレイによって行われた一つ以上の演算遂行の臨時結果値を保存するキャッシュメモリとして動作できる。さらに、制御及びメモリ部が前記再構成アレイプロセッサを制御してデータを保存するために、前記システムバスを介して、前記再構成アレイプロセッサに連結される。
【００１２】
本発明の一実施形態は、下記の特徴のうち、一つ以上を選択的に含むことができる。前記制御及びメモリ部は、データ処理及び制御を行う組み込みコア（embedded core）、データ保存を行う外部メモリ、及びデータ移動を行うディレクト・メモリアクセス（direct memory access）コントローラを含むことができる。前記組み込みコアは、縮小命令セットコンピュータ（reduced instruction set computer）プロセッサ、または縮小命令セットコンピュータ・プロセッサ及び複雑命令セットコンピュータ（complex instruction set computer）プロセッサの特徴が混合された形態のプロセッサを含むことができる。また、前記演算プラットホームは、前記再構成アレイプロセッサの各構成要素が１つの前記システムバスを介して、前記制御及びメモリ部の各構成要素に連結されるようにＳｏＣ（system on chip）構造で具現されうる。前記各プロセッシング要素は、２つの入力値を受け、前記入力値を処理する演算装置を含むことができる。前記アレイの前記プロセッシング要素は、前記プロセッシング要素間のデータ交換のためのメッシュ構造に互いに連結されうる。前記アレイは、前記各プロセッシング要素を利用して整数演算を行うように選択的に構成されうる。または代案として、共に連結された２つ以上のプロセッシング要素からなるグループの２つ以上の各グループを利用し、一つ以上の浮動小数点演算を行うように、選択的に構成されうる。前記プロセッシング要素は、パイプラインを形成するために、前記コンテクストに基づいて、行または列単位で構成されうる。前記パイプライン動作の結果は、前記コンテクストによって指示する方向にフォワーディングされる。２つ以上のプロセッシング要素からなるグループの前記２つ以上の各グループは、時間的マッピングを介して、前記整数演算遂行または前記一つ以上の浮動小数点演算を行うように構成されうる。前記２つ以上の各グループは、整数演算または浮動小数点演算の最終値が獲得された後、次のコンテクストを受ける。さらに、前記２つ以上のグループは、マルチサイクル演算を行うための制御信号のコンテクストを受けることができるように構成されうる。
【００１３】
本発明の一実施形態は、下記の特徴のうち、一つ以上を選択的に含むことができる。２つ以上のプロセッシング要素からなるグループの前記２つ以上のグループは、浮動小数点に係わる四則演算及び超越関数計算を行うことができるように構成されうる。２つ以上のプロセッシング要素の前記２つ以上の各グループは、前記四則演算遂行のために連結された２個のプロセッシング要素を含むことができる。各グループ内の２個の連結されたプロセッシング要素は、２個のオペランドの符号及び仮数を入力される仮数部プロセッシング要素、及び２個のオペランドの指数を入力される指数部プロセッシング要素を含むことができる。前記仮数部プロセッシング要素は、２つのオペランドの仮数を乗じたり割ったりするように、乗算器及び除算器のうち、少なくとも一つに連結されうる。また、前記指数部プロセッシング要素は、２つのオペランドの指数を加えたり差し引いたりするように構成されうる。さらに、前記フレームバッファは、１符号ビット、８指数ビット及び１５仮数ビットを含んだ２４ビット浮動小数点フォーマットを有するように構成されうる。前記各プロセッシング要素は、前記演算装置に連結され、前記演算装置に少なくとも２個の入力値を提供する２個のマルチプレクサを含むことができる。また、シフタが前記演算装置から受けた結果値にシフト演算を行うために、前記演算装置に連結されうる。臨時レジスタが前記演算装置の中間結果値及びシフタの中間結果値を保存するために、前記演算装置及びシフタに連結されうる。出力レジスタが前記演算装置の最終結果値及びシフタの最終結果値を保存するために、前記演算装置及びシフタに連結されうる。前記各マルチプレクサは、データバス、他のプロセッシング要素及び自体のレジスタファイルから受けたデータからデータを選択するようにデザインされうる。また、前記各マルチプレクサは、前記演算装置に選択された前記データを入力し、前記出力レジスタに保存された最終結果値を他のプロセッシング要素に入力したり、またはデータバスを介して最終結果を出力できる。前記再構成アレイプロセッサは、粗粒度再構成アレイを含むことができる。また、前記再構成アレイプロセッサは、前記再構成アレイプロセッサに連結され、前記再構成アレイプロセッサの構成要素を制御する再構成アレイ制御部を含むことができる。従って、高ハードウェア及び高プロセッサ効率を有する演算プロセッサが具現されうる。
【００１４】
本発明に基づいた再構成アレイプロセッサを含んだマルチメディア・プラットホームは、前述のような高性能の演算プロセッサを含んでＳｏＣ構造で具現できる。それによって、マルチメディア・プラットホームは、低い電力消耗及び価格対比の高性能を要求する現在のモバイルマルチメディアに効率的に適用されうる。
【００１５】
本詳細な説明に基づいた技術は、下記の一つ以上の利点を提供できる。再構成アレイプロセッサが浮動小数点演算を相対的に速く行うことができるように具現されうる。再構成アレイプロセッサが整数演算を行う既存のプロセッシング要素を利用した既存の再構成アレイプロセッサより小さいか、あるいは類似したハードウェアのサイズを有し、低い電力消耗及び価格対比の高性能を有するように具現できる。さらに、再構成アレイプロセッサは、高ハードウェア再使用（high hardware reusability）を維持しつつ、ＳＩＭＤ（single instruction stream multiple date stream）動作を行うことができる。従って、再構成アレイプロセッサは、ハードワイヤード（hard-wired）ロジックに比べての小さいハードウェア、及びソフトウェアに比べての低速クロックを有しつつも、高演算遂行能を有することができる。このような特性は、チップコストを低くして電力消耗を減らすために、ハードウェア資源の制約が激しいモバイルマルチメディア・プラットホームに特に有利である。
【００１６】
ハードウェア具現方式（ＨＩ）の場合、電力及び遂行効率の両側面で最適化されうるが、特定応用プログラムに限定されるという短所がある。さらに詳細に説明すれば、既存のハードワイヤード回路で具現されたＡＳＩＣ ＩＰは、速い速度は保証する。しかし、ハードウェア再使用可能性が大きく落ちるので、チップサイズ及び電力消耗が大きく、新しい機能を追加しようとするたびに、再び回路を設計しなければならないので、開発所要期間が長い。しかも、現チップ製造技術は、ＳｏＣの発達とデジタル・コンバージェンス（digital convergence）の影響とによって、さらに複雑であって多様な機能が１つのチップに集積化されて行く趨勢であるから、このような問題点がさらに浮き彫りにされている実情である。
【発明の効果】
【００１７】
本発明による再構成アレイプロセッサは、既存の整数演算のための１６ビットプロセッシング要素からなる粗粒度再構成アレイをそのまま利用し、簡単なハードウェアを追加して備えることで具現できる。追加されたハードウェアは、浮動小数点演算を行うために、それぞれにプロセッシング要素対を有するＦＰＵ（floating point unit）−プロセッシング要素を形成させる。従って、本詳細な説明の再構成アレイプロセッサは、既存の再構成アレイプロセッサのサイズと類似したハードウェアのサイズを維持しつつ、効率的なハードウェア構造を提供する。さらに、本明細書に基づいた再構成アレイプロセッサは、整数演算遂行のために、既存の整数演算ロジックをそのまま利用できる利点を有することによって、高演算性能を有することができる。
【００１８】
他の実施形態で、前記再構成アレイを含んだマルチメディア・プラットホームは、ＳｏＣ構造として具現され、従って、低電力消費及び価格対比の高性能を要求するモバイル・マルチメディア・プロセッサに効果的に適用されうる。
【００１９】
さらに、本詳細な説明に基づいた技術及びシステムは、グラフィック分野のうち、幾何演算（geometry operation）に適用可能であるが、予想応用分野は、１）ゲームエンジンのうち、物理エンジン（physical engine）ハードウェア加速、２）Bezier曲線など曲面／曲線処理のための評価器（evaluator）、及びテセレーション（tessellation）、補間などのグラフィックジオメトリ（geometry）前処理ハードウェア加速、３）３Ｄグラフィック・パイプラインのうち、ジオメトリユニット（matrix transformation & lighting effects）、４）３Ｄ vertex shaderなどを挙げることができる。
【図面の簡単な説明】
【００２０】
【図１】本発明の一実施形態による再構成アレイプロセッサを含んだ全体マルチメディア・プラットホームに係わるブロック構造図である。
【図２】プロセッシング要素アレイ構造をさらに詳細に示すブロック構造図である。
【図３】浮動小数点演算のために、２個ずつ対をなしてＦＰＵ−プロセッシング要素を形成したプロセッシング要素アレイ構造を示すブロック構造図である。
【図４】ＦＰＵ−プロセッシング要素構造で、浮動小数点演算のためのオペランド入力構造を示すブロック構造図である。
【図５】ＦＰＵ−プロセッシング要素構造で、時間的マッピングを介したデータ演算過程を示すブロック構造図である。
【図６】ＦＰＵ−プロセッシング要素構造で、プロセッシング要素の連結を利用したデータ移動方式を示すブロック構造図である。
【図７Ａ】プロセッシング要素の位置調整の長所を説明するために、ＦＰＵ−プロセッシング要素構造で、プロセッシング要素の連結を示すブロック構造図である。
【図７Ｂ】プロセッシング要素の位置調整の長所を説明するために、ＦＰＵ−プロセッシング要素構造で、プロセッシング要素の連結を示すブロック構造図である。
【図７Ｃ】プロセッシング要素の位置調整の長所を説明するために、ＦＰＵ−プロセッシング要素構造で、プロセッシング要素の連結を示すブロック構造図である。
【図８】プロセッシング要素の構造をさらに詳細に示すブロック構造図である。
【図９Ａ】フレームバッファの浮動小数点フォーマットを示す構造図である。
【図９Ｂ】ＦＰＵ−プロセッシング要素のデータがフレームバッファ内のデータに変換される様子を示す構造図である。
【図１０】浮動小数点演算を支援する再構成アレイプロセッサを生成する過程を示すフローチャートである。
【図１１】浮動小数点の演算過程を示すフローチャートである。
【発明を実施するための形態】
【００２１】
以下、添付された図面を参照しつつ、本発明の望ましい実施形態について詳細に説明する。以下の説明で、ある構成要素が他の構成要素に連結されると記述されるとき、それは、他の構成要素と直ちに連結されうるが、その間に第三の構成要素が介在されることもある。また図面で、各構成要素の構造やサイズは、説明の便宜及び明確性のために誇張され、説明と関係ない部分は、省略されている。図面上で、同一符号は同じ要素を指す。一方、使われる用語は、単に本発明を説明するための目的で使われたものであり、意味限定や特許請求の範囲に記載された本発明の範囲を制限するために使われたものではない。
【００２２】
多様なテクニック、システム及びコンピュータプログラム製品がマルチメディア・プラットホームで、データ集中演算を効果的に行うために記述される。特に、詳細な説明に基づいたテクニック及びシステムは、浮動小数点演算を行うことができる再構成アレイ（ＲＡ）プロセッサを提供するために具現されうる。
【００２３】
簡単に述べれば、計算（ｃｏｍｐｕｔｉｎｇ）における浮動小数点の表現は、実数を表現するために、数字の連なり（またはビット）を使用する数学的表現システムとして定義されうる。バイナリ浮動小数点演算のためのＩＥＥＥ（Institute of Electrical and Electronics Engineers）標準（ＩＥＥＥ ７５４）は、多くのＣＰＵ及びＦＰＵ具現で、浮動小数点計算のために広く使われる標準を提供する。浮動小数点の表現で、基数点（ラディックス（radix）ポイント）（小数点またはバイナリポイント）は、数字の連なりにおいて相対的にどこにでも位置することができる。
【００２４】
浮動小数点表現は、固定小数点表現に比べて多様な利点を提供する。特に、浮動小数点表現は、固定小数点表現より多くの広い範囲の値を支援できる。例えば、８個の十進数字及び２桁小数点の位置を有する固定小数点の表現は、１２３４５６．７８、１２３４．５６、１２３．４５のような数が代表されうる。これに比べて、８個の十進数字を有する浮動小数点表現は、前述の固定小数点によって表現された数だけではなく、固定小数点によって表現されえない数にも表現できる。このような８個の十進数字を有する浮動小数点表現の例は、１．２３４５６７８、１２３４５６７．８、０．００００１２３４５６７８、１２３４５６７８００００００などである。浮動小数点表現はコンピューティング業界の科学的記数法として見なされることができる。
【００２５】
対象とする実数の浮動小数点表現は、仮数と呼ばれる数字の連なりを含む。仮数の表現は、基数（base or radix）を選択し、選択された基数内に保存された数字の個数によって定義されうる。浮動小数点表現はまた、指数と呼ばれる値を含む。指数は、対象とする実数に数字のウインドウの位置またはオフセットを記録／確認するために使われる。指数はまた、指標またはスケールとして言及されもする。数字のウインドウは、実数でほとんどは仮数の数字を保存するために使われ、その仮数の数字は、十進数では、最初は０でない数字、またはバイナリでは、０でないビットである。仮数は、ベースのパワーとして代表される指数によって乗算される。
【００２６】
浮動小数点を加えるために、オペランド（operand）は、まず同一指数を有するように表現される。例として、２つのオペランド、１２．３３５と１２３．４５とを加算するとき、そのオペランドは、０．１２３４５ｘ１０２及び１．２３４５ｘ１０２（同一指数は１０２）として表現されうる。０．１２３４５ｘ１０２と１．２３４５ｘ１０２との和は、（０．１２３４５＋１．２３４５）ｘ１０２＝１．３５７９５ｘ１０２として計算されうる。結果としてその数は、エンジニアリング表記（engineering notation）（指数＝５（ｅ＝５）；仮数＝１．３５７９５（ｍ＝１．３７９５））に変換されうる。最終値は、必要によって、丸め処理（rounded）または標準化（normalized）されうる。
【００２７】
浮動小数点の数字を乗算するためには、指数が加えられ、一方、仮数は乗算される。例えば、丸め処理や標準化する前に（ｅ＝２；ｍ＝１．１１１ｘｅ＝２；ｍ＝２．２２２）＝（ｅ＝４；ｍ＝２．４６８６４２）になる。
【００２８】
再構成アレイ（ＲＡ）プロセッサは、細粒度（fine-grained）ＲＡ、すなわちＦＧＲＡプロセッサと、粗粒度（coarse-grained）ＲＡ、すなわちＣＧＲＡプロセッサとに大別される。ＦＧＲＡは、ブーリアン（Boolean）演算やビット単位の演算を行う真理表（truth table）論理回路として具現するプロセッシング要素（ＰＥ：processing element）を有する。一方、ＣＧＲＡは、プロセッシング要素（ＰＥ）が、基本的にＡＬＵ（arithmetic and logic unit）の形態に具現され、ワード単位の算術／論理演算を行うプロセッシング要素を有する。
【００２９】
ＦＧＲＡは、任意の演算が具現可能なので、最も柔軟な構造を有する。しかし、ＦＧＲＡは、制御及びデータパス（data path）が複雑なので、高速を要求しない小さい回路具現や、速度よりも機能検証が重要な回路構造に使われる。ＣＧＲＡは、ＲＴＬ（resistor transistor logic）レベルではないアルゴリズムレベルでは、十分に柔軟である。また、ＣＧＲＡは、並列化が容易であるために、マルチメディア分野のプラットホームを具現するのに多く応用される。すなわち、ＣＧＲＡは、前述のソフトウェア具現方式（ＳＩ）より高性能を提供し、ハードウェア具現方式（ＨＩ）より幅広い柔軟性を有する長所がある。
【００３０】
特に、ＣＧＲＡは、プログラム可能な（programmable）プロセッシング要素及びプログラムを含むことができる。従って、プロセッシング要素は、プロセッシング要素の連結（connectivity）及び動作を指定するコンテクスト（context）の内容によってプログラム化し再構成され、新しいハードウェアの追加なしに、コンテクストの内容を変更するだけでも、多様な機能を行うことができる。代表的なＣＧＲＡとしては、Morphosys、ＡＤＲＥＳ（Architecture for Dynamically Reconfigurable Embedded System）、ＰＡＣＴ−ＸＰＰ（extreme processing platform）などがある。しかし、既存のＲＡは、整数演算だけを支援することによって、応用範囲が主にオーディオ／ビデオコーデック（ＣＯＤＥＣ）に限定されている。
【００３１】
３Ｄグラフィックス／２Ｄベクトルグラフィックス／ＧＰＳ装置は、浮動小数点ベクトル演算を基本とするために、既存の整数を基本とするＣＧＲＡで処理するには適さない。グラフィックを支援するために、プロセッシング要素自体は、浮動小数点演算に基づいて設計できる。しかし、この設計は、プロセッシング要素のハードウェアのサイズが過度に大きくなるという問題がある。また、現在マルチメディアの主要な分野であるＣＯＤＥＣは、整数演算だけで構成されるため、整数演算だけを行う場合、プロセッシング要素を構成するハードウェアにおいて、浮動小数点と関連したブロックは非効率的なハードウェアの利用を促進する傾向がある。
【００３２】
ＲＡプロセッサは、高いハードウェアの再利用性を維持しつつ、シムド演算（ＳＩＭＤ（single instruction stream multiple data stream））することができる。従って、本詳細な説明のＲＡプロセッサは、ハードワイヤード（hard-wired）ロジックよりも小さなハードウェアを有し、かつ、ソフトウェアに使用されるクロック信号よりも低速なクロック信号を有していても、比較的高い性能を具現できる。このような特性は、チップコストを低くし、かつ電力消耗を減らすことができ、ハードウェア資源の制約が激しいモバイルマルチメディア・プラットホームに、特に有利である。
【００３３】
図１は、本発明の一実施形態による再構成アレイプロセッサを含んだマルチメディア・プラットホームのような例示演算プラットホームに係わるブロック構造図である。
【００３４】
図１を参照すれば、本発明のマルチメディア・プラットホームは、浮動小数点（floating-point）演算が可能な再構成アレイ（ＲＡ）プロセッサ（reconfigurable array processor）１０００、再構成アレイプロセッサ１０００の各構成要素と連結されるシステムバス（system bus）２０００、及び前記システムバス２０００を介して、前記再構成アレイプロセッサ１０００の各構成要素と連結され、前記再構成アレイプロセッサ１０００を制御してデータを保存する制御及びメモリ部３０００を含む。
【００３５】
再構成アレイプロセッサ１０００は、プロセッシング要素（ＰＥ：processing element）アレイまたは再構成アレイ１００、構成キャッシュ（configuration cache）２００、フレームバッファ（frame buffer）３００、及び再構成アレイ（ＲＡ）制御部４００を含んで構成される。
【００３６】
プロセッシング要素アレイ１００は、プロセッシング要素（ＰＥ）という名称のＡＬＵ（arithmetic logic unit）セルによって構成された長方形のアレイ（rectangular array）であって、行（row）及び／または列（column）別に、パイプライン（pipelined）ＳＩＭＤ（single instruction stream multiple data stream）演算を行う。本実施形態のプロセッシング要素アレイ１００は、浮動小数点演算を支援できる特徴を有する。プロセッシング要素アレイ１００に係わるさらに詳細な説明は、図２を参照して行う。
【００３７】
構成キャッシュ２００は、プロセッシング要素アレイ１００内のデータ演算及びデータ移動をプログラムするコンテクスト（context）を保存する。ここでコンテクストは、プロセッシング要素アレイ１００内のプロセッシング要素間の連結関係、各プロセッシング要素の演算及び演算のためのデータ移動などを指示する命令語またはプログラムを指すものであり、正確には、構成キャッシュ２００のコンテクスト・レイヤ（layer）という部分に保存される。
【００３８】
フレームバッファ３００は、プロセッシング要素アレイ１００で遂行した演算の中間データを臨時に保存するキャッシュメモリの一種である。本発明と関連したフレームバッファ３００に係る内容は、図９Ａ及び図９Ｂを参照してさらに詳細に説明する。
【００３９】
一方、再構成アレイ制御部４００は、再構成アレイプロセッサの各構成要素を全般的に制御する。例えば、構成キャッシュ２００のコンテクストの入出力、フレームバッファ３００のデータの入出力、またはプロセッシング要素アレイ１００へのデータ移動を制御する。
【００４０】
本実施形態で、再構成アレイプロセッサ１０００は、ハードウェアの変更なしに、コンテクストのみを修正することによって、多様な演算遂行が可能である。また、再構成アレイプロセッサ１０００は、パイプラインＳＩＭＤ構造のアレイを介して、並列に演算を行う。そのために、演算が順次に行われる一般的なプロセッサに比べて、速度がはるかに速い。従って、本実施形態での再構成アレイプロセッサ１０００は、ソフトウェアの長所である再使用性（reusability）と、ハードウェアの長所である高性能（high performance）との特性を同時に充たす構造を有する。
【００４１】
再構成アレイプロセッサ１０００の各構成要素（例えば、プロセッシング要素アレイ１００、構成キャッシュ２００、フレームバッファ３００、ＲＡ制御部４００など）は、システムバス２０００を介して、制御及びメモリ部３０００の各構成要素（例えば、組み込みコア（embedded core）３２００、外部メモリ３４００、ＤＭＡ（direct memory access）３６００など）と連結される。たとえば、本発明のマルチメディア・プラットホームは、１つのシステムバス２０００を介して、全体システムのあらゆる構成要素が一つに連結されるＳｏＣ（system on chip）構造を有する。
【００４２】
ここで、制御及びメモリ部３０００は、データ処理及び制御のための組み込みコア３２００、データ保存のための外部メモリ３４００、及びデータ移動のためのディレクト・メモリアクセス（ＤＭＡ）３６００コントローラを含む。組み込みコア３２００は、縮小命令セットコンピュータ（ＲＩＳＣ：reduced instruction set computer）プロセッサ、または縮小命令セットコンピュータ・プロセッサ及び複雑命令セットコンピュータ（ＣＩＳＣ：complex instruction set computer）プロセッサの特徴が混合した形態のプロセッサでありうる。
【００４３】
本発明によるマルチメディア・プラットホームは、整数演算用プロセッシング要素アレイ構造を利用し、浮動小数点演算を含んだ多様な演算を行うことができる。それによって、ハードウェアのサイズを従来と同様のレベルに維持でき、プロセッサ観点でも、効率的なプロセッサの具現が可能である。また、本発明によるマルチメディア・プラットホームは、ＳｏＣ構造を有することによって、すなわち、再構成アレイプロセッサ１０００の各構成要素が１つのシステムバス２０００を介して、制御及びメモリ部３０００の各構成要素に連結される構造を有することによって、現在の小型の低電力及び高性能を要求するモバイルマルチメディアに効果的に利用されうる。以下、浮動小数点演算を行うことができる再構成アレイプロセッサ、特に、プロセッシング要素構造についてさらに詳細に説明する。
【００４４】
図２は、図１のプロセッシング要素（ＰＥ）アレイ構造をさらに詳細に示すブロック構造図である。
【００４５】
図２を参照すれば、プロセッシング要素アレイ１００は、プログラム可能な多数のプロセッシング要素１２０が行及び列をなすアレイ構造を有する。このようなプロセッシング要素アレイ１００は、乗算及び除算を演算するために、データバスを介して乗算器（ＭＵＬ）１４０及び除算器（ＤＩＶ）１６０に連結されている。整数演算の場合、１つのプロセッシング要素１２０が乗算または除算を演算するので、あらゆるプロセッシング要素１２０が乗算器１４０や除算器１６０に連結される。しかし、浮動小数点演算時のアレイ構造では、一部のプロセッシング要素１２０のみ、乗算器１４０や除算器１６０に連結されてもよい。
【００４６】
アレイ１００内のそれぞれのプロセッシング要素１２０は、２個の入力を受けて処理する１６ビット加算器（図示せず）を含み、１６ビット整数演算を行うことができる。整数演算時に、構成キャッシュ２００（図１参照）のコンテクスト・レイヤは、整数演算のための命令語が保存されるが、このような整数演算のためのコンテクストによって、プロセッシング要素１２０での演算及びデータフローが制御される。
【００４７】
一方、プロセッシング要素アレイ１００は、プロセッシング要素１２０が相互間のデータ交換のためのメッシュ構造に互いに連結される。プロセッシング要素間の連結や、プロセッシング要素間のデータ交換は、構成キャッシュ２００（図１参照）のコンテクストによってなされる。すなわち、それぞれのプロセッシング要素は、構成キャッシュ２００（図１参照）を介して入力されたコンテクストによって、行（水平）または列（垂直）単位で設定されてパイプライン（pipeline）を形成し、パイプライン動作時に処理した結果を、コンテクストが指示する方向（水平または垂直）に転送する。
【００４８】
本実施形態のプロセッシング要素アレイ１００は、８×５配列構造を有する。８×５配列構造は、浮動小数点計算時に、４×５配列に転換されることによって、たとえば３Ｄグラフィックなどで非常に有用な４×１ベクトル演算遂行を容易に支援できる。このような８×５配列構造は、プロセッシング要素アレイ１００の一例示的な構造に過ぎない。従って、プロセッシング要素アレイ１００は、８×５配列構造に限定されることなしに、多様な構造の配列構造を有することができることは、いうまでもない。プロセッシング要素の具体的な構造については、図８に係わる説明部分でさらに詳細に説明する。
【００４９】
図３は、図２のプロセッシング要素アレイが、浮動小数点演算のために２個ずつ対をなしてプロセッシング要素アレイ１００のＦＰＵ−プロセッシング要素（ＰＥ）１２０が再構成される際のプロセッシング要素アレイ１００の構造を示すブロック構造図である。
【００５０】
図３を参照すれば、本発明によるプロセッシング要素アレイ１００のプロセッシング要素１２０は、浮動小数点演算のために２個のプロセッシング要素１２０が対を結合し、ＦＰＵ（floating point unit）−ＰＥ １５０を形成する。このようなＦＰＵ−ＰＥ １５０は、１行または１列内の２個のプロセッシング要素１２０が結合して形成されるが、このような結合関係は、コンテクスト命令語によってなされる。一方、プロセッシング要素１２０は、ＦＰＵ−ＰＥ １５０形成のために、簡単なハードウェア的作業が必要である。すなわち、相互間の物理的な連結関係が形成されておらねばならず、また浮動小数点演算時に、ＦＰＵ−ＰＥ １５０が浮動小数点演算をするための簡単なソフトウェア的制御構造が必要でありうる。
【００５１】
図３は、８×５配列構造（図２参照）のプロセッシング要素アレイ１００のプロセッシング要素１２０が結局、４×５配列構造の配列構造に転換できることを例示的に示す。プロセッシング要素１２０は浮動小数点演算のためにＦＰＵ−ＰＥ １５０を形成し組み合わされる。このような４×５配列構造は、３Ｄグラフィックなどで、非常に有用な４×１ベクトル演算遂行を支援できる。図３において、Ｘ，Ｙ,Ｚ,Ｗは、４×１ベクトルのそれぞれのコンポーネントを示す。プロセッシング要素アレイ１００内にＦＰＵ−ＰＥ １５０を形成する方法は、本実施形態に限定されるものではなく、さまざまな方法で遂行できることは、いうまでもない。また、本実施形態では、２個のプロセッシング要素が結合されてＦＰＵ−ＰＥを形成したが、超越関数、自乗根などのさらに複雑な浮動小数点を支援するために、３個以上のプロセッシング要素１２０が結合されてＦＰＵ−ＰＥ １５０を形成できることは、いうまでもない。
【００５２】
一方、プロセッシング要素アレイ１００内のＦＰＵ−ＰＥ １５０は、時間的（temporal）マッピングを介して演算を行うことになる。さらにＦＰＵ−ＰＥ １５０は、最終的な値を求めるまでは、次の計算のためのコンテクストを入力されない。このような時間的マッピング方式を介した演算過程は、図５に係わる説明部分で説明する。
【００５３】
図４は、図３のＦＰＵ−ＰＥ １５０で、浮動小数点演算のためのオペランド入力構造を示すブロック構造図である。
【００５４】
図４を参照すれば、ＦＰＵ−ＰＥ １５０をそれぞれ形成するプロセッシング要素１２０ａおよび１２０ｂは、基本的に１６ビット整数演算用プロセッシング要素である。それぞれのプロセッシング要素１２０ａおよび１２０ｂは、既存の整数演算のプロセッシング要素のように、２個の入力を受けて計算した後、１つの出力値を出力する構造を有する。
【００５５】
浮動小数点演算のためのＦＰＵ−ＰＥ １５０の構成例は、仮数（mantissa）部と指数（exponent）部とを含む。特に、本実施形態の浮動小数点演算のためのＦＰＵ−ＰＥ １５０は、２個のオペランドの符号（sign）及び仮数が入力される仮数部プロセッシング要素１２０ａを含む。さらに、ＦＰＵ−ＰＥ １５０は、２個のオペランドの指数が入力される指数部プロセッシング要素１２０ｂを含む。図４を参照すれば、ＦＰＵ−ＰＥ １５０によって受け取られる２個のオペランド「Ａ」、「Ｂ」が示される。例えば、オペランドＡとＢとがそれぞれ１１．１１１及び２２２．２２２であるならば、符号は、二つとも「＋」であり、仮数は、それぞれ０．１１１１１及び２．２２２２２である。入力された２つのオペランドＡ並びにＢの符号（すなわち、＋）及び仮数（すなわち、ＭＡ＝０．１１１１１及びＭＢ＝２．２２２２２）は、仮数部プロセッシング要素１２０ａに、入力値「ＭＡ」及び「ＭＢ」として提供される。入力された符号及び仮数「ＭＡ」及び「ＭＢ」に基づいて、仮数部プロセッシング要素１２０ａは、出力仮数「ＭＣ」を計算する。入力されたオペランドＡ並びにＢの指数は、入力値「ＥＡ」及び「ＥＢ」として指数部プロセッシング要素１２０ｂに提供される。前述の例で、指数ＥＡ及びＥＢは、ＥＡ＝２及びＥＢ＝２である。入力されたオペランドＡ並びにＢの指数ＥＡ及びＥＢに基づいて、指数部プロセッシング要素１２０ｂが出力指数「ＥＣ」を計算する。
【００５６】
仮数部プロセッシング要素１２０ａ及び指数部プロセッシング要素１２０ｂは、ラウンディング（rounding）、正規化など、浮動小数点処理に必要な演算回路（図示せず）及び双方間でデータをやり取りするためのパスが必要である。このような付加的なハードウェア（すなわち、電気回路）は、少ないコストだけで既存プロセッシング要素アレイに容易に追加できる。
【００５７】
このようなＦＰＵ−ＰＥ １５０は、浮動小数点基盤の超越関数演算、ロジック演算及び四則演算のような多様な演算を行うことができる。浮動小数点基盤のプロセッシング要素の場合、浮動小数点でも整数演算でも、いずれも同時遂行可能な演算の数が同一であるが、本発明のＦＰＵ−ＰＥ １５０は、整数演算を行う場合、１個のＦＰＵ−ＰＥ １５０が２個の整数型プロセッシング要素に分離されて行われるので、同時遂行可能な整数演算の数が、同時に行われる１つの浮動小数点基盤のプロセッシング要素に比べて２倍になり、従って、ハードウェア使用がはるかに効率的である。
【００５８】
図２で記述されたプロセッシング要素アレイ１００と同様に、仮数部プロセッシング要素１２０ａは、乗算及び除算を演算するために、乗算器及び／または除算器（図示せず）に連結されうる。また、各ＦＰＵ−ＰＥ １５０の仮数部プロセッシング要素１２０ａと指数部プロセッシング要素１２０ｂは、生成されたキャリー（carry）値を交換するために、互い連結される。浮動小数点演算で、ＦＰＵ−ＰＥ １５０を利用して乗算または除算の演算を行う場合、指数部プロセッシング要素１２０ｂでは、オペランドの入力された指数の加算または減算を介して出力指数ＥＣを計算し、符号及び仮数が入力された仮数部プロセッシング要素１２０ａでは、２つのオペランドＡ並びにＢの入力された符号及び仮数の乗算または除算を介して、出力仮数ＭＣを計算する。
【００５９】
このような計算後、それぞれの結果値ＥＣ及びＭＣが最終値ではない場合（例えば、他のＦＰＵ−ＰＥを有し、追加的な計算のために中間値は残す）、仮数部プロセッシング要素１２０ａの出力仮数値ＭＣ及びと指数部プロセッシング要素１２０ｂの出力指数値ＥＣは、アレイ１００（同一列または行）で、次の演算のために、次のＦＰＵ−ＰＥ １５０に入力される。計算された出力値ＥＣ，ＭＣが最終値である場合には（例えば、中間値ではなく、それ以上ＦＰＵ−ＰＥ １５０に残らない）、計算された出力値ＥＣ，ＭＣは、フレームバッファ３００に保存される。
【００６０】
図５は、ＦＰＵ−ＰＥ １５０で、時間的マッピングを介したデータ演算過程を示すブロック構造図である。
【００６１】
再構成アレイプロセッサでのマッピング（mapping）は、空間的（spatial）マッピングおよび／または時間的（temporal）マッピングと区分される。本実施形態でのＦＰＵ−ＰＥは、浮動小数点演算のために、時間的マッピングだけを使用する。既存の時間的マッピング過程について簡単に説明すれば、次の通りである。
【００６２】
まず、構成キャッシュのいずれか１つのコンテクスト・レイヤに対応し、プロセッシング要素アレイのうち、いずれか１つの列が選択され、同じコンテクスト・レイヤに保存された演算コンテクストが、選択されたプロセッシング要素列に供給される。そして、プロセッシング要素列は、さまざまなサイクルの間、順次に１つの演算を行う。一方、選択されたプロセッシング要素列の演算が完了していなくとも、次のコンテクスト・レイヤに対応して他のプロセッシング要素列が選択され、そこの他のプロセッシング要素列で、演算が遂行されうる。従って、全体的に列単位で、パイプライン動作がなされるようになる。
【００６３】
図５を参照すると本実施形態の時間的マッピングを介した演算過程について簡単に説明すれば、構成キャッシュ２００内の各レイヤおよびレジスタに保存されたコンテクストは、プロセッシング要素アレイ１００の各ＦＰＵ−ＰＥ列に、順次に時間的マッピングされ、パイプライン演算を行う。レジスタを介した時間的マッピングは、各レジスタに１サイクルほど遅延される。一方、本実施形態でのＦＰＵ−ＰＥ列（例えば、列０，１，２，３及び４）は、コンテクスト・レイヤで発生する制御信号列を受け、マルチサイクル演算を行うが、このようなＦＰＵ−ＰＥ列は、最終的な結果値を求めるまでは、次の計算のためのコンテクストを入力されない。
【００６４】
たとえば図５に示されるマルチサイクル演算過程で、１つのＦＰＵ−ＰＥをなす２個のプロセッシング要素（指数部プロセッシング要素及び仮数部プロセッシング要素）は、必要によって、中間結果値を互いに送受信する。例えば、乗算または除算の場合、ＦＰＵ−ＰＥをなす２個のプロセッシング要素のうちの一つ（例えば、指数部プロセッシング要素）は、加算または減算を介して指数を計算し、他の一つ（例えば、仮数部プロセッシング要素）は、乗算または除算を介して仮数を計算する。仮数計算で発生したcarry値が、指数計算に利用されるために伝えられうる。
【００６５】
図６は、ＦＰＵ−ＰＥ １５０で、プロセッシング要素１２０間の連結を利用したデータ移動方式を示すブロック構造図である。図６を参照すると、「ｆ」で表示されたプロセッシング要素１２０ａは、符号並びに仮数が入力される仮数部プロセッシング要素１２０ａであり、「ｅ」で表示されたプロセッシング要素１２０ｂは、指数が入力される指数部プロセッシング要素１２０ｂである。一方、浮動小数点データの移動が円滑になるように、仮数部プロセッシング要素１２０ａ及び指数部プロセッシング要素１２０ｂの位置である「ｆ」および「ｅ」が調整されている。
【００６６】
図６を参照すれば、本実施形態のＦＰＵ−ＰＥ構造では１，４，５，８番目のプロセッシング要素１２０ａが仮数演算を行い、２，３，６，７番目のプロセッシング要素１２０ｂが指数演算を行うようにすることによって、１列内で４個のプロセッシング要素対間のメッシュ連結構造を容易に具現できる。例えば、（１）第１及プロセッシング要素及び第４プロセッシング要素（仮数部プロセッシング要素１２０ａ）；（２）第５プロセッシング要素及び第８プロセッシング要素（指数部プロセッシング要素１２０ｂ）；（３）第２プロセッシング要素及び第７プロセッシング要素（指数部プロセッシング要素１２０ｂ）；（４）第３プロセッシング要素及び第６プロセッシング要素（指数部プロセッシング要素１２０ｂ）；（５）第１プロセッシング要素及び第８プロセッシング要素（仮数部プロセッシング要素１２０ａ）；（６）第１プロセッシング要素及び第３プロセッシング要素（仮数部プロセッシング要素１２０ａ及び指数部プロセッシング要素１２０ｂ）；（７）第２プロセッシング要素及び第４プロセッシング要素（指数部プロセッシング要素１２０ｂ及び仮数部プロセッシング要素１２０ａ）；（８）第５プロセッシング要素及び第７プロセッシング要素（仮数部プロセッシング要素１２０ａ及び指数部プロセッシング要素１２０ｂ）；（９）第６プロセッシング要素及び第８プロセッシング要素（指数部プロセッシング要素１２０ｂ及び仮数部プロセッシング要素１２０ａ）間で連結関係が提供されうる。
【００６７】
もし指数部と仮数部とのプロセッシング要素が図６のように配されずに、１，３，５，７番目のプロセッシング要素が仮数演算を行い、２，４，６，８番目のプロセッシング要素で指数演算を行うように構成されるならば、８個の連結関係が形成されうる（図７Ｃ参照）。４個の浮動小数点演算プロセッシング要素対間のメッシュ連結構造を設けるためには、例えば、１番目と７番目とのプロセッシング要素、２番目と８番目とのプロセッシング要素、３番目と５番目とのプロセッシング要素、４番目と６番目とのプロセッシング要素間の双方向連結関係が追加されねばならない。
【００６８】
このように、本発明の再構成アレイプロセッサ内のプロセッシング要素アレイ１００は、既存の連結関係を変えなくとも、浮動小数点計算及びデータの移動を円滑に行うことができる。また、プロセッシング要素アレイ１００が８×５配列構造を有する場合、整数演算時には、８×５配列構造をそのまま利用し、浮動小数点演算時には、ＦＰＵ−ＰＥを形成し、４×５配列構造に転換することによって、４×１の浮動小数点ベクトル演算を円滑に行うことができる。
【００６９】
図７Ａないし図７Ｃは、ＦＰＵ−ＰＥでのプロセッシング要素の位置調整の長所について、さらに詳細な説明を行うためのブロック構造図である。図７Ａは、整数演算のためのプロセッシング要素間の連結関係を示すブロック構造図である。図７Ｂは、プロセッシング要素の機能的位置が、浮動小数点演算のために調整されたプロセッシング要素間の連結関係を示すブロック構造図である。図７Ｃは、プロセッシング要素の機能的位置が交互に配されるプロセッシング要素間の連結関係（例えば、仮数部１２０ａ後に、指数部プロセッシング要素１２０ｂが続き、再び他の仮数部プロセッシング要素１２０ｂが続くように連結される）のブロック構造図である。
【００７０】
図７Ａが示す連結構造は、整数演算を行うための典型的なプロセッシング要素連結構造を代表している。図７Ａの連結構造で、整数演算のためのプロセッシング要素の連結関係であるから、仮数部プロセッシング要素１２０ａと指数部プロセッシング要素１２０ｂとの区別は無意味である。例えば、指数部及び／または仮数部のプロセッシング要素のいかなる組み合わせも具現されうる。
【００７１】
浮動小数点演算のために、プロセッシング要素の機能的位置が図７Ｂのように配されるようになれば、図６の部分で記述したように、図７Ａの連結関係を選択的に利用することによって、メッシュ構造が獲得されうる。プロセッシング要素は、ＦＰＵ−ＰＥ １５０を形成するために、対で結合されうる。しかし、仮数部プロセッシング要素１２０ａ及び指数部プロセッシング要素１２０ｂの機能的位置が、異なった順序（図６に例示されているところと異なって）で配される場合に、メッシュ構造を獲得するために、異なる連結関係が必要でありうる。例えば、図７Ｃに例示されているように、プロセッシング要素の機能的位置が交互に（仮数部１２０ａ後に指数部プロセッシング要素１２０ｂが後続し、さらに他の仮数部プロセッシング要素１２０ｂが後続するように）配されうる。そのように交互に配される構造の場合には、メッシュ構造を達成するためには、図７Ｃでのように、点線で表示された部分の連結関係（例えば、第１プロセッシング要素及び第７プロセッシング要素（仮数部プロセッシング要素１２０ａ））が新しく形成されねばならない。
【００７２】
図８は、プロセッシング要素（図２のプロセッシング要素１２０のようなプロセッシング要素）の構造をさらに詳細に示すブロック構造図である。本実施形態の技術及びシステムに基づいたプロセッシング要素１２０の構造は、既存の整数演算のためのプロセッシング要素構造に、浮動小数点演算のための回路及びデータ送受信のためのパスが含まれる。
【００７３】
図８を参照すれば、プロセッシング要素１２０は、一般的に１６ビット加算器（ＡＬＵ）１２２、加算器１２２に２個のデータを入力するための１つ以上のマルチプレクサ（ＭＵＸ）１２４ａ，１２４ｂ、加算器１２２の計算結果を保存する臨時レジスタ１２５と出力レジスタ１２７、及びシフト演算のためのシフタ（shifter）１２６によって構成される。
【００７４】
マルチプレクサ１２４ａ，１２４ｂは、他のプロセッシング要素、データバス（Ｄａｔａ Ａ，Ｄａｔａ Ｂ）、フレームバッファ（ＦＢ）及び臨時レジスタ１２５から複数の信号を受信し加算器１２２に信号を送信する。受信した複数の信号のうち２つの信号が入力データ信号として選択される。加算器１２２は、このような２個の入力値を演算する。加算器１２２で計算された結果値は、臨時レジスタ１２５や出力レジスタ１２７に保存される。臨時レジスタ１２５に保存された値は、加算器１２２での計算に再び活用される。一方、シフタ１２６は、乗算または除算のような演算のために、シフト演算を行う。出力レジスタ１２７に保存された最終結果値は、データバスを介して、他のプロセッシング要素１２０に入力されたり、またはデータバスを介して、フレームバッファに保存されたり出力装置に出力される。
【００７５】
一方、本実施形態のプロセッシング要素構造で、浮動小数点演算のために追加された回路またはパスが、(１)、(２)及び(３)で表示されている。
【００７６】
まず、(１)は、浮動小数点演算時符号信号（sign signal）処理のためのレジスタ及びデータパスを意味する。すなわち、２個のオペランドの符号を入力されて保存した後、２つの符号値をＸＯＲ演算した値を保存する。仮数部プロセッシング要素でのみ有効であり、乗算／減算時に、結果値の符号を決定する。
【００７７】
(２)は、シフト演算が必要ない出力信号（no-shift output signal）処理のためのレジスタ及びデータパスを意味する。既存プロセッシング要素のＡＬＵは、１つの結果のみを出力したが、本発明のプロセッシング要素１２０のＡＬＵ１２２は、浮動小数点演算処理のために、同時に２個の出力値を送出せねばならないために、データパスが一つさらに追加される。各パスが同時にシフト演算を行う場合はないために、シフタ１２６は、１つのパスにだけ連結される。従って、フラッグベクトル（flag vector）などのシフタ１２６を通過しなくてもよい値は、新らに追加されたデータパス（(２)）を介して、直ちに出力レジスタ１２７に出力される。
【００７８】
(３)は、ラウンド信号（round signal）のためのデータパスである。浮動小数点演算遂行時に、指数をシフトした後、ラウンド演算を遂行しなければならないが、このために、シフタ１２６に下位２ビットが追加され、拡張されたデータを処理するためのデータパス（(３)）が新しく追加される。
【００７９】
図９Ａは、本発明の浮動小数点演算を行うために使用するフレームバッファの浮動小数点フォーマットを示している。一般的に、ＩＥＥＥ（Institute of Electrical and Electronics Engineers）７５４標準を基とした浮動小数点は、１ビット符号、８ビット指数、２３ビット仮数を含んだ３２ビット・フォーマットを有する。しかし、このようなＩＥＥＥ ７５４浮動小数点フォーマットは、携帯用機器の３Ｄグラフィックに適用するには、過度な精度を有するために、メモリに浪費を招く。従って、本発明の技術及びシステムに基づいたＲＡプロセッサで採用したフレームバッファは、１ビット符号、８ビット指数及び１５ビット仮数を有する２４ビット浮動小数点フォーマットを有する。本発明の２４ビット浮動小数点フォーマットは、浮動小数点演算を支援するためにデザインされ、過度なメモリ浪費を減らし最小化させることができる。
【００８０】
図９Ｂは、ＦＰＵ−ＰＥの浮動小数点データが、フレームバッファに変換される様子を示している。一般的に、整数演算構造でのフレームバッファは、整数入力だけ受けることができるように設計される。しかし、本発明の再構成アレイプロセッサ１００では、簡単な回路を追加し、マルチプレクサで、整数データ形式と浮動小数点データ形式とのうち、いずれか一つを選択して入力できるように構成される。それによって、フレームバッファに保存されるデータは、形式的には、ＩＥＥＥ−７５４の３２ビット浮動小数点フォーマットを有するが、内部的には、図９Ａで図示されているように、２４ビット浮動小数点フォーマットを使用する。２４ビットの浮動小数点フォーマットとして、３２ビット浮動小数点フォーマットを使うために、選択的に現在の仕様に基づくＲＡプロセッサで使われるフレームバッファは、仮数を切り捨てる。すなわち、本発明の再構成アレイプロセッサで使われるフレームバッファは、従来の３２ビットフレームバッファの小数の下位８ビットは使用しない。
【００８１】
図１０は、浮動小数点演算遂行のためのＲＡプロセッサを生成するプロセス１０００に係わるプロセスフローチャートである。
【００８２】
図１０を参照すれば、プロセッシング要素アレイ内の複数のプロセッシング要素が、多様なＦＰＵ−ＰＥを形成するために、共にグループ化される（１００２；例えば、２つ以上のプロセッシング要素のグループ）。例えば、同一列の２つのプロセッシング要素がＦＰＵ−ＰＥを形成するために、対で結合されたり、あるいは同一行の２つのプロセッシング要素がＦＰＵ−ＰＥを形成したりするために、対で結合されうる。一方、ある実施形態では、ＦＰＵ−ＰＥを形成するために、３個以上のプロセッシング要素が、列または行で結合されることもある。
【００８３】
構成キャッシュのレジストリに保存されたコンテクストは、パイプライン処理遂行のために、それぞれのＦＰＵ−ＰＥ列に、順次に時間的マッピングされる（１００４）。また、メッシュ構造達成するために、列および／または行で連結されるＦＰＵ−ＰＥの連結構造がアレイに適用される（１００６）。
【００８４】
図１１は、浮動小数点演算遂行のためのプロセス（１１００）に係わるプロセスフローチャートである。
【００８５】
図１１を参照すれば、浮動小数点演算のための２オペランドを入力される（１１０２）。入力されたオペランドの指数が指数部プロセッシング要素に入力され、受けたオペランドの指数が加算または減算を介して計算され、出力指数が生成される（１１０４）。受けたオペランドの符号及び仮数は、仮数部プロセッシング要素に入力され、受けたオペランドの符号及び仮数が、乗算及び除算を介して計算され、出力仮数が生成される（１１０６）。結果の指数及び仮数が最終値であるか、または次のＦＰＵ−ＰＥの演算のための中間値であるかを判断する（１１０８）。結果の仮数及び指数が、次のＦＰＵ−ＰＥの演算のための中間値である場合、その中間値は、次のＦＰＵ−ＰＥに伝えられる（１１１０）。結果の仮数及び指数が最終値である場合、その最終値は、フレームバッファに保存される（１１１２）。
【００８６】
本発明による再構成アレイプロセッサ１０００は、前述のように、既存の整数演算のための１６ビットプロセッシング要素からなるＣＧＲＡをそのまま利用するが、簡単なハードウェアを追加し、２個のプロセッシング要素対からなるＦＰＵ−ＰＥを形成することによって、具現されうる。追加されたハードウェアは、浮動小数点演算を行うために、それぞれプロセッシング要素対を有するＦＰＵ−ＰＥを形成する。従って、本発明のＲＡプロセッサ１０００は、従来とほぼ同じサイズのハードウェアを有するために、効率的なハードウェア構造を提供する。また、本発明のＲＡプロセッサは、整数演算時に、既存の整数演算ロジックをそのまま利用することによって、高速動作効率を有することができる。
【００８７】
ある実施形態で、かようなＲＡプロセッサを含んだマルチメディア・プラットホームは、ＳｏＣ構造として具現され、それによって、低電力及び価格対比の高性能比を要求するモバイル・マルチメディア・プロセッサに効果的に適用されうる。
【００８８】
さらに本発明は、グラフィック分野のうち、幾何演算（geometry operation）に適用可能であるが、予想応用分野は、１）ゲームエンジンのうちの物理エンジン（physical engine）ハードウェア加速、２）Bezier曲線など曲面／曲線処理のための評価器、並びにテセレーション（tessellation）、補間のようなグラフィックジオメトリ前処理部のハードウェア加速、３）３Ｄグラフィック・パイプラインのうちのジオメトリユニット（matrix transformation & lighting effects）、４）３Ｄ vertex shaderなどを挙げることができる。
【００８９】
本明細書、及びそれらと構造的に同等、またはそれらの１以上の組み合わせで記述された構造を含むことによって、本明細書で記述された技術要旨と機能的演算機能の実施形態は、デジタル電子部分回路図で、またはコンピュータソフトウェア、ファームウェアまたはハードウェアで具現されうる。本明細書で記述された技術要旨の実施形態は、１以上のコンピュータプログラム製品、例えば、データプロセッシング装置による実行、またはデータプロセッシング装置の作動を制御するために、実体プログラムキャリアに暗号化されたコンピュータプログラム命令語の１以上のモジュールとして具現されうる。実体プログラムキャリアは、伝播された信号またはコンピュータ判読性媒体でありうる。伝播された信号は、人為的に生成された信号、例えば、機械によって発生した電気的、光学的または電磁気的信号であり、それらは、コンピュータによる実行のための適切な受信機装置への伝送のために、情報を暗号化するように生成される。コンピュータ判読性媒体は、コンピュータであり、機械判読型保存装置、機械判読型保存基板、メモリ装置、機械で判読されうる伝播された信号に影響を及ぼす物質の複合物またはそれらの１以上の組み合わせでありうる。
【００９０】
用語「データプロセッシングユニット」は、例えば、プログラマブルプロセッサ、コンピュータ、または多重プロセッサまたはコンピュータを含み、データを処理するためのあらゆる装置、素子及び機械を含む。装置は、ハードウェアに付加し、当該コンピュータプログラムのための実行環境を生成するコード、例えば、プロセッサファームウェア、プロトコルスタック、データベース管理システム（ＤＢＭＳ（database managements system））、運用体系、またはそれらの一つ以上の組み合わせを構成するコードを含むことができる。
【００９１】
コンピュータプログラム（プログラム、ソフトウェア、ソフトウェア応用、スクリプトまたはコードとして知られている）は、コンパイルされ、または解釈型言語、または宣言型または手順型言語を含み、プログラミング言語のいかなる形態にも使われ、独自のプログラム、コンピュータ環境で、モジュール、成分、サブルーチンまたは適切な他の装置として含まれ、いかなる形態にも配されうる。コンピュータプログラムは、必ずしもファイルシステムにあるファイルに該当するものではない。プログラムは、他のプログラムまたはデータ（例えば、マークアップ言語文書で保存された１以上のスクリプト）をホールディングするためのファイルの一部分に、当該プログラムに転用されたシングルファイルに、または多数の統合ファイル（例えば、１以上のモジュール、サブプログラム、またはコードの部分を保存するファイル）に保存されうる。コンピュータプログラムは、１台のコンピュータで、または１つのサイトに位置したり、あるいは多重サイトを横切って分配され、コミュニケーション・ネットワークによって、互い連結される多重コンピュータらで実行されたりしうるように配されうる。
【００９２】
本明細書で記述されたプロセスと論理フローは、入力データに作用して出力を生成することによって、機能を行うための１以上のコンピュータプログラムを実行する１以上のプログラマブルプロセッサによって遂行されうる。また、プロセスと論理フローは、特別な目的の論理回路、例えば、ＦＰＧＡ（field programmable gate array）またはＡＳＩＣ（application specific integrated circuit）によって行われうる。
【００９３】
コンピュータプログラムの実行のための適切なプロセッサは、例えば、一般または特別な目的のマイクロプロセッサ、及びデジタルコンピュータの任意の一つ以上のプロセッサを含む。一般的にプロセッサは、読み取り専用メモリ、またはランダムアクセスメモリ、または双方から命令語とデータとを受けることができる。コンピュータの必須要素は、命令語を遂行するためのプロセッサと、命令語及びデータを保存するための１以上のメモリ装置とである。一般的に、コンピュータは、データを保存するための一つ以上の大容量保存装置、例えば、磁気，磁気光学ディスク、または光学ディスクを含んだり、またはこのような保存装置からデータを受けたり伝達したり、あるいはどちらとものために効果的にカップリングされる。しかし、コンピュータは、このような装置を有する必要はない。さらに、コンピュータは、他の装置に組み込みされうる。
【００９４】
コンピュータプログラム命令語及びデータを保存するために、適したコンピュータ判読媒体は、例えば、ＥＰＲＯＭ、ＥＥＰＲＯＭ及びフラッシュメモリ・デバイス；内部ハードディスク、または移動ディスク；磁気光学ディスク；ＣＤ ＲＯＭ及びＤＶＤ−ＲＯＭディスクを含み、不揮発性メモリ、媒体及びメモリ装置のあらゆる形態を含むことができる。プロセッサとメモリは、特別目的の論理回路素子によって補充されたり具体化されたりしうる。
【００９５】
本明細書が多くの細部特性を含む一方、これは、任意の発明の範囲に対する制限として、またはクレームされるものとして解釈されるものではなく、むしろ特別な発明の特別な実施形態に特定した特徴に係わる記述として解釈されねばならない。各実施形態と関連して、本明細書で記述される一定の特徴は、単一の実施形態での組み合わせとして具現されうる。一方、単一の実施形態と関連して記述される多様な特徴は、個別的に多重実施形態として、または任意の適切な補助組み合わせとして具現されうる。さらに、特徴が一定の組み合わせに作用するものとして前記で記述され、さらにそのように初期に請求されうるが、ある場合には、請求された組み合わせから、１以上の特徴がその組み合わせから削除されることがあり、請求された組み合わせが一部の組み合わせ、または一部の組み合わせの変形になることもある。
【００９６】
同様に、動作が特別な順序で図面に図示されていても、それらが示された特別な順序または順次的順序で、このような動作が行われ、またはそのあらゆる記述された動作が望ましい結果を達成するために行われねばならないことを要求するものと解釈されることがあってはならない。ある環境で、マルチタスキングと並列処理は、有利であるかもしれない。さらに、前記に記述された実施形態にある多様なシステム構成要素の分離は、あらゆる実施形態で、それと同じ分離を要求するものであると理解されてはならず、記述されたプログラムコンポーネントとシステムとが一般的に単一ソフトウェア製品に共に統合されたり、多重ソフトウェア商品内にパッキングされたりしうるということが理解されねばならない。
【００９７】
単にごく少数の実施形態と例示とが記述されており、他の実施形態、改善及び変形が本明細書で記述されて例示されたところに基づいて作られうる。
【産業上の利用可能性】
【００９８】
本明細書は、マルチメディア・プラットホームを含み、多様なアプリケーションに適したデジタル情報処理と装置とに関連するものであり。本明細書に基づいたＲＡプロセッサ１０００は、整数演算オペレーションを行うための１６ビットプロセッシング要素を含む既存のＣＧＲＡに、単純ハードウェアを追加することによって、具現されうる。付加されたハードウェアは、それぞれプロセッシング要素対を有するＦＰＵ−ＰＥを形成させ、実数演算を行うことができるようにする。従って、本明細書のＲＡプロセッサ１０００は、従来のＲＡプロセッサのそれと同様のハードウェアのサイズを維持することによって、効率的ハードウェア構造を提供する。その上、本明細書に基づいたＲＡプロセッサは、既存の整数演算論理が整数演算動作を行うための既存の整数演算論理を利用することによって、高い動作効率を可能にする。
【図１】
2010539582.tif 000003
【図２】
2010539582.tif 000004
【図３】
2010539582.tif 000005
【図４】
2010539582.tif 000006
【図５】
2010539582.tif 000007
【図６】
2010539582.tif 000008
【図７Ａ】
2010539582.tif 000009
【図７Ｂ】
2010539582.tif 000010
【図７Ｃ】
2010539582.tif 000011
【図８】
2010539582.tif 000012
【図９Ａ】
2010539582.tif 000013
【図９Ｂ】
2010539582.tif 000014
【図１０】
2010539582.tif 000015
【図１１】
2010539582.tif 000016
【国際調査報告】
2010539582.tif 000017
2010539582.tif 000018