(57)【要約】【課題】キャッシュメモリを介して、アクセスされるメモリは、アクセスされる範囲が広いとミスヒットを頻繁に生じる。本発明は、特にオーディオ信号処理で頻繁にアクセスされるメモリのアクセス範囲を狭くできるようなデータの配置をもったメモリを提供する。さらに、そのようなメモリを備えたプロセッサを提供する。【解決手段】Ｎ桁の２進数ｘの下位側のビットを上位側に配置することによって得られるＮ桁の２進数ｙをアドレスとする位置に、前記ｘに対応するデータを格納する。【選択図】図１
2006079310.tif 000002
【特許請求の範囲】
【請求項１】
Ｎ桁の２進数であるところの値ｘに対し、関数Ｆ（ｘ）の値を格納するメモリであって、前記値ｘの下位側のビットを上位側に配置することによって得られるＮ桁の２進数ｙをアドレスとする位置に、前記値ｘに対応する関数Ｆ（ｘ）の値が格納されていることを特徴とするメモリ。
【請求項２】
前記値ｘは、Ｎ＋１桁の２進数であるところの値ｚを正規化して得られる値ｚ’から最上位ビットを削除して得られるＮ桁の２進数であり、
前記関数Ｆ（ｘ）は、ｘ＋（１＜＜Ｎ）の値に対し所定の処理を行うことを特徴とする請求項１記載のメモリ。
【請求項３】
前記関数Ｆ（ｘ）は、ｘ＋（１＜＜Ｎ）のａ乗を与える関数であることを特徴とする請求項１または請求項２に記載のメモリ。
【請求項４】
θを０以上π未満の変域を持つ位相角とした時、前記値ｘは前記θを表現する値であり、（１＜＜Ｎ）＊θ／πの値をＮ桁の２進数で表現した値であることを特徴とする請求項１記載のメモリ。
【請求項５】
前記関数Ｆ（ｘ）は、前記値ｘが表す前記θに対する三角関数を与える関数であることを特徴とする請求項４記載のメモリ。
【請求項６】
前記関数Ｆ（ｘ）は、前記値ｘが表す前記θに対する複素数ｅ＾（ｊθ）（ｊは虚数単位）を与える関数であることを特徴とする請求項４記載のメモリ。
【請求項７】
前記２進数ｙは、前記値ｘのビット位置逆順処理によって得られる値であることを特徴とする請求項１から請求項６の何れかに記載のメモリ。
【請求項８】
キャッシュメモリを更に備え、前記キャッシュメモリを介してデータにアクセスすることを特徴とする請求項１から請求項７の何れかに記載のメモリ。
【請求項９】
前記請求項１から請求項８の何れかに記載のメモリを備えたプロセッサであって、入力値ｘの下位側のビットを上位側に配置することによって得られるＮ桁２進数ｙを生成するビット入れ替え手段と、前記Ｎ桁２進数ｙをアドレスとして前記メモリからデータを取り出すデータ取り出し手段と、取り出されたデータを用いて所定の演算を行う演算手段とを有することを特徴とするプロセッサ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、オーディオのデジタル信号処理を行うために必要なデータを格納する為のメモリに関する。特にキャッシュメモリを介して当該データにアクセスする際に、アクセス範囲ができるだけ狭くなるようにデータが配置されているメモリに関する。また、そのようなメモリを備えたプロセッサに関する。
【背景技術】
【０００２】
近年ＭＰＥＧオーディオ方式の符号化、復号化処理において、大規模なデータを用いる演算が行われている。例えば、ＭＰＥＧオーディオＡＡＣ方式では、入力値ｘに対して、ｘ＾ａ（ｘのａ乗：ａは定数）の演算が必要であり、この処理を高速に行う為に、テーブルメモリが用いられる。すなわち、入力値ｘに対して、ｘをアドレスとした領域にｘ＾ａの値が格納されたテーブルメモリから値を取り出すことで所望の結果を得るということである。しかしながらこのような方法ではあまりにも大規模なメモリが必要であるので、メモリサイズを削減する為に工夫がなされている（例えば、特許文献１参照）。以下図３、図４、図５、図７を用いて従来の技術を説明する。下記において、Ｎは１０である。
【０００３】
まず、図３は、Ｎ＋１桁の２進数であるところの入力値ｚを表している。入力値ｚは、Ｎ＋１桁の２進数の全変域を取りうるが、図３では、一例として、入力値ｚは４桁の値であるとする。つまり、上位側のビットは「０」であり（白の四角で表現）下から４桁目以降に値がある（色のついた四角で表現）。ここで、下から４桁目は、値が「１」であることに注意されたい。
【０００４】
次に図４は、テーブルメモリを引く前準備の過程を示しており、入力値ｚを正規化している様子を示している。すなわち、入力値ｚの大きさに応じて、ｐ桁シフトアップすることであり、入力値ｚの最も上位にある「１」、この場合下から４ビット目の「１」にあたるが、それが最上位ビットに来るようにシフトアップする。
【０００５】
次に図５は、実際にテーブルメモリを引く為のアドレスを確定する過程を示している。すなわち、図４で生成されたビットパタンの中で、最上位ビットは値が必ず「１」であるので、削除しても情報は欠落しないので、テーブルメモリを引く為のアドレスとして削除している。
【０００６】
このようにして生成されたビットパタンをアドレスとして、テーブルメモリを引くが、当該テーブルメモリは、図７に示すようなデータが格納されている。すなわち、アドレスがｔである位置には、（（１＜＜Ｎ）＋ｔ）＾ａが格納されている。ここで、（１＜＜Ｎ）をｔに加えている理由は、アドレス値ｔは、前述のように、最上位ビットが削除されているので、それをおぎなっている訳である。このようなテーブルの持ち方をすることで、アドレスが１ビット減るので、テーブルメモリのサイズは１／２に削減できる。
【０００７】
さてここで、上記のようにテーブルメモリから取り出された値は、そもそもの入力値ｚを、２＾ｐした値に対してａ乗の処理を施した値であるので、以下の補正が必要である。すなわち、上記のようにテーブルメモリから取り出された値をＴとした時、Ｔ＊（２＾（‐ｐａ））の補正をした結果が、求める値となる。
【特許文献１】米国特許第６３０４８９０号明細書
【発明の開示】
【発明が解決しようとする課題】
【０００８】
しかしながら、上記のような方法では、テーブルメモリにアクセスする際のアドレス値の上位ビット側に０でない値が配置される確率が高くなるので、当該テーブルメモリの全領域に渡って同じような頻度でアクセスが行われることになり、当該テーブルメモリがキャッシュメモリを介してアクセスされるような場合、キャッシュのミスヒットが頻繁に発生するという課題があった。
【０００９】
上記と同じような課題が、三角関数を用いた信号処理においても生じる。例えばＦＦＴの処理では、位相角θ＝ｉ＊π／Ａ（Ａは２の冪乗数、ｉは０以上Ａ未満の整数）において、Ａが比較的小さな値である時のθに対する三角関数値（複素単位円ｅ＾（ｊθ））が高い頻度で用いられる。例えば、位相角が、０、π／２、π／４、２π／４、３π／４、のような場合の三角関数値が高い頻度で用いられる。ここでもしこのような三角関数値を位相角の小さい方から順番に（或いは大きい方から順番に）テーブルメモリに格納していたら、飛び飛びの領域を広くアクセスすることになるので、当該テーブルメモリがキャッシュメモリを介してアクセスされるような場合、キャッシュのミスヒットが頻繁に発生するという課題があった。
【００１０】
本発明は、このような従来の問題点に鑑みてなされたものであって、キャッシュメモリを介してアクセスされるメモリのアクセス範囲ができるだけ狭くなるようにデータが配置されているメモリ、或いは当該メモリを備えたプロセッサを提供することを目的とするものである。
【課題を解決するための手段】
【００１１】
上記の課題を解決するため、本願の請求項１記載の発明は、Ｎ桁の２進数であるところの値ｘに対し、関数Ｆ（ｘ）の値を格納するメモリであって、前記値ｘの下位側のビットを上位側に配置することによって得られるＮ桁の２進数ｙをアドレスとする位置に、前記値ｘに対応する関数Ｆ（ｘ）の値が格納されていることを特徴とするものである。
【００１２】
本願の請求項２記載の発明は、請求項１記載のメモリであって、前記値ｘは、Ｎ＋１桁の２進数であるところの値ｚを正規化して得られる値ｚ’から最上位ビットを削除して得られるＮ桁の２進数であり、前記関数Ｆ（ｘ）は、ｘ＋（１＜＜Ｎ）の値に対し所定の処理を行うことを特徴とするものである。
【００１３】
本願の請求項３記載の発明は、請求項１または請求項２記載のメモリであって、前記関数Ｆ（ｘ）は、ｘ＋（１＜＜Ｎ）のａ乗を与える関数であることを特徴とするものである。
【００１４】
本願の請求項４記載の発明は、請求項１記載のメモリであって、θを０以上π未満の変域を持つ位相角とした時、前記値ｘは前記θを表現する値であり、（１＜＜Ｎ）＊θ／πの値をＮ桁の２進数で表現した値であることを特徴とするものである。
【００１５】
本願の請求項５記載の発明は、請求項４記載のメモリであって、前記関数Ｆ（ｘ）は、前記値ｘが表す前記θに対する三角関数を与える関数であることを特徴とするものである。
【００１６】
本願の請求項６記載の発明は、請求項４記載のメモリであって、前記関数Ｆ（ｘ）は、前記値ｘが表す前記θに対する複素数ｅ＾（ｊθ）（ｊは虚数単位）を与える関数であることを特徴とするものである。
【００１７】
本願の請求項７記載の発明は、請求項１から請求項６の何れかに記載のメモリであって、前記２進数ｙは、前記値ｘのビット位置逆順処理によって得られる値であることを特徴とするものである。
【００１８】
本願の請求項８記載の発明は、請求項１から請求項７の何れかに記載のメモリであって、キャッシュメモリを更に備え、前記キャッシュメモリを介してデータにアクセスすることを特徴とするものである。
【００１９】
本願の請求項９記載の発明は、前記請求項１から請求項８の何れかに記載のメモリを備えたプロセッサであって、入力値ｘの下位側のビットを上位側に配置することによって得られるＮ桁２進数ｙを生成するビット入れ替え手段と、前記Ｎ桁２進数ｙをアドレスとして前記メモリからデータを取り出すデータ取り出し手段と、取り出されたデータを用いて所定の演算を行う演算手段とを有することを特徴とするものである。
【発明の効果】
【００２０】
請求項１の発明によれば、ｘの下位側のビットが所定の値になる確率が高い場合、関数Ｆ（ｘ）の値を格納するメモリのアクセス頻度の高い領域を狭めることができることとなる。
【００２１】
請求項２の発明によれば、関数Ｆ（ｘ）の値を格納するメモリのサイズを１／２にすることができ、しかも、アクセス頻度の高い領域を狭めることができることとなる。
【００２２】
請求項３の発明によれば、関数Ｆ（ｘ）が、冪乗を与える関数である場合に、関数Ｆ（ｘ）の値を格納するメモリのサイズを１／２にすることができ、しかも、アクセス頻度の高い領域を狭めることができることとなる。
【００２３】
請求項４の発明によれば、Ｆ（ｘ）が、位相角を扱う関数である場合に、関数Ｆ（ｘ）の値を格納するメモリのアクセス頻度の高い領域を狭めることができることとなる。
【００２４】
請求項５の発明によれば、Ｆ（ｘ）が、三角関数を扱う関数である場合に、関数Ｆ（ｘ）の値を格納するメモリのアクセス頻度の高い領域を狭めることができることとなる。
【００２５】
請求項６の発明によれば、Ｆ（ｘ）が、複素数ｅ＾（ｊθ）（ｊは虚数単位）を扱う関数である場合に、関数Ｆ（ｘ）の値を格納するメモリのアクセス頻度の高い領域を狭めることができることとなる。
【００２６】
請求項７の発明によれば、単純なビット位置逆順処理によって、関数Ｆ（ｘ）の値を格納するメモリのアクセス頻度の高い領域を狭めることができることとなる。
【００２７】
請求項８の発明によれば、キャッシュメモリのミスヒットの確率が減ることとなる。
【００２８】
請求項９の発明によれば、所定に信号処理を行うプロセッサにおいて、関数Ｆ（ｘ）の値を格納するメモリのアクセス頻度の高い領域を狭めることができることとなる。
【発明を実施するための最良の形態】
【００２９】
（実施の形態１）
以下本発明の実施の形態１におけるメモリ及び当該メモリを用いたプロセッサについて図面を参照しながら説明する。
【００３０】
図１は本実施の形態１におけるプロセッサの構成を示す図である。図１において、１００は、Ｎ桁の２進数であるところの値ｘに対し、関数Ｆ（ｘ）の値を格納するメモリ、１０１は、Ｎ＋１桁の２進数で表現できる入力値ｚを、当該入力値ｚの大きさに応じて正規化する正規化手段、１０２は、前記正規化手段１０１によって正規化された値から最上位ビットを削除して、下位のＮビットを切り出すことによって、Ｎ桁で表現できる値ｘを生成するビット切り出し手段、１０３は、前記Ｎ桁で表現できる値ｘの下位側のビットを上位側に配置することによってえられるＮ桁２進数ｙを生成するビット入れ替え手段、１０４は、前記Ｎ桁２進数ｙをアドレスとしてメモリからデータを取り出すデータ取り出し手段、１０５は、前記取り出されたデータを用いて所定の演算を行う演算手段である。
【００３１】
ここで、前記入力値ｚは、ＭＰＥＧ規格ＡＡＣ方式による量子化値であり、本実施の形態１におけるプロセッサは、前記入力値ｚをａ乗する処理を行うプロセッサである。
【００３２】
図２は、本実施の形態１におけるメモリの内容を示す図である。
【００３３】
図２に示されるメモリは前記メモリ１００に対応し、Ｎ桁の２進数であるところの前記値ｘに対し、前記関数Ｆ（ｘ）の値を格納するメモリであって、前記値ｘの下位側のビットを上位側に配置することによって得られるＮ桁２進数ｙをアドレスとする位置に、前記値ｘに対応する前記関数Ｆ（ｘ）の値が格納されている。本実施の形態では、前記関数Ｆ（ｘ）は、ｘに（１＜＜Ｎ）を足した値をａ乗する関数であるものとする。
【００３４】
本実施の形態では１では、Ｎは１０とするが、それ以外の値であってもよいことは言うまでもない。
【００３５】
図３は、前記Ｎ＋１桁の２進数で表現できる入力値の一例を示している。図４は、前記正規化手段１０１の動作を示している。図５は、前記ビット切り出し手段１０２の動作を示している。図６は、前記ビット入れ替え手段１０３の動作を示している。
【００３６】
以上のように構成されたプロセッサの動作について以下説明する。
【００３７】
まず、図３は、Ｎ＋１桁の２進数であるところの入力値ｚを表している。これは図１における、入力値ｚと対応している。当該入力値ｚは、Ｎ＋１桁の２進数の全変域を取りうるが、図３では、一例として、入力値ｚは４桁の値であるとする。つまり、上位側のビットは「０」であり（白の四角で表現）下から４桁目以降に値がある（色のついた四角で表現）。ここで、下から４桁目は、値が「１」であることに注意されたい。
【００３８】
次に図４は、前記正規化手段１０１の動作を示しており、前記メモリ１００を引く前準備の過程を示している。すなわち、入力値ｚの大きさに応じて、ｐ桁シフトアップすることであり、入力値ｚの最も上位にある「１」、この場合下から４ビット目の「１」にあたるが、それが最上位ビットに来るようにシフトアップする。
【００３９】
次に図５は、前記ビット切り出し手段１０２の動作を示している。すなわち、図４で生成されたビットパタンに中で、最上位ビットは値が必ず「１」であるので、削除しても情報は欠落しないので、前記メモリ１００を引く為のアドレスとして削除している。
【００４０】
次に図６は、実際に前記メモリ１００を引く為のアドレスを確定する過程を示している。本実施の形態１では、前記ビット切り出し手段１０２で切り出された値に対し、前記ビット位置逆順処理によって実際に前記メモリ１００を引く為のアドレスを確定する。ここでビット位置逆順処理を行っている理由は、図６から明らかなように、上位側にビット位置にできるだけ「０」を移動させる為である。そもそも、前記ビット切り出し手段１０２で切り出された値は、前記正規化手段１０１で正規化された値なので、多くの場合、下位側のビット位置には、「０」が存在する確率が高い。なぜならば、もともとの入力値ｚは、ＡＡＣ規格の量子化値であり、その値は小さな値である場合が多いからである。従って、前記ビット入れ替え手段１０３で、ビット位置逆順処理を行うことで、上位側にビット位置に「０」が集まる確率が高くなり、結果として、前記メモリ１００に対するアクセス頻度が高い領域を狭くすることができる。
【００４１】
このようにして生成されたビットパタンをアドレスとして、前記データ取り出し手段１０４によって前記メモリ１００を引くが、当該メモリ１００には、図２に示すようなデータが格納されている。
【００４２】
すなわち、アドレスがｔである位置には、ｓをｔのビット位置逆順処理によって得られる値であるとすると、（（１＜＜Ｎ）＋ｓ）＾ａが格納されている。
【００４３】
ここで、（１＜＜Ｎ）をｔに加えている理由は、アドレス値ｔは、前述のように、最上位ビットが削除されているので、それをおぎなっている訳である。このようなデータの持ち方をすることで、アドレスが１ビット減るので、メモリのサイズは１／２に削減できる。
【００４４】
さてここで、上記のように前記メモリ１００から取り出された値は、そもそもの入力値ｚを、２＾ｐした値に対してａ乗の処理を施した値であるので、以下の補正が必要である。すなわち、上記のように前記メモリ１００から取り出された値をＴとした時、Ｔ＊（２＾（‐ｐａ））の補正をした結果が、求める値となる。
【００４５】
本実施の形態ではＮ＝１０としたが、勿論他のあたいでもよいことは言うまでもない。
【００４６】
以上のように、本実施の形態１では、前記メモリ１００を引くときのアドレスの上位側のビット位置の値が「０」になる確率が高くなるので、前記メモリ１００のアクセス頻度の高い領域は、アドレス値の小さい領域に集中することになる。それによって、前記メモリ１００が、キャッシュメモリを介してアクセスされるような構成の場合、ミスヒットの可能性がさがることとなる。
【００４７】
（実施の形態２）
以下本発明の実施の形態２におけるメモリについて図面を参照しながら説明する。
【００４８】
図８は本実施の形態２におけるメモリの内容を示す図である。図８に示されるメモリは、Ｎ桁の２進数であるところの値ｘに対応した三角関数値を格納するメモリである。前記値ｘは、変域が０以上π未満の値である位相角θを表現する値であり、（１＜＜Ｎ）＊θ／πの値をＮ桁の２進数で表現した値である。格納されている三角関数値は、前記値ｘが表現する前記θに対する三角関数値である。
【００４９】
図８では、前記値ｘの下位側のビットと上位側のビットとを入れ替える処理、すなわちビット位置逆順処理によって得られるＮ桁２進数ｙをアドレスとする位置に、前記値ｘに対応する三角関数値が格納されている。
【００５０】
上記のような位置に三角関数値を配置することによって、以下のような効果が得られる。例えばＦＦＴ等の処理では、位相角θ＝ｉ＊π／Ａ（Ａは２の冪乗数、ｉは０以上Ａ未満の整数）において、Ａが比較的小さな値である時のθに対する三角関数値或いは複素単位円（ｅ＾（ｊθ））が高い頻度で用いられる。例えば、位相角が、０、π／２、π／４、２π／４、３π／４、のような場合の三角関数値が高い頻度で用いられる。ここでもしこのような三角関数値を位相角の小さい方から順番に（或いは大きい方から順番に）メモリに格納していたら、飛び飛びの領域を広くアクセスすることになるので、当該メモリがキャッシュメモリを介してアクセスされるような場合、キャッシュのミスヒットが頻繁に発生することになる。ところが、図８のように配置しておけば、アドレス０の位置に位相角０に対する三角関数値が格納され、アドレス１の位置に位相角（π／２）に対する三角関数値が格納され、アドレス２の位置に位相角（π／４）に対する三角関数値が格納され、アドレス３の位置に位相角（３π／４）に対する三角関数値が格納され、アドレス４の位置に位相角（π／８）に対する三角関数値が格納されるなど、ＦＦＴ処理においてアクセス頻度の高い三角関数値が、アドレス値の小さい領域に集中して格納され、キャッシュのミスヒット回数を削減することができる。
【００５１】
本実施の形態２では余弦関数値を格納するメモリを示したが、正弦関数値を格納するメモリも同様に構成できることは言うまでもない。また、余弦関数値と余弦関数値のペアで構成される複素数（複素単位円（ｅ＾（ｊθ））を格納するメモリも同様に構成できる。図９にその一例を示した。すなわち、余弦関数値と正弦関数値とを隣接するビットフィールドに格納したのである。
【００５２】
本実施の形態２では、Ｎは１０としたが、それ以外の値であってもよいことは言うまでもない。
【産業上の利用可能性】
【００５３】
本発明にかかるメモリ、及びプロセッサは、オーディオのデジタル信号処理を行うために必要なデータを格納する為のメモリに関し、特にキャッシュメモリを介して当該データにアクセスする際に、アクセス範囲ができるだけ狭くなるようにデータが配置されるので、小型、省電力オーディオ機器に応用できる。
【図面の簡単な説明】
【００５４】
【図１】本実施の形態１におけるプロセッサの構成を示す図
【図２】本実施の形態１におけるメモリの内容を示す図
【図３】入力値の一例を示す図
【図４】正規化手段の動作を示す図
【図５】ビット切り出し手段の動作を示す図
【図６】ビット入れ替え手段の動作を示す図
【図７】従来の技術によるメモリの内容を示す図
【図８】本実施の形態２におけるメモリの内容（三角関数値）を示す図
【図９】本実施の形態２におけるメモリの内容（複素数ｅ＾（ｊθ）（ｊは虚数単位））を示す図
【符号の説明】
【００５５】
１００    メモリ
１０１    正規化手段
１０２    ビット切り出し手段
１０３    ビット入れ替え手段
１０４    データ取り出し手段
１０５    演算手段
【図１】
2006079310.tif 000003
【図２】
2006079310.tif 000004
【図３】
2006079310.tif 000005
【図４】
2006079310.tif 000006
【図５】
2006079310.tif 000007
【図６】
2006079310.tif 000008
【図７】
2006079310.tif 000009
【図８】
2006079310.tif 000010
【図９】
2006079310.tif 000011