(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2023-09-07
(54)【発明の名称】双曲線関数を使用する指数関数の効率的なハードウェア実装形態
(51)【国際特許分類】
G06F 7/556 20060101AFI20230831BHJP
G06F 17/10 20060101ALI20230831BHJP
G06F 17/17 20060101ALI20230831BHJP
【FI】
G06F7/556 B
G06F17/10 Z
G06F17/17
【審査請求】未請求
【予備審査請求】未請求
(21)【出願番号】P 2022579876
(86)(22)【出願日】2021-04-08
(85)【翻訳文提出日】2022-12-22
(86)【国際出願番号】 US2021026472
(87)【国際公開番号】W WO2022046180
(87)【国際公開日】2022-03-03
(32)【優先日】2020-08-24
(33)【優先権主張国・地域又は機関】US
(81)【指定国・地域】
(71)【出願人】
【識別番号】591025439
【氏名又は名称】ザイリンクス インコーポレイテッド
【氏名又は名称原語表記】XILINX INCORPORATED
(74)【代理人】
【識別番号】110001195
【氏名又は名称】弁理士法人深見特許事務所
(72)【発明者】
【氏名】カッペッロ,ステファノ
【テーマコード(参考)】
5B056
【Fターム(参考)】
5B056FF01
5B056FF02
(57)【要約】
デジタルワードを分け、第1のワードによって定義されたアドレスにあるデータストアから予め算出した所定の値を取り出すことによって、デジタルワード入力から自然指数を判断することに関わる装置及び関連方法である。例示用の実施例では、取り出される値は双曲線和であってもよい。双曲線和に第2のワードを掛けてもよい。双曲線和をスケーリングし、それに乗算結果を加算すると、スケーリング済み指数値を生成することができる。スケーリング済み指数値をスケーリングすると、eXを表す指数値を生み出すことができる。様々な実施例では、デジタルワード入力は固定小数点であっても浮動小数点であってもよく、又はそれらの間で変換されてもよい。様々な実施形態において、データストアはルックアップテーブルであってもよい。様々な実施例では、最小限のハードウェアリソースで自然指数を判断するために、コンパクトで融通の利くアーキテクチャを提供することができる。
【特許請求の範囲】
【請求項1】
自然指数コンピュテーション回路であって、
固定小数点ワードを受信し、前記固定小数点ワードを第1のワードと第2のワードとに分けるように構成されたスプリッタ回路と、
前記第1のワードによって定義されたアドレスにあるデータストアから、所定の予め算出した双曲線和を取り出すように構成された取り出し回路と、
前記双曲線和と前記第2のワードとを掛け合わせ、かつ掛け合わせ双曲線和を出力するように構成された乗算回路と、
前記双曲線和を受信し、前記双曲線和を第1の係数でスケーリングするように構成された第1のスケーリング回路と、
前記スケーリング済み双曲線和と前記掛け合わせ双曲線和とを合算して、スケーリング済みの第2の和を生成するように構成された加算回路と、
前記スケーリング済みの第2の和を第2の係数でスケーリングし、e
Xの近似値を出力するように構成された第2のスケーリング回路と、を備える、自然指数コンピュテーション回路。
【請求項2】
前記乗算回路及び前記加算回路が、少なくとも1つのデジタル信号プロセッサ(DSP)において少なくとも部分的に実装されている、請求項1に記載の回路。
【請求項3】
前記乗算回路、前記加算回路、及び前記データストアのうちの少なくとも1つが、論理ゲートとして少なくとも部分的に実装されている、請求項1に記載の回路。
【請求項4】
前記データストアがルックアップテーブルである、請求項1に記載の回路。
【請求項5】
前記ルックアップテーブルが、固定小数点フォーマットにおいてエントリを記憶するように構成されている、請求項4に記載の回路。
【請求項6】
前記データストアが、浮動小数点フォーマットにおいてエントリを記憶するように構成されている、請求項1に記載の回路。
【請求項7】
前記第1の係数が2
B-Iであり、ここで、Bは前記第1のワードの総ビット数であり、Iは前記第1のワードにおける整数ビット総数であり、
前記第1のスケーリング回路では、前記双曲線和をB-Iビットだけ右ゼロパディングする、請求項1に記載の回路。
【請求項8】
前記第2の係数が1/(2
B-I)であり、ここで、Bは総ビット数であり、Iは前記第1のワードにおける整数ビット総数であり、
前記第2のスケーリング回路では、前記第2の和をB-Iビットだけビット単位で右シフトする、請求項1に記載の回路。
【請求項9】
浮動小数点から固定小数点への変換回路を前記スプリッタ回路の前に更に備え、
前記変換回路が、浮動小数点入力を受信し、前記浮動小数点入力を前記スプリッタ回路によって受信される前記固定小数点ワードに変換するように構成されている、請求項1に記載の回路。
【請求項10】
固定小数点から浮動小数点への変換回路を前記第2のスケーリング回路の後に更に備え、
前記変換回路が、固定小数点ファーマットにおいてe
Xの前記出力近似値を受信し、前記出力近似値を浮動小数点フォーマットにおいて出力するように構成されている、請求項1に記載の回路。
【請求項11】
前記第2のワードが1未満の数値を表す、請求項1に記載の回路。
【請求項12】
前記固定小数点ワードがNビット長であり、
前記第1のワードが前記固定小数点ワードの最初のBビットであり
前記第2のワードが前記固定小数点ワードの最後のAビットであり、
N=A+Bであり、
前記第1のワードには前記固定小数点ワードのバイナリポイントが含まれている、請求項1に記載の回路。
【請求項13】
デジタル回路において指数を効率良く計算する方法であって、前記方法が、
Nビット長であるデジタル固定小数点ワードXを受信することと、
Xの最初のBビットを第1のワードWbに、Xの残りのAビットを第2のワードWaに分けることであって、前記第1のワードはI整数ビット及びB-I小数ビットを含み、N=A+Bであり、X=Wb+Waである、分けることと、
Wbによって定義されたアドレスにあるデータストアから、sinh(Wb)+cosh(Wb)を表す所定の予め算出した双曲線和を取り出すことと、
前記双曲線和とWaとを掛け合わせ、[sinh(Wb)+cosh(Wb)]×[Wa]を表す掛け合わせ双曲線和を生成することと、
前記双曲線和をスケーリング係数Kでスケーリングして、[sinh(Wb)+cosh(Wb)]×Kを表すスケーリング済み双曲線和を生成することと、
前記スケーリング済み双曲線和に前記掛け合わせ双曲線和を加算して、[sinh(b)+cosh(b)]×[Wa+K]を表すスケーリング済みの第2の和を生成することと、
前記スケーリング済みの第2の和を1/Kでスケーリングすることにより、e
Xの近似値として[sinh(Wb)+cosh(Wb)]×[Wa/K+1]の表現を生成することと、を含む、方法。
【請求項14】
前記乗算するステップ及び前記加算するステップが、少なくとも1つのデジタル信号プロセッサ(DSP)において少なくとも部分的に実装され、
WbがXのバイナリポイントを含み、
Kが2
B-Iであり、
前記e
Xの近似値が所定の誤差限度内で正確であるようにBが選ばれ、
前記双曲線和をKでスケーリングすることが、前記双曲線和をB-Iビットだけ右ゼロパディングすることを含み、
前記スケーリング済みの第2の和を1/Kでスケーリングすることが、前記第2の和をB-Iビットだけビット単位で右シフトすることを含む、請求項13に記載の方法。
【請求項15】
プロセッサによって実行されると自然指数を計算する演算を引き起こす命令プログラムを提供する少なくとも1つの非一時的コンピュータ可読媒体であって、前記演算が、
Nビット長であるデジタル固定小数点ワードXを受信することと、
Xの最初のBビットを第1のワードWbに、Xの残りのAビットを第2のワードWaに分けることであって、前記第1のワードはI整数ビット及びB-I小数ビットを含み、N=A+Bであり、X=Wb+Waである、分けることと、
Wbによって定義されたアドレスにあるデータストアから、sinh(Wb)+cosh(Wb)を表す所定の予め算出した双曲線和を取り出すことと、
前記双曲線和とWaとを掛け合わせ、[sinh(Wb)+cosh(Wb)]×[Wa]を表す掛け合わせ双曲線和を生成することと、
前記双曲線和をスケーリング係数Kでスケーリングして、[sinh(Wb)+cosh」(Wb)]×Kを表すスケーリング済み双曲線和を生成することと、
前記スケーリング済み双曲線和に前記掛け合わせ双曲線和を加算して、[sinh(b)+cosh(b)]×[Wa+K]を表すスケーリング済みの第2の和を生成することと、
前記スケーリング済みの第2の和を1/Kでスケーリングすることにより、e
Xの近似値として[sinh(Wb)+cosh(Wb)]×[Wa/K+1]の表現を生成することと、を含む、少なくとも1つの非一時的コンピュータ可読媒体。
【発明の詳細な説明】
【技術分野】
【0001】
様々な実施形態は、概して指数計算回路に関するものである。
【背景技術】
【0002】
指数関数は、形式z=mnの関数であり、ここで、mは底であり、nは指数である。指数関数は、実変数の指数関数の導関数がその関数の値に正比例するので、一意である。mがオイラー数(e)である自然指数関数の場合、その関数がそれ自身の導関数になるように、比例定数は1である。純粋な数学及び応用数学において遍在する指数関数は、独立変数における一定の変化が従属変数における同じ割合の変化をもたらす、という関係をモデル化する。このような関係は、例えば、人口増加又は複利などの様々な自然科学及び社会科学において生じることがある。指数関係はまた、物理学、化学、工学、生物学、及び経済学においてもよく起こる。
【0003】
自然指数関数eXとe-Xとの特定の組み合わせに関して、双曲線関数が定義される。双曲線正弦関数は、
【0004】
【0005】
と表すことができる。双曲線余弦関数は、
【0006】
【0007】
と表すことができる。したがって、eXは、双曲線関数との関係では
【0008】
【0009】
と表すことができる。
応用数学との関係では、誤差は、真の値又は基準値と、その値の推定値又は近似値との差である。誤差解析を使用すると、実システム及び実関数の数値モデリング又は近似において、近似又はモデルのパラメータが変化する際の数値誤差の伝搬を評価することができる。誤差解析を使用すると、計算の分解能又は精度を評価することができる。
【発明の概要】
【課題を解決するための手段】
【0010】
デジタルワードを分け、第1のワードによって定義されたアドレスにあるデータストアから予め算出した所定の値を取り出すことによって、デジタルワード入力から自然指数を判断することに関わる装置及び関連方法である。例示用の実施例では、取り出される値は、双曲線和であってもよい。双曲線和に第2のワードを掛けてもよい。双曲線和をスケーリングし、それに乗算結果を加算すると、スケーリング済み指数値を生成することができる。スケーリング済み指数値をスケーリングすると、eXを表す指数値を生み出すことができる。様々な例において、デジタルワード入力は、固定小数点フォーマットであっても浮動小数点フォーマットであってもよく、又はそれらの間で変換されてもよい。様々な実施形態において、データストアはルックアップテーブルであってもよい。様々な例では、最小限のハードウェアリソースで自然指数を判断する場合にコンパクトで融通の利くアーキテクチャを提供することができる。
【0011】
様々な実施形態は、1つ以上の利点をもたらすことができる。例えば、いくつかの実施形態は、デジタル信号から自然指数を計算するのに必要とされるリソースを有利に減らすことができる実施形態がある。いくつかの実施形態は、自然指数を計算するのに必要とされるルックアップテーブルの深さを少なくとも半分まで圧縮するように構成され得る。いくつかの実施形態は、ハードウェア可用性が限られた指数関数の広いダイナミックレンジに適合するのに適したコンパクトで融通の利くアーキテクチャとして有利に実装され得る。いくつかの実施形態は、自然指数が、単一のデジタル信号プロセッサ(digital signal processor、DSP)を使用して、論理ゲートのみを使用して、又はそれらのリソース最適化組み合わせを使用して計算されることを可能にすることができる。いくつかの実施形態は、単一の積和演算ユニットのみを使用して有利に実装され得る。
【0012】
1つの代表的な態様では、自然指数コンピュテーション回路は、固定小数点ワードを受信し、固定小数点ワードを第1のワードと第2のワードとに分けるように構成されたスプリッタ回路と、第1のワードによって定義されたアドレスにあるデータストアから、所定の予め算出した双曲線和を取り出すように構成された取り出し回路と、双曲線和と第2のワードとを掛け合わせ、かつ掛け合わせ双曲線和を出力するように構成された乗算回路と、双曲線和を受信し、双曲線和を第1の係数でスケーリングするように構成された第1のスケーリング回路と、スケーリング済み双曲線和と掛け合わせ双曲線和とを合算し、スケーリング済みの第2の和を生成するように構成された加算回路と、スケーリング済みの第2の和を第2の係数でスケーリングし、eXの近似値を出力するように構成された第2のスケーリング回路と、を含む。
【0013】
乗算回路及び加算回路は、少なくとも1つのデジタル信号プロセッサ(DSP)において少なくとも部分的に実装されてもよい。乗算回路、加算回路、及びデータストアのうちの少なくとも1つが、論理ゲートとして少なくとも部分的に実装されてもよい。データストアは、ルックアップテーブルであってもよい。ルックアップテーブルは、固定小数点フォーマットにおいてエントリを記憶するように構成されてもよい。ルックアップテーブルの深さは、2Bであってもよく、ここで、Bは、第1のワードにおける総ビット数である。データストアは、浮動小数点フォーマットにおいてエントリを記憶するように構成されてもよい。
【0014】
第1の係数は、2B-Iであってもよく、ここで、Bは第1のワードの総ビット数であり、Iは第1のワードにおける整数ビット総数であり、第1のスケーリング回路では、双曲線和をB-Iビットだけ右ゼロパディングし得る。第2の係数は、1/(2B-I)であってもよく、ここで、Bは総ビット数であり、Iは第1のワードにおける整数ビット総数であり、第2のケーリング回路では、第2の和をB-Iビットだけビット単位で右シフトし得る。
【0015】
自然指数計算回路はまた、浮動小数点から固定小数点への変換回路をスプリッタ回路の前に含んでもよく、変換回路は、浮動小数点入力を受信し、浮動小数点入力をスプリッタ回路によって受信される固定小数点ワードに変換するように構成されている。自然指数計算回路はまた、固定小数点から浮動小数点への変換回路を第2のスケーリング回路の後に含んでもよく、変換回路は、固定小数点フォーマットにおいてeXの出力近似値を受信し、出力近似値を浮動小数点フォーマットにおいて出力するように構成されている。
【0016】
第2のワードは、1未満の数値を表し得る。この回路は、固定小数点ワードがNビット長であり、第1のワードが固定小数点ワードの最初のBビットであり、第2のワードが固定小数点ワードの最後のAビットであり、N=A+Bであり、第1のワードには固定小数点ワードのバイナリポイントが含まれるように構成されてもよい。eXの近似値が所定の誤差限界内で正確であるように、Bを選んでもよい。
【0017】
別の代表的な態様では、デジタル回路において指数を効率良く計算する方法は、Nビット長であるデジタル固定小数点ワードXを受信することと、Xの最初のBビットを第1のワードWbに、Xの残りのAビットを第2のワードWaに分けることであって、第1のワードがI整数ビット及びB-I小数ビットを含み、N=A+Bであり、X=Wb+Waである、分けることと、Wbによって定義されたアドレスにあるデータストアから、sinh(Wb)+cosh(Wb)を表す所定の予め算出した双曲線和を取り出すことと、双曲線和とWaとを掛け合わせ、[sinh(Wb)+cosh(Wb)]×[Wa]を表す掛け合わせ双曲線和を生成することと、双曲線和をスケーリング係数Kでスケーリングして、[sinh(Wb)+cosh(Wb)]×Kを表すスケーリング済み双曲線和を生成することと、スケーリング済み双曲線和に掛け合わせ双曲線和を加算して、[sinh(b)+cosh(b)]×[Wa+K]を表すスケーリング済みの第2の和を生成することと、スケーリング済みの第2の和を1/Kでスケーリングすることにより、eXの近似値として、[sinh(Wb)+cosh(Wb)]×[Wa/K+1]の表現を生成することと、を含んでもよい。乗算するステップ及び加算するステップは、少なくとも1つのデジタル信号プロセッサ(DSP)において少なくとも部分的に実装されてもよい。データストアは、固定小数点フォーマットにおいてエントリを記憶するように構成されたルックアップテーブルであってもよく、ルックアップテーブルの深さは2Bであってもよい。第1のワードWbは、Xのバイナリポイントを含んでもよく、Kは2B-Iであってもよく、双曲線和をKでスケーリングすることが、双曲線和をB-Iビットだけ右ゼロパディングすることを含んでもよく、スケーリング済みの第2の和を1/Kでスケーリングすることが、第2の和をB-Iだけビット単位で右シフトすることを含んでもよい。eXの近似値が所定の誤差限界内で正確であるように、Bを選んでもよい。
【0018】
別の代表的な態様では、少なくとも1つの非一時的コンピュータ可読媒体が、プロセッサによって実行されると、自然指数を計算する演算を引き起こす命令プログラムを提供することができる。演算は、Nビット長であるデジタル固定小数点ワードXを受信することと、Xの最初のBビットを第1のワードWbに、Xの残りのAビットを第2のワードWaに分けることであって、第1のワードがI整数ビット及びB-I小数ビットを含み、N=A+Bであり、X=Wb+Waである、分けることと、Wbによって定義されたアドレスにあるデータストアから、sinh(Wb)+cosh(Wb)を表す所定の予め算出した双曲線和を取り出すことと、双曲線和とWaとを掛け合わせ、[sinh(Wb)+cosh(Wb)]×[Wa]を表す掛け合わせ双曲線和を生成することと、双曲線和をスケーリング係数Kでスケーリングして、[sinh(Wb)+cosh(Wb)]×Kを表すスケーリング済み双曲線和を生成することと、スケーリング済み双曲線和に掛け合わせ双曲線和を加算して、[sinh(b)+cosh(b)]×[Wa+K]を表すスケーリング済みの第2の和を生成することと、スケーリング済みの第2の和を1/Kでスケーリングすることにより、eXの近似値として[sinh(Wb)+cosh(Wb)]×[Wa/K+1]の表現を生成することと、を含んでもよい。
【0019】
添付図面及び以下の発明を実施するための形態において、様々な実施形態の詳細を明らかにする。発明を実施するための形態及び図面から、また特許請求の範囲から他の特徴及び利点が明らかになるであろう。
【図面の簡単な説明】
【0020】
【
図1】開示の回路及び工程が実装され得る代表的なプログラマブル集積回路(integrated circuit、IC)を表す。
【
図2】自然指数コンピュテーション回路の代表的なユースケースを表す。
【
図3A】代表的な自然指数コンピュテーション回路のブロック図を表す。
【
図3B】浮動小数点値を受け入れ、出力するコンパクトで融通の利く指数コンピュテーション回路のブロック図を表す。
【
図3C】固定小数点値を受け入れ、浮動小数点値を出力する代表的な自然指数コンピュテーション回路のブロック図を表す。
【
図3D】双曲線和の浮動小数点データストアが設けられた代表的な自然指数コンピュテーション回路のブロック図を表す。
【
図4】統合アーキテクチャにおいて、高水準言語表現を使用して、コンパクトな指数コンピュテーションを実装する代表的なシステムのブロック図を表す。
【
図5】入力ダイナミックレンジが一定である代表的なアーキテクチャの精度を評価するシミュレーション結果を表す。
【
図6】入力ダイナミックレンジが変わる際の代表的なアーキテクチャの精度を評価するシミュレーション結果を表す。
【
図7A】ワード幅が第1の入力ダイナミックレンジにわたって変わる際の代表的なアーキテクチャの精度を評価するシミュレーション結果を表す。
【
図7B】ワード幅が第2のより広い入力ダイナミックレンジにわたって変わる際の代表的なアーキテクチャの精度を評価するシミュレーション結果を表す。
【
図8】回路において指数を計算する場合の代表的なコンパクトで融通の利く方法を表す。
【
図9】指数を計算する回路の構成を最適化する場合の代表的な方法を表す。
【
図10】開示の回路及び工程が実装され得るシステムオンチップ(System-on-Chip、SOC)用の代表的なアーキテクチャを示す。
【発明を実施するための形態】
【0021】
様々な図面における同様の参照符号は、同様の要素を示す。
自然指数のコンパクトで融通の利く計算に関わる装置及び関連方法である。理解しやすいように、本明細書は、以下のように編成されている。最初に、
図1を参照しながら、データ通信を行うのに適した代表的なプラットフォーム(例えば、フィールドプログラマブルゲートアレイ(field programmable gate array、FPGA))を手短に紹介する。二番目に、
図2を参照しながら、自然指数のコンパクトな計算を実装する代表的なユースケースについて説明する。三番目に、
図3A~
図9を参照しながら、自然指数のコンパクトな計算の場合の様々な実装形態を示す代表的な回路及び方法について説明する。最後に、
図10を参照しながら、データ通信及びDSPを行うのに適した別の代表的なプラットフォーム(例えば、システムオンチップ(SOC))を手短に紹介する。
【0022】
図1は、開示の回路及び工程が実装され得る代表的なプログラマブル集積回路(IC)を表す。プログラマブルIC100としては、FPGA論理回路が挙げられる。プログラマブルIC100は、様々なプログラマブルリソースにより実装することができ、システムオンチップ(SOC)と称することができる。FPGA論理回路の様々な例には、配列したいくつかの異なるタイプのプログラマブル論理ブロックを挙げることができる。
【0023】
例えば、
図1は、マルチギガビットトランシーバ(multi-gigabit transceiver、MGT)101、構成可能論理ブロック(configurable logic block、CLB)102、ランダムアクセスメモリブロック(blocks of random access memory、BRAM)103、入力/出力ブロック(input/output block、IOB)104、構成及びクロッキング論理回路(configuration and clocking logic、CONFIG/CLOCKS)105、デジタル信号処理ブロック(DSP)106、専用入力/出力ブロック(I/O)107(例えば、クロックポート)、及び他のプログラマブル論理回路108(例えば、デジタルクロックマネージャ、アナログ-デジタル変換器、システム監視論理回路)を含む多数の異なるプログラマブルタイルを含むプログラマブルIC100を示す。プログラマブルIC100は、専用プロセッサブロック(PROC)110を含む。プログラマブルIC100には、内部及び外部の再構成ポート(図示せず)を含むことができる。
【0024】
様々な例において、MGT101を使用して、シリアライザ/デシリアライザを実装することができる。MGT101としては、様々なデータシリアライザ及びデータデシリアライザを挙げることができる。データシリアライザとしては、様々なマルチプレクサ実装形態を挙げることができる。データデシリアライザとして、様々なデマルチプレクサ実装形態を挙げることができる。
【0025】
FPGA論理回路の例によっては、各プログラマブルタイルは、それぞれの隣り合うタイルにおいて、対応する相互接続要素間に標準化相互接続124を有するプログラマブル相互接続要素(interconnect element、INT)111を含む。それ故、まとめられたプログラマブル相互接続要素は、図示のFPGA論理回路では、プログラマブル相互接続構造を実装する。プログラマブル相互接続要素INT111は、
図1に含まれる例で示す通り、同じタイル内にプログラマブル論理要素間の内部接続120を含む。プログラマブル相互接続要素INT111は、
図1に含まれる例で示す通り、同じタイル内にプログラマブル相互接続要素INT111間の相互INT接続122を含む。
【0026】
例えば、CLB102は、ユーザ論理回路を実装するようにプログラムされ得る構成可能論理要素(configurable logic element、CLE)112に加え、単一のプログラマブル相互接続要素INT111を含んでもよい。BRAM103は、BRAM論理要素(BRAM logic、BRL)113及び1つ以上のプログラマブル相互接続要素を含んでもよい。例によっては、タイルに含まれる相互接続要素の個数は、タイルの高さに応じて変わってもよい。描写の実装形態では、BRAMタイルの高さは、5個のCLBと同じであるが、他の個数(例えば、4個)も使用することができる。DSPタイル106は、DSP論理要素(DSP logic、DSPL)114及び1つ以上のプログラマブル相互接続要素を含んでもよい。IOB104は、例えば、入力/出力論理要素(input/output logic、IOL)115の2つのインスタンス、及びプログラマブル相互接続要素INT111の1つのインスタンスを含んでもよい。例えば、I/O論理要素115に接続された実際のI/Oボンドパッドは、様々な図示の論理ブロックの上に重ねた金属を使用して製造することができ、入力/出力論理要素115のエリアに留めなくてもよい。
【0027】
図示の実装形態では、ダイの中心近くの柱状エリア(
図1では網掛けで示す)は、構成、クロック、及び他の制御論理回路に使用される。列から延びる水平エリア109には、プログラマブルIC100の幅にわたってクロック及び構成信号が分布している。「柱」エリア、また「水平」エリアと言うとき、図面を縦向きに見た場合であることに留意すること。
【0028】
図1に示したアーキテクチャを活用したいくつかのプログラマブルICは、プログラマブルICの大部分を作り上げる規則的な柱状構造を中断させる更なる論理ブロックを含んでもよい。更なる論理ブロックは、プログラマブルブロック及び/又は専用倫理回路であってもよい。例えば、
図1に示したプロセッサブロックPROC110は、CLB102及びBRAM103のいくつかの列に跨る。
【0029】
図1は、代表的なプログラマブルICアーキテクチャを示す。列における論理ブロックの個数、列の相対幅、列の個数と順番、列に含まれる論理ブロックのタイプ、その論理ブロックの相対サイズ、また相互接続/論理実装形態は、単に例として提供している。例えば、実際のプログラマブルICでは、ユーザ論理回路の効率の良い実装を促進するために、CLB102が表示されていればどこでも、CLB102の2つ以上の隣り合う列が含まれてもよい。
【0030】
例えば、プログラマブルIC100などの集積回路(IC)(例えば、FPGA)が、自然指数を判断するのに使用されてもよい。ICのアーキテクチャは、ワードを第1のワードと第2のワードとに分け、第1のワードを使用してデータストアから双曲線和を取り出すことによって、デジタルワード入力から自然指数を効率良く計算するように有利に構成され得る。
【0031】
図2は、自然指数コンピュテーション回路の代表的なユースケース200を表す。固定小数点ワードX205は、オイラー数(「e」と表される数学的定数)を累乗すべき指数として意図され得る指数を表す。e
Xと表され得るワードXは、Nビット長215[0:N-1]である。ワードXは、Bビット長220である第1のワードWbと、Aビット長225である第2のワードWaとに分けられる。第1のワードWbは、バイナリポイント240を含み、それにより、I整数ビット230及びF小数ビット235を含む。ワードXの残りの小数ビットは、Aにある。したがって、Xにおけるビット数がWbにおけるビット数+Waにおけるビット数に等しくなるため、N=B+Aである。同様に、Bにおけるビット数が整数ビット数+小数ビット数に等しくなるため、B=I+Fである。
【0032】
ワードWbは、データストア210において、eXの結果、又はそれからの結果の望ましい表現を生成するのに十分なデータを表す双曲線三角表現を含むアドレスとして使用され得る。双曲線三角表現を更なる演算で使用して、望ましい許容範囲内でe...xの結果を生成することができる。更なる演算としては、加算、乗算、又はそれらの組み合わせを挙げることができる。更なる演算が、例えば、Waに対しても行われてもよい。
【0033】
したがって、双曲線を使用する様々なコンパクトで融通の利くアーキテクチャでは、指数関数を有利に実装することができる。例えば、実施形態によっては、埋め込み回路(例えば、FPGA又はASIC)において指数計算回路を有利に実装することができる。
【0034】
指数関数のダイナミックレンジは、極めて広く、デジタル実装を課題の多いものにすることがあり得る。様々な実施形態では、指数関数を計算するのに使用されるルックアップテーブルのサイズを圧縮し、かつ計算に使用される処理リソースを減らす指数関数の性質を有利に実装することができる。いくつかの実施形態は、単一の圧縮ルックアップテーブルと単一の積和演算ユニットを使用して実装することができ、これは、例えば、面積とリソースが限られている場合に有利な場合がある。実施形態によっては、例えば、畳み込みニューラルネットワーク(convolutional neural network、CNN)、高速フーリエ変換(fast Fourier transform、FFT)回路、及びデジタル信号処理(DSP)の用途で、コンパクトな指数計算回路を有利に実装することができる。
【0035】
例証として、デジタルワードXは、結果(y):y=eXが求められるオイラー数の指数であってもよい。ただし、eXは、以下の双曲線関数の和と表してもよい。
【0036】
式1:y=eX=cosh(X)+sinh(X)
ここで、coshは双曲線余弦関数であり、sinhは双曲線正弦関数である。
【0037】
Xは、係数KでスケーリングされたWbとWaとの和として表すことができ、ここで、X=Wb+Wa×Kである。例えば、例証として、Waは、固定小数点ワードAビット長であってもよい。Nビット長になるようにWaを左ゼロパディングすると、ここで、最初のBビットはゼロに等しく、その結果はWa/Kであり、ここで、K=2B-Iである。例えば、固定小数点数が使用されるか又は浮動小数点数が使用されるかに基づき、B、A、I、又はFの値、又はそれらの何らかの組み合わせの値を含む所与の実装形態に適するようにKを選ぶことができる。
【0038】
次に、yが、Wa×K及びWbを使用して表現し直され、拡張され、簡略化され得る。
【0039】
【0040】
Wbは、Xの長さA(Waにおけるビット数)、N(Xにおけるビット数)、及びI(Wbにおける整数ビット数)の関数として、次のように表すことができる。
【0041】
【0042】
Waの値がXの小数ビットによって判断されるので、Wa<1であると仮定することができる。この仮定により、sinh(Wa)及びcosh(Wa)を以下のように簡略化することができる。
【0043】
【0044】
Waがゼロに近づくにつれてsinh(Wa)の限界がWaに近づき、Waがゼロに近づくにつれて、cosh(Wa)の限界が1に近づき、Wa<1と仮定すると、又は特にWa<<1の場合(Waが1よりもかなり小さい)、sinh(Wa)をWaとして近似することができ、cosh(Wa)を1として近似することができる。したがって、式2Cを以下のように簡略化することができる。
【0045】
【0046】
図3Aには、代表的な自然指数コンピュテーション回路のブロック図を表す。指数計算回路300Aでは、Nビット[0:N-1]の固定小数点ワードXを受信する。分割回路302では、Xを、ビット[B+1:N-1]の第1のワードWbと、ビット[0:A-1]の第2のワードWaとの2つのワードに、ビット単位で分け、ここで、AはWaにおけるビット数であり、BはWbにおけるビット数であり、N=B+Aである。第1のワードWbは、sinh(Wb)+cosh(Wb)を表す値に対応する、データストア304にあるアドレスである。データストア304は、sinh(Wb)+cosh(Wb)に所定の予め算出した値を持つ、例えば、ルックアップテーブル、又はその一部として実装されてもよい。データストア304は、例えば、読み取り専用メモリ(read-only memory、ROM)において実装されてもよく、ランダムアクセスメモリ(random access memory、RAM)、ブロックRAM(block RAM、BRAM)、スタティックRAM(static RAM、SRAM)、ダイナミックRAM(dynamic RAM、DRAM)、又は他の適切なデータストアにあるルックアップテーブルとして実装されてもよい。例えば、それに限るのでなく例証として、データストア304は、BRAMにあり、所定の範囲内のWbの各値が[sinh(Wb)+cosh(Wb)]の所定の予め算出した値である、深さ2
Bのルックアップテーブルとして実装されてもよい。所定の範囲は、Bの所定の値に従って設定され得る。XをBビットとAビットとの2つのワードに分けることにより、Nビットにおいて働くのに十分な乗算器からBビット又はAビットの最大値において働くのに十分な乗算器に、乗算器306のサイズを有利に減らすことができる。
【0047】
データストア304から取り出された双曲線和は、以下の式として表すことができる。
式6:sinh(Wb)+cosh(Wb)
双曲線和に、乗算回路306によってWaを掛けると、以下の式として表され得る掛け合わせ双曲線和が得られる。
【0048】
式7:[sinh(Wb)+cosh(Wb)]×Wa
スケーリング回路308では、データストア304から取り出した双曲線和を係数Kでスケーリングする。Xが固定小数点数である実装形態では、Kは、例えば、2B-Iであってもよく、ここで、BはWbにおけるビット数であり、IはBにおける整数ビット数である。Xが浮動小数点数である実装形態によっては、例えば、双曲線和をB-Iビットだけ右ゼロパディングすることによって、スケーリング回路338においてスケーリングを果たすことができる。
【0049】
次に、合算回路310において、掛け合わせ双曲線和とスケーリング済み双曲線和とを合算することにより、以下の式として表され得るスケーリング済み指数計算を生成する。
【0050】
【0051】
次に、スケーリング回路312では、スケール済み指数計算にスケーリング係数1/Kを適用して、指数計算を生成する。スケーリング回路312は、例えば、K=2B-Iである固定小数点実装形態などにおいて、B-Iビットだけ右ビット単位シフトしたものであってもよい。
【0052】
スケーリング回路312によって生成された指数計算は、以下の式として表すことができる。
【0053】
【0054】
式5に従えば、この指数計算は、eXにほぼ等しくなる。
【0055】
【0056】
したがって、
図3Aに表した通りに実装される回路は、入力Xから、Xの所与の範囲、またN、A、及びBのサイズの場合で、容認できる誤差限界内でe
Xの値を有利に計算するように構成され得る。
【0057】
図3Bには、浮動小数点値を受け入れ、出力するコンパクトで融通の利く自然指数コンピュテーション回路のブロック図を表す。回路300Bは、例えば、
図3Aに実装されたものと同様の回路であってもよく、浮動小数点入力が受信され、固定小数点に変換され、指数計算が生成され、それにより浮動小数点出力に変換されることを可能にする浮動小数点変換ブロックが回路の入口及び出口に追加されている。大抵、浮動小数点値が受信され、浮動小数点から固定小数点への変換回路330によって、固定小数点ワードXに変換される。ワードXは、分割回路332によって、第1のワードWbと第2のワードWaとに分けられる。Wbによって定義されたアドレスにあるデータストア334から双曲線和が受信される。乗算回路336によって双曲線和とWaとを掛け合わせて、掛け合わせ双曲線和を生成する。双曲線和をスケーリング回路338において係数Kでスケーリングし、その結果を合算回路340によって掛け合わせ双曲線和に合算して、スケーリング済み指数計算値を生成する。スケーリング済み指数計算がスケーリング回路342によって係数1/Kでスケーリングされ、その結果としての固定小数点指数計算が固定小数点から浮動小数点への変換回路344によって浮動小数点値に変換される。結果としての浮動小数点指数計算は、容認できる誤差限度内のe
Xの表現とすることができる。
【0058】
図3Cには、固定小数点値を受け入れ、浮動小数点値を出力する代表的な自然指数コンピュテーション回路のブロック図を表す。回路300Cは、例えば、
図3Aに実装されたものと同様な回路であってもよく、浮動小数点入力が受信され、指数計算が生成され、それにより浮動小数点出力に変換されるのを可能にする浮動小数点変換ブロックが回路の出口に追加されている。大抵、固定小数点ワードXが受信され、分割回路360によって第1のワードWbと第2のワードWaとに分けられる。双曲線和は、Wbによって定義されたアドレスにあるデータストア362から取り出される。双曲線和とWaとを乗算回路364によって掛け合わせ、掛け合わせ双曲線和を生成する。双曲線和をスケーリング回路366において係数Kでよってスケーリングし、その結果を合算回路368によって、掛け合わせ双曲線和に合算して、スケーリング済み指数計算を生成する。スケーリング済み指数計算は、スケーリング回路370によって係数1/Kでスケーリングされ、結果としての固定小数点指数計算が固定小数点から浮動小数点への変換回路372によって浮動小数点値に変換される。結果としての浮動小数点指数計算は、容認できる誤差限度内のe
Xの表現とすることができる。
【0059】
図3Dには、双曲線和の浮動小数点データストアを備える代表的な自然指数コンピュテーション回路のブロック図を表す。指数計算回路300Dは、例えば、
図3Aに実装されたものと同様の回路であってもよく、データストアが浮動小数点値を記憶するように構成され、また第2のワードを浮動小数点ワードに変換することにより固定小数点入力が受信され、指数計算が生成され、自然浮動小数点出力が生み出されるのを可能にする浮動小数点変換ブロックが追加されている。大抵、固定小数点ワードXが受信され、分割回路380によって、第1のワードWbと第2のワードWaとに分けられる。Wbによって定義されたアドレスにある浮動小数点データストア382から浮動小数点フォーマットの双曲線和が受信される。データストア382には、浮動小数点ファーマットのsinh(Wb)+cosh(Wb)を表す事前読み込みの予め算出した双曲線和を提供することができる。Waは、固定小数点から浮動小数点への変換回路384において固定小数点フォーマットから浮動小数点フォーマットに変換される。
【0060】
乗算回路386によって双曲線和とWaとを掛け合わせて、掛け合わせ指数双曲線和を生成する。スケーリング回路388合算において、この双曲線和を係数Kでスケーリングし、回路390によってこの結果を掛け合わせ双曲線和に合算し、スケーリング済み指数計算を生成する。スケーリング済み指数計算は、スケーリング回路392によって、係数1/Kでスケーリングされる。結果としての浮動小数点計算は、容認できる誤差範囲内のeXの表現とすることができる。
【0061】
図4には、高水準言語表現を使用して、統合アーキテクチャにおいてコンパクトな指数コンピュテーションを実装する代表的なシステムのブロック図を表す。具体的には、
図4には、高水準言語(high-level language、HLL)において命令をコンパイルし、n個のプログラマブル論理ブロック(1、2、3、...n)のうちの例えばいずれか又は全てを構成する汎用システムを表す。構成システム400Aは、展開環境405を含む。ユーザは、実行時に、FPGA465を使用して圧縮データストアにより指数コンピュテーションを行うことができるハードウェアアーキテクチャを、コンパイル時のレジスタ転送レベル(register-transfer level、RTL)発生を経て、生み出すことができる命令を、HLL(例えば、P4言語)を使用して、設計時に生成することができる。展開環境405はまたHLLコンパイラ415を含む。HLLコンパイラ415は、HLLプログラム410及びデータベース420と動作可能に接続する。この描写の例では、データベース420は、ユーザライブラリ420a及びHLLライブラリ420bを含む。HLLコンパイラ415では、データベース420にある使用可能なライブラリファイルを選択し、HLLコマンドをコンパイルして、データ構造とも称され得る1つ以上の命令セットにすることができる。展開の間、HLLコンパイラ415では、命令セットをデータストア又はNVM425(不揮発性メモリ)に記憶することができる。
【0062】
構成システム400Aはまた、実装環境430を含む。例えば、実装エンジニアは、いくつかのコンパイラツールを使用して、NVM425に記憶された命令を、例えばビットストリームを介して、例えばFPGA465などのターゲットデバイスに読み込まれ得るハードウェア/ソフトウェア実装形態430a(例えば、RTL(レジスタ転送論理回路))に変換することができる。実施形態によっては、実装環境430は、例えば、展開環境405にあるユーザ入力高水準言語プログラミングによって指定された設計に従って、固定ハードウェアを実現する(例えば、ASICにおいて)のに相応しいデータファイルを生成することができる。
【0063】
構成システム400Aはまた、ハードウェア環境440を含む。ハードウェア環境440は、例えば、ラインカードを含んでもよい。実施形態によっては、ハードウェア環境440は、ネットワークインターフェースカード(network interface card、NIC)を含んでもよい。この描写の例では、ハードウェア環境440は、外部信号を接続して、FPGA(例えば、FPGA465)にするいくつかのバッファ445a(例えば、I/Oインターフェースを形成することのできる)を含む。描写の例では、FPGA465は、例えば、展開環境405におけるユーザ入力高水準言語プログラミングによって指定された設計に従って回路機構を実現するのに使用可能なプログラマブルハードウェアリソースを表すn個のプログラマブル論理ブロックを含む。FPGA465はまた、様々な補助機能を提供することのできる他のデバイス445bと接続する。
【0064】
図5には、入力ダイナミックレンジが一定である代表的なアーキテクチャの精度を評価するシミュレーション結果を表す。様々な実施形態において、指数計算の精度は、Wbに含まれるビット数Bによって決まってくる。所定の整数ビット数である固定小数点入力Xに対して構成された実施形態などのいくつかの実施形態では、精度は、Wbに含まれる小数ビット数Fの結果として間接的にBによって決まってくる(ここで、F=B-I)。Fが増えると、Aが減り、それによってWaの値が小さくなる。Waの値が小さくなるにつれて、Waは0に近づき、式4A及び4Bにおける仮定を簡略化することにより、ますます正確になる簡略化式5をもたらす。
【0065】
N=28、L
f=14であり、Xが範囲[-1、1]にある例示用の実施例ではBが変わってくるので、最大誤差グラフ501では、非圧縮実装形態(例えば、e
Xの「正確な」計算)と、
図3Aに示されているものなどの圧縮実装形態における計算とで最大誤差を比較する。Bが12ビットに近づくにつれて、最大誤差は、ほぼ3.48×10
-5からほぼ3.07×10
-5に下がり、15ビットを通して一定のままである。B=16ビットでは、誤差は、ほぼ3.1×10
-5に幾分上がる。
【0066】
平均誤差グラフ502では、グラフ501と同じ実装形態における非圧縮計算と圧縮計算とで平均誤差を比較する。グラフ502は、非圧縮計算の平均誤差がB=17付近で収束し、安定したままであったことを示す。したがって、所定の誤差限界に従って、例えば、Bの値又は範囲を選択し、予め定めることができる。Bの範囲を使用して、Bビットのワードの範囲内で、データストアにある全てのアドレスWbに対して、ルックアップテーブルの幅を2Bとして予め定め、またsinh(Wb)+cosh(Wb)の値を予め定めることができる。
【0067】
図6には、入力ダイナミックレンジが変わるにつれた代表的なアーキテクチャの精度を評価するシミュレーション結果を表す。精度は、例えば、Wbが固定小数点フォーマットである場合など、バイナリポイントの前の第1のワードWbにおける整数ビット数(I)によって決まってくる場合がある。例えば、Bが一定に保持され、Iが増えると、Wbにおける小数ビット数(F)は減る。したがって、表される値の精度、それ故ルックアップテーブルの粒度が下がる可能性があるので、精度が下がる可能性がある。
【0068】
N=16、L
f=14、B=12であり、Xが範囲[-|2
I-1|、2
I-1]にある例示用の実施例ではIが変わってくるので、最大誤差グラフ601では、非圧縮実装形態(例えば、e
Xの「正確な」計算)と、
図3Aに示されているものなどの圧縮実装形態における計算とで最大誤差を比較する。同様に、平均誤差グラフ602では、同じシミュレーションシナリオにおいて平均誤差を比較する。3ビット未満では、圧縮埋め込みにおける誤差は、約0.15×10
-4で、非圧縮実装形態とほとんど区別できないままである。I=3ビットの後、誤差が大きくなり始める。したがって、所定の誤差限界に従って、例えば、Iの誤差の値又は範囲を選択し、予め定めることができる。例えば、Xの所定の範囲に応じて、その値を表すのに十分であるようにIの値を選ぶことができ、選ばれるBの値は、所定の誤差限界内に留まるのに十分な精度でXを表すのにFが十分に大きくなるように、Iによって決まってくる。
【0069】
図7Aには、ワード幅が第1の入力ダイナミックレンジにわたって変わるのにつれた代表的なアーキテクチャの精度を評価するシミュレーション結果を示す。精度は、例えば、データストアに記憶された所定の予め算出した双曲線和における分数ビット数によって決まってくる場合がある。記憶された分数ビット数は、L
fで表すことができる。L
fは、例えば、構成工程中に判断することができ、例えば、X、B、I、F、又はそれらの何らかの組み合わせによって決まってくる場合がある。
【0070】
N=16であり、Lfが範囲[10、18]にあり、Bが範囲[9、12]にあり、Xが範囲[-1、1]にある例示用の実施例では、Lf及びBが変わってくるので、最大誤差グラフ701では、非圧縮実装形態(例えば、eXの「正確な」計算)と、3Aに示されているものなどの非圧縮実装形態における計算とで、最大誤差を比較する。同様に、平均誤差グラフ702では、同じシミュレーションシナリオにおいて平均誤差を比較する。グラフ701及び702上のそれぞれ異なる圧縮系列は、Lfが誤差に対して変えられ、プロットされるBの別個の値を表す。図から分かるように、誤差は、大抵、Lfが増えるにつれて指数関数的減衰で緩和され、精度の改善は、Lfが増え続けるにつれて低下する。同様に、誤差はBが増えるにつれて緩和されるが、収穫逓減を伴う。B及びLfを増加させることによる誤差の改善は、平均誤差よりも最大誤差を評価するときに顕著であり、増えたBとLfとに対する応答は、このレベルでは区別できないように見える可能性がある。
【0071】
図7Bには、ワード幅が第2のより大きい入力ダイナミックレンジにわたって変わってくるのにつれた代表的なアーキテクチャの精度を評価するシミュレーション結果を示す。最大誤差グラフ703では、Xの範囲が[-2、2]に広げられることを唯一の例外として、
図7Aに示されるのと同様のシミュレーションシナリオにおいて、
図3Aに示されるように、非圧縮実装形態(例えば、e
Xの「正確な」計算)と圧縮実装形態における計算とで最大誤差を比較する。同様に、平均誤差グラフ704では、同じシミュレーションシナリオにおいて平均誤差を比較する。グラフ703と704とのそれぞれ異なる圧縮系列は、誤差に対してL
fが変えられ、プロットされるBの別個の値を表す。
【0072】
図から分かるように、誤差はまた、大抵、Lfが増えるにつれて指数関数的減衰で緩和され、Lfが増え続けるにつれて精度の改善が低下する。同様に、誤差は、Bが増えるにつれて緩和され、これも収穫逓減を伴う。B及びLfを増加させることによる誤差の改善は、平均誤差よりも最大誤差を評価するときに顕著であり、増えたBとLfとに対する応答は、多くの場合、このレベルでは区別できない。最も注目すべきことに、Xの範囲が広がると、Bが、誤差、特に最大誤差に強い影響を及ぼすように見える。例えば、最大誤差は、B=9の場合、ほぼ約2.5×10-4で平坦であるように見え、Lfの増加は、Lf=13の後、更なる影響をほとんど及ぼさない。最大誤差及び平均誤差の両方における顕著な改善は、Bを10に増やすことによって見られる。圧縮対非圧縮の誤差は、B=12によって収束するように見える。したがって、Xの所定の範囲、所定の誤差限界に対して、N、Lf、及びBの値は、計算リソース(例えば、選択されたLfによって判断されるルックアップテーブルによって必要とされるメモリサイズ、並びに乗算器サイズ及び合算器サイズ)と、誤差限界内に留まるのに必要とされる正確さ及び精度とのバランスをとるように、有利に選ぶことができる。
【0073】
図8には、回路において指数を計算する場合の代表的なコンパクトで融通の利く方法を示す。方法800は、例えば、
図3A~
図3Dを参照しながら説明した代表的な実装形態などの回路において、1つ以上のコントローラに対するコンピュータプログラム命令において、又は回路設計最適化システムにおいて具体化され得る。Nビット長であってもよい固定小数点デジタルワードXが受信される805。ワードXは、2つのワード、すなわち、Xの最初のBビットである)第1のワードWbと、Xの最後のAビットを含む第2のワードWaとに分けられる。ワードXは、自然指数e
Xを計算する際に使用される指数を表し得る。固定小数点デジタルワードXは、例えば、前もって浮動小数点値から変換されていてもよい。第1のワードWbは、Xのバイナリポイントを含んでもよく、I整数ビット及びF小数ビッを含んでもよく、ここで、B=I+Fである。第2のワードWaは、Aビット長であってもよく、ここで、A=N-Bであり、X=Wb+Wa/Kであり、Kはスケーリング係数である。したがって、Xビットを[0:N-1]としてアドレス指定することができ、Wbビットを[B+1:N-1]としてアドレス指定することができ、Waを[0:A]としてアドレス指定することができる。
【0074】
第1のワードWbは、データストアにおけるアドレスを定義することができる。データストアは、例えば、Xの所定の範囲及びBの所定の値に対するsinh(Wb)+cosh(Wb)の所定の予め算出した値を含むことができ、深さが2Bであってもよい。sinh(Wb)+cosh(Wb)を表す、所定の予め算出した双曲線和がデータストアから取り出される815。双曲線和にWaを掛け、[sinh(Wb)+cosh(Wb)]×[Wa]を表す825。双曲線和をKでスケーリングし、[sinh(Wb)+cosh(Wb)]×Kを表す820。スケーリングは、例えば、K=2B-Iとなるように、双曲線和をB-Iビットだけ右ゼロパディングすることによって行われ得る。
【0075】
次に、スケーリング済み双曲線和と掛け合わせ双曲線和とを合算して830、[sinh(Wb)+cosh(Wb)]×[Wa+K]を表すスケーリング済み指数計算を生成する。その結果をスケーリング係数1/Kでスケーリングして、eXの近似表現として[sinh(Wb)+cosh(Wb)]×[Wa/K+1]を表す835。スケーリング835は、例えば、表現された値に1/2B-Iを掛けることに対応する、B-Iビットだけ固定小数点値の右シフトであってもよい。
【0076】
方法800は、例えば、ルックアップテーブルに対して深さ2BのROMを必要とするリソースが限られた回路にある積和演算ユニットを使用して実装されてもよい。Bは、例えば、所定の誤差限界に従い、Xに所定の値範囲に従って判断することができる。
【0077】
図9には、指数を計算する回路の構成を最適化する場合の代表的な方法を表す。方法900は、最大誤差パラメータとともに、
図8に表した代表的な方法800によるなどの圧縮計算方法に従って、e
Xを計算する際、Xの値範囲及び最大誤差パラメータを受信すること905によって始まる。次に、実装パラメータをシミュレートする構成シミュレーションを行う910。実装パラメータとしては、以下に限るのではなく例として、B、A、F、I、L
f、ルックアップテーブル深度、又はそれらの何らかの組み合わせを挙げることができる。
【0078】
この結果を評価して、最大誤差パラメータを超えるかどうかを判断する915。最大誤差パラメータを超える場合、実装パラメータを変えて920、シミュレーションを繰り返す910。最大誤差パラメータを超えない場合、論理ゲート実装形態及びDSP実装形態が挙げられる複数のハードウェア構成に対して、実装形態によって必要とされるリソースを判断する950。例えば、所定の実装パラメータを使用して設計実装形態を生み出す論理合成ツールを使用して、例えば、論理ゲート、DSP、BRAM、他の相応しいハードウェア、又はそれらの何らかの組み合わせを挙げることができるハードウェア実装形態の構成を生み出すためのリソースを判断することができる。リソースは、例えば、所定のFPGA又はASIC上で使用可能な所定のリソースであってもよい。必要とされるリソースとして、例えば、論理ゲートの数、データストアのサイズ、及び物理的フットプリントを挙げることができる。ハードウェア実装形態を比較して、どの実装形態が最も少ないリソースの使用で済むかを判断する。最もリソース効率が良い論理ゲート実装形態であれば、それが選択される955。リソース効率が良いDSP実装形態であれば、それが選択される960。
【0079】
様々な実施形態において、比較されるハードウェア実装形態としては、DSP及び論理ゲート以外の実装形態を挙げることができ、実装形態によっては、DSPを省くか、論理ゲートを省くか、又はその両方を省くことができる。いくつかの実施形態は、DSPと論理ゲートとの組み合わせ、又はそれらの複数の組み合わせのハードウェア実装形態を評価することができる。方法900の様々な実施形態は、例えば、FPGAファームウェアを構成し、ASICを設計するため、又は回路、プログラム命令、若しくはそれらの何らかの組み合わせを構成するために有利に使用され得るシンセサイザにおいて少なくとも部分的に実装されてもよい。いくつかの実施形態は、例えば、ベンダ特有であってもよく、ユーザが、R及び最大誤差、又はその範囲を含む様々なパラメータを選択し、かつリソース最適化構成を選択することを可能にするコンピュータプログラム命令において実装され得る。いくつかの実施形態は、ユーザが、ユーザにとって関心のある1つ以上のパラメータに対する制約に基づいて、使用されるリソース、計算速度、誤差限界、誤差限界を与えられたXの範囲、他の関心パラメータ、又はそれらの何らかの組み合わせを比較することを可能にし得る。
【0080】
図10は、開示の回路及び工程が実装され得るシステムオンチップ(SOC)用の別のアーキテクチャ例を示す。SOC1000は、プログラマブルIC及び統合プログラマブルデバイスプラットフォームの一例である。
図10の例では、図示のSOC1000の様々な異なるサブシステムすなわち領域は、単一の集積パッケージ内に設けられた単一のダイ上に実装され得る。他の例では、様々なサブシステムは、単一の集積パッケージとして提供される2つ以上の相互接続ダイ上に実装されてもよい。
【0081】
この例では、SOC1000は、様々な機能を備える回路機構を有する2つ以上の領域を含む。この例では、SOC1000は、場合によっては、データ処理エンジン(data processing engine、DPE)アレイ1002を含む。SOC1000は、プログラマブル論理回路(programmable logic、PL)領域1004(以下、PL領域又はPL)と、処理システム(processing system、PS)1006と、ネットワーク-オン-チップ(Network-on-Chip、NOC)1008と、1つ以上のハードワイヤード回路ブロック1010とを含む。DPEアレイ1002は、SOC1000の他の領域へのインターフェースを有する2つ以上の相互接続のハードワイヤードのプログラマブルプロセッサとして実装されている。
【0082】
PL1004は、特定の機能を果たすようにプログラムされ得る回路機構である。例として、PL1004は、フィールドプログラマブルゲートアレイタイプの回路機構として実装されてもよい。PL1004は、プログラマブル回路ブロックアレイを含むことができる。PL1004内のプログラマブル回路ブロックの例としては、構成可能論理ブロック(CLB)、専用ランダムアクセスメモリブロック(BRAM及び/又はUltraRAMすなわちURAM)、デジタル信号処理ブロック(DSP)、クロックマネージャ、及び/又は遅延ロックループ(delay lock loop、DLL)が挙げられるが、これらに限るわけではない。
【0083】
PL1004内の各プログラマブル回路ブロックは、通常、プログラマブル相互接続回路機構とプログラマブル論理回路機構の両方を含む。プログラマブル相互接続回路機構は、通常、プログラマブル相互接続ポイント(programmable interconnect point、PIP)によって相互接続された様々な長さの多数の相互接続ワイヤを含む。通常、相互接続ワイヤは、ビット単位で接続性を与えるように(例えば、各ワイヤがシングルビットの情報を運ぶ場合)構成されている(例えば、ワイヤ単位で)。プログラマブル論理回路機構は、例えば、ルックアップテーブル、レジスタ、算術論理回路などを挙げることができるプログラマブル要素を使用して、ユーザ設計の論理回路を実装する。プログラマブル相互接続及びプログラマブル論理回路機構は、プログラマブル要素がどのように構成され働くかを定義する構成データを内部構成メモリセルに読み込むことによってプログラムされ得る。
【0084】
PS1006は、SOC1000の一部として製造されるハードワイヤード回路機構として実装されている。PS1006は、それぞれがプログラムコードを実行することができる様々な異なるプロセッサタイプのいずれかとして実装されてもよく、又はそれらを含んでもよい。例えば、PS1006は、個々のプロセッサ、例えば、プログラムコードを実行することができるシングルコアとして実装されてもよい。別の例では、PS1006は、マルチコアプロセッサとして実装されてもよい。更に別の例では、PS1006として、1つ以上のコア、モジュール、コプロセッサ、インターフェース、及び/又は他のリソースを挙げることができる。PS1006は、様々な異なるタイプのアーキテクチャのいずれでも使用して実装されてもよい。PS1006を実装するのに使用され得るアーキテクチャ例としては、ARMプロセッサアーキテクチャ、x86プロセッサアーキテクチャ、GPUアーキテクチャ、モバイルプロセッサアーキテクチャ、DSPアーキテクチャ、又はコンピュータ可読命令若しくはプログラムコードを実行することができるのに適した他のアーキテクチャを挙げることができるが、これらに限るわけではない。
【0085】
NOC1008は、SOC1000におけるエンドポイント回路間でデータを共有するための相互接続ネットワークを含む。エンドポイント回路は、DPEアレイ1002、PL領域1004、PS1006に、及び/又はハードワイヤード回路ブロック1010に配置することができる。NOC1008には、専用スイッチングを備える高速データパスを含めることができる。一例では、NOC1008は、水平パスを含むか、垂直パスを含むか、又は水平パスと垂直パスの両方を含む。
図10に示した領域の配置や個数は、単に一例である。NOC1008は、選択された構成要素及び/又はサブシステムを接続するのにSOC1000内で使用可能である共通インフラストラクチャの一例である。
【0086】
NOC1008は、PL1004、PS1006へ、またハードワイヤード回路ブロック1010のうちの選択されたものに接続性を与える。NOC1008はプログラム可能である。他のプログラマブル回路とともに使用されるプログラマブルNOCの場合、NOC1008を通してルーティングされるべきネットは、SOC1000内での実装のためにユーザ回路設計が作成されるまで分からない。NOC1008は、NOC1008内のスイッチ及びインターフェースなどの要素が、スイッチからスイッチへ、またNOCインターフェース間でデータを渡すように構成され、働くかを定義する構成データを内部構成レジスタに読み込むことによってプログラムされ得る。
【0087】
NOC1008は、SOC1000の一部として製造され、物理的に改造可能ではないが、ユーザ回路設計の様々なマスタ回路と様々なスレーブ回路との間に接続性を確立するようにプログラムされ得る。NOC1008には、例えば、ユーザ指定のマスタ回路とスレーブ回路とを接続するパケット交換ネットワークを確立することができる2以上のプログラマブルスイッチを含んでもよい。この点では、NOC1008は、様々な回路設計に適合することができ、それぞれの回路設計により、NOC1008によって結合され得るSOC1000における様々な場所に実装されたマスタ回路とスレーブ回路との組み合わせが異なる。NOC1008は、ユーザ回路設計のマスタ回路とスレーブ回路との間で、データ、例えば、アプリケーションデータ及び/又は構成データをルーティングするようにプログラムされ得る。例えば、NOC1008は、PL1004内に実装された様々なユーザ指定回路機構を、PS1006、及び/若しくはDPEアレイ1002と、様々なハードワイヤード回路ブロックと、並びに/又はSOC1000の外部の様々な回路及び/若しくはシステムと結合するようにプログラムされてもよい。
【0088】
ハードワイヤード回路ブロック1010には、入力/出力(I/O)ブロック、並びに/又はSOC1000の外部の回路及び/又はシステムへの信号を送受信するためのトランシーバ、メモリコントローラなどを含んでもよい。様々なl/Oブロックの例としては、シングルエンドで擬似差動のI/O、及び高速差動クロックトランシーバを挙げることができる。更に、ハードワイヤード回路ブロック1010は、特定の機能を果たすように実装され得る。ハードワイヤード回路ブロック1010の例としては、暗号エンジン、デジタル-アナログ変換器、アナログ-デジタル変換器などが挙げられるが、これらに限るわけではない。SOC1000内のハードワイヤード回路ブロック1010は、本明細書では時々特定用途向けブロックと称され得ることがある。
【0089】
図10の例では、PL1004は、2つの別個の領域に示されている。別の例では、PL1004は、プログラマブル回路機構の統合領域として実装されてもよい。更に別の例では、PL1004は、プログラマブル回路機構の3つ以上の異なる領域として実装されてもよい。PL1004の特定の組織化は、これに限ることを意図するものではない。この点で、SOC1000は、1つ以上のPL領域1004、PS1006、及びNOC1008を含む。場合によっては、DPEアレイ1002が含まれてもよい。
【0090】
他の実装形態例では、SOC1000は、ICの様々な領域に位置する2つ以上のDPEアレイ1002を含んでもよい。更に他の例では、SOC1000は、マルチダイICとして実装されてもよい。その場合、サブシステムがそれぞれ異なるダイ上に実装されてもよい。様々なダイは、ICがマルチチップモジュール(Multi-Chip Module、MCM)などとして実装されている積層ダイアーキテクチャを使用して、インターポーザ上にダイを並べて積層するなど、様々な使用可能なマルチダイIC技術のいずれを使用しても連通可能につなげられ得る。マルチダイICの例では、各ダイには、単一のサブシステム、2つ以上のサブシステム、サブシステム及び別の部分的なサブシステム、又はそれらのいかなる組み合わせを含んでもよいことを理解されたい。
【0091】
プログラマブル集積回路(IC)は、プログラマブル論理回路を含むタイプのデバイスのことである。プログラマブルデバイスすなわちICの一例は、フィールドプログラマブルゲートアレイ(FPGA)である。FPGAは、プログラマブル回路ブロックを含むことを特徴とする。プログラマブル回路ブロックの例としては、入力/出力ブロック(IOB)、構成可能論理ブロック(CLB)、専用ランダムアクセスメモリブロック(BRAM)、デジタル信号処理ブロック(DSP)、プロセッサ、クロックマネージャ、及び遅延ロックループ(DLL)が挙げられるが、これらに限るわけではない。現代のプログラマブルICは、1つ以上の他のサブシステムと組み合わせてプログラマブル論理可回路を含むように進化してきた。例えば、プログラマブルICによっては、プログラマブル論理回路とハードワイヤードプロセッサの両方を含むシステム-オン-チップすなわち「SoC」に進化している。他の種類のプログラマブルICとしては、追加のサブシステム及び/又は様々なサブシステムが挙げられる。
【0092】
様々な実施形態が再構成可能プログラマブル論理ブロック(例えば、FPGA)を使用して実装され得るが、他の実施形態は、固定インスタンス化(例えば、ASIC)において実装されても、プログラマブル論理回路と単一の集積回路(例えば、SOC)において組み合わせられてもよい。ASIC実装形態における専用ハードブロック回路機構は、集積回路においてインスタンス化されると再構成可能ではなくなることがあるが、例えば、実装形態によっては、ASIC実装形態が、例えば電力消費及び/又はダイ面積の面で最小限のプラットフォームを提供することができる。
【0093】
様々な実施形態を、図を参照して説明してきたが、他の実施形態も考えられる。例えば、様々な実施形態において、データストアは、BRAMに格納され、フリップフロップ(flip flop、FF)、個々の論理ゲートなどのルックアップテーブルユニット(lookup table unit、LUT)、及びDSPの何らかの組み合わせを使用して実装された、FPGAにおけるルックアップテーブルであってもよい。実施形態によっては、乗算回路及び合算回路は、DSPにおいて実装されてもよい。実施形態によっては、乗算回路及び合算回路は、LUTにマッピングされてもよい。
【0094】
表1は、N=16ビット、I=1ビット、Lf=20ビットの場合の実装形態において、FF、LUT、BRAM36(36キロバイト(kB)のBRAM単位)、及びDSPが設けられた代表的なFPGAにおいて必要とされるリソースのシミュレーションを示し、ルックアップテーブルにおける各エントリのビット数(L)は26であり、Bの値は範囲[10、14]にわたって2ビット増分で変わる。見て分かる通り、リソースの組み合わせを変えると、実装形態において望ましいリソース活用をもたらすことができる。例えば、B=10の場合、1つのDSPと36kBのBRAMユニットの半分を使用すれば圧縮計算回路を完全に実装することができ、FFやLUTがなくても済む。B=12の場合、例えば、DSPを使用せず、48個のFF、63個のLUT、及び1個のBRAMユニットを使用すると、圧縮計算回路を有利に実装することができる。B=14の場合、例えば、使用するFF及びLUTの個数を減らして(それぞれ36と33)、使用されるBRAMユニットの個数を4個に増やし、依然としてDSPを使用せずに、圧縮計算回路を有利に実装することができる。これらの実装形態は、これらに限るわけではなく例示として提供するもので、様々なアーキテクチャ構成にわたる圧縮計算方法の柔軟性を証明するのに役立つ。したがって、例えば、ハードウェアリソース、計算精度、及び計算速度の望ましい最適化をもたらすために、多様なアーキテクチャ構成にわたって自然指数の計算を有利に実装することができる。
【0095】
【0096】
表2は、N=28ビットであり、Bが範囲[14、18]にわたって2ビット増分で変わる、Xの拡張入力範囲の場合で、表1に関して説明したものと同様のリソースのシミュレーションを示す。B=14である実装形態例では、4つのBRAMユニットとともに、単一のDSPが活用される。比較すると、B=16と18の場合、単一のDSPが、BRAMユニット並びにFF及びLUTと組み合わせて活用される。これらの例示用の実装形態は、圧縮計算方法を使用して自然指数を計算することによって有利にもたらされ得るリソース組み合わせにおける柔軟性の更なる例を提供するものである。
【0097】
【0098】
様々な実施形態において、本明細書で説明している圧縮自然指数計算方法及び回路では、テイラー級数、線形補間、又はディープルックアップテーブルを採用する実装形態を有利に置き換えることができる。このような実装形態は、例えば、いくつかのDSP及びメモリユニットを使い果たす可能性がある。いくつかの実施形態は、例えば、ルックアップテーブルサイズの少なくとも半分の圧縮を実現することができ、乗算器及び合算器を実装する1つのDSPに必要とされる、又は例えば、LUT及びFFを使用することによってDSPの必要性をなくするのに必要とされるDSPを減らすことができる。
【0099】
様々な電子ハードウェアを含む回路機構を使用して様々な例を実装することができる。以下に限るのではなく例として、ハードウェアとしては、トランジスタ、抵抗器、キャパシタ、スイッチ、集積回路、及び/又は他のデバイスを挙げることができる。様々な例において、回路としては、様々な集積回路(例えば、FPGA、ASIC)を含むシリコン基板上に製造されたアナログ論理回路及び/又はデジタル論理回路、個別構成要素、トレース及び/又はメモリ回路を挙げることができる。実施形態によっては、回路は、プロセッサによって実行される予めプログラムされた命令及び/又はソフトウェアの実行を伴う場合がある。例えば、様々なシステムは、ハードウェアとソフトウェアの両方を含んでもよい。
【0100】
実施形態のいくつかの態様は、コンピュータシステムとして実装され得る。例えば、様々な実装形態は、デジタル回路機構及び/又はアナログ回路機構、コンピュータハードウェア、ファームウェア、ソフトウェア、又はそれらの組み合わせを含み得る。固定ハードウェアプロセッサによる実行のために、情報担体において、例えば、機械可読記憶装置において有形に具現化されるコンピュータプログラム製品において装置要素を実装することができ、入力データに対して働き、出力を生成することによって、様々な実施形態の機能を果たす命令プログラムをプログラマブルプロセッサが実行することによって、方法を行うことができる。いくつかの実施形態は、データストア、少なくとも1つの入力、及び/又は少なくとも1つの出力との間でデータ及び命令を受信及び送信するように結合された少なくとも1つのプロセッサを含むプログラマブルシステム上で実行可能である1つ以上のコンピュータプログラムにおいて有利に実装され得る。データストアは、例えば、メモリ空間において1つ以上のレジスタ若しくはメモリ位置を含み得る。コンピュータプログラムは、特定のアクティビティを実施するように、又は特定の結果をもたらすように、コンピュータにおいて直接又は間接に使用され得る命令セットである。コンピュータプログラムは、コンパイラ型言語又はインタープリタ型言語を含むいかなる形態のプログラミング言語でも書き込むことができ、スタンドアロンプログラムとして、又はモジュールとして、構成要素、サブルーチン、若しくはコンピューティング環境での使用に適した他のユニットを含む、いかなる形態でも展開することができる。
【0101】
様々な実施形態において、コンピュータシステムは、非一時的メモリを含み得る。メモリは、プロセッサ実行可能プログラム命令を含む、データ及びコンピュータ可読命令を記憶するように構成され得る、1つ以上のプロセッサに接続されてもよい。データ及びコンピュータ可読命令は、1つ以上のプロセッサがアクセスできるものであってもよい。プロセッサ実行可能プログラム命令は、1つ以上のプロセッサによって実行されると、1つ以上のプロセッサに様々な演算を行わせることができる。
【0102】
以下の非限定的な例において、上で開示した技法のいくつかを表すことができる。
実施例1.自然指数コンピュテーション回路であって
固定小数点ワードを受信し、固定小数点ワードを第1のワードと第2のワードとに分けるように構成されたスプリッタ回路と、
第1のワードによって定義されたアドレスにあるデータストアから、所定の予め算出した双曲線和を取り出すように構成された取り出し回路と、
双曲線和と第2のワードとを掛け合わせ、かつ掛け合わせ双曲線和を出力するように構成された乗算回路と、
双曲線和を受信し、双曲線和を第1の係数でスケーリングするように構成された第1のスケーリング回路と、
スケーリング済み双曲線和と、掛け合わせ双曲線和とを合算し、スケーリング済みの第2の和を生成するように構成された加算回路と、
スケーリング済みの第2の和を第2の係数でスケーリングし、eXの近似値を出力するように構成された第2のスケーリング回路と、を備える、自然指数コンピュテーション回路。
【0103】
実施例2.乗算回路及び加算回路が、少なくとも1つのデジタル信号プロセッサ(DSP)において少なくとも部分的に実装されている、実施例1に記載の回路。
【0104】
実施例3.乗算回路、加算回路、及びデータストアのうちの少なくとも1つが、論理ゲートとして少なくとも部分的に実装されている、実施例1に記載の回路。
【0105】
実施例4.データストアがルックアップテーブルである、実施例1に記載の回路。
実施例5.ルックアップテーブルが、固定小数点フォーマットのエントリを記憶するように構成されている、実施例4に記載の回路。
【0106】
実施例6.ルックアップテーブルの深さが2Bであり、ここで、Bは第1のワードにおける総ビット数である、実施例5に記載の回路。
【0107】
実施例7.データストアが、浮動小数点フォーマットのエントリを記憶するように構成されている、実施例1に記載の回路。
【0108】
実施例8.
第1の係数が2B-Iであり、ここで、Bは第1のワードの総ビット数であり、Iは第1のワードにおける整数ビット総数であり、
第1のスケーリング回路が、双曲線和をB-Iビットだけ右ゼロパディングする、実施例1に記載の回路。
【0109】
実施例9.
第2の係数が1/(2B-I)であり、ここで、Bはビットの総数であり、Iは第1のワードにおける整数ビット総数であり、
第2のスケーリング回路が、第2の和をB-Iビットだけビット単位で右シフトする、実施例1に記載の回路。
【0110】
実施例10.更に、浮動小数点から固定小数点への変換回路をスプリッタ回路の前に更に備え、
変換回路が、浮動小数点入力を受信し、浮動小数点入力をスプリッタ回路によって受信される固定小数点ワードに変換するように構成されている、実施例1に記載の回路。
【0111】
実施例11.更に、固定小数点から浮動小数点への変換回路を第2のスケーリング回路の後に備え、
変換回路が、固定小数点フォーマットにおいて固定小数点Xの出力近似値を受信し、出力近似値を浮動小数点フォーマットにおいて出力するように構成されている、実施例1に記載の回路。
【0112】
実施例12.第2のワードが、1未満の数値を表す、実施例1に記載の回路。
実施例13.
固定小数点ワードが、Nビット長であり、
第1のワードが、固定小数点ワードの最初のBビットであり、
第2のワードが、固定小数点ワードの最後のAビットであり、
N=A+Bであり、
第1のワードには固定小数点ワードのバイナリポイントが含まれる、実施例1に記載の回路。
【0113】
実施例14.eXの近似値が所定の誤差限界内で正確であるように、Bが選ばれる、実施例12に記載の回路。
【0114】
実施例15.デジタル回路において指数を効率良く計算する方法であって、
Nビット長であるデジタル固定小数点ワードXを受信することと、
Xの最初のBビットを第1のワードWbに、Xの残りのAビットを第2のワードWaに分けることであって、第1のワードがI整数ビット及びB-I小数ビットを含み、N=A+Bであり、X=Wb+Waである、分けることと、
Wbによって定義されたアドレスにあるデータストアから、sinh(Wb)+cosh(Wb)を表す所定の予め算出した双曲線和を取り出すことと、
双曲線和とWaとを掛け合わせ、[sinh(Wb)+cosh(Wb)]×[Wa]を表す掛け合わせ双曲線和を生成することと、
双曲線和をスケーリング係数Kでスケーリングし、sinh(Wb)+cosh(Wb)]×Kを表すスケーリング済み双曲線和をもたらすことと、
スケーリング済み双曲線和と掛け合わせ双曲線和とを加算して、[sinh(b)+cosh(b)]×[Wa+K]を表すスケーリング済みの第2の和を生成することと、
スケーリング済みの第2の和を1/Kでスケーリングすることにより、eXの近似値として[sinh(Wb)+cosh(Wb)]×[Wa/K+1]の表現を生成することと、を含む、方法。
【0115】
実施例16.乗算するステップ及び加算するステップが、少なくとも1つのデジタル信号プロセッサ(DSP)において少なくとも部分的に実施されている、実施例13に記載の方法。
【0116】
実施例17.
データストアが、固定小数点フォーマットにおいてエントリを記憶するように構成されたルックアップテーブルであり、
ルックアップテーブルの深さが2Bである、実施例13に記載の方法。
【0117】
実施例18.
Wbが、Xのバイナリポイントを含み、
Kが2B-Iであり、
双曲線和をKによってスケーリングすることが、双曲線和をB-Iビットだけ右ゼロパディングすることを含み、
スケーリング済みの第2の和を1/Kでスケーリングすることが、第2の和をB-Iビットだけビット単位で右シフトすることを含む、実施例13に記載の方法。
【0118】
実施例19.eXの近似値が所定の誤差限界内で正確であるように、Bが選ばれる、実施例13に記載の方法。
【0119】
実施例20.プロセッサによって実行されると、自然指数を計算する演算を起こす命令プログラムを提供する少なくとも1つの非一時的コンピュータ可読媒体であって、演算が、
Nビット長であるデジタル固定小数点ワードXを受信することと、
Xの最初のBビットを第1のワードWbに、Xの残りのAビットを第2のワードWaに分けることであって、第1のワードがI整数ビット及びB-I小数ビットを含み、N=A+Bであり、X=Wb+Waである、分けることと、
Wbによって定義されたアドレスにあるデータストアから、sinh(Wb)+cosh(Wb)を表す所定の予め算出した双曲線和を取り出すことと、
双曲線和とWaとを掛け合わせ、[sinh(Wb)+cosh(Wb)]×[Wa]を表す掛け合わせ双曲線和を生成することと、
双曲線和をスケーリング係数Kでスケーリングし、[sinh(Wb)+cosh(Wb)]×Kを表すスケーリング済み双曲線和を生成することと、
スケーリング済み双曲線和に掛け合わせ曲線和を加算して、[sinh(b)+cosh(b)]×[Wa+K]を表すスケーリング済みの第2の和を生成することと、
スケーリング済みの第2の和を1/Kでスケーリングすることにより、eXの近似値として[sinh(Wb)+cosh(Wb)]×[Wa/K+1]の表現を生成することと、を含む、少なくとも1つの非一時的コンピュータ可読媒体。
【0120】
いくつかの実装形態について説明してきた。それでもなお、様々な修正がなされ得ることが分かるであろう。例えば、開示の技法のステップが異なる順序で行われた場合、又は開示のシステムの構成要素が異なる様式で組み合わされた場合、又は構成要素が他の構成要素で補われた場合、有利な結果が得られる可能性がある。したがって、それ以下の実装形態が、以下の特許請求の範囲内にある。
【国際調査報告】