JP5895229B2 - 配置決定装置、配置決定方法、データ構造、メモリ、アクセス装置及びメモリアクセス方法 - Google Patents

配置決定装置、配置決定方法、データ構造、メモリ、アクセス装置及びメモリアクセス方法 Download PDF

Info

Publication number
JP5895229B2
JP5895229B2 JP2013519363A JP2013519363A JP5895229B2 JP 5895229 B2 JP5895229 B2 JP 5895229B2 JP 2013519363 A JP2013519363 A JP 2013519363A JP 2013519363 A JP2013519363 A JP 2013519363A JP 5895229 B2 JP5895229 B2 JP 5895229B2
Authority
JP
Japan
Prior art keywords
data
bits
compressed
memory
bit
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.)
Active
Application number
JP2013519363A
Other languages
English (en)
Other versions
JPWO2012169124A1 (ja
Inventor
晋也 松山
晋也 松山
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.)
Panasonic Intellectual Property Management Co Ltd
Original Assignee
Panasonic Intellectual Property Management Co Ltd
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 Panasonic Intellectual Property Management Co Ltd filed Critical Panasonic Intellectual Property Management Co Ltd
Priority to JP2013519363A priority Critical patent/JP5895229B2/ja
Publication of JPWO2012169124A1 publication Critical patent/JPWO2012169124A1/ja
Application granted granted Critical
Publication of JP5895229B2 publication Critical patent/JP5895229B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1605Handling requests for interconnection or transfer for access to memory bus based on arbitration
    • G06F13/161Handling requests for interconnection or transfer for access to memory bus based on arbitration with latency improvement
    • G06F13/1626Handling requests for interconnection or transfer for access to memory bus based on arbitration with latency improvement by reordering requests
    • G06F13/1631Handling requests for interconnection or transfer for access to memory bus based on arbitration with latency improvement by reordering requests through address comparison
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/04Addressing variable-length words or parts of words
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/40Specific encoding of data in memory or cache
    • G06F2212/401Compressed 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/3017Runtime instruction translation, e.g. macros
    • G06F9/30178Runtime instruction translation, e.g. macros of compressed or encrypted instructions
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
    • H03M7/30Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
    • H03M7/40Conversion to or from variable length codes, e.g. Shannon-Fano code, Huffman code, Morse code
    • H03M7/4031Fixed length to variable length coding
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
    • H03M7/30Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
    • H03M7/60General implementation details not specific to a particular type of compression
    • H03M7/6058Saving memory space in the encoder or decoder

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)
  • Stored Programmes (AREA)

Description

本発明は、プロセッサによるメモリアクセス技術に関する。
複数のデータそれぞれを基に圧縮した複数の圧縮データが配置されたROM等のメモリから、プロセッサが所望する任意の非圧縮データに対応する圧縮データを読み出す際の技術として、例えば特許文献1の技術が知られている。
特許文献1の技術は、プロセッサが所望するプログラムコードを圧縮した可変長の圧縮プログラムコードを、アドレス変換テーブルを用いて読み出すものである。
このアドレス変換テーブルには、プロセッサが各プログラムコードを読み出す際に用いる各アドレス値と、各プログラムコードに対応する各圧縮プログラムコードが配置されているメモリ上の位置を示すアドレス値とが対応付けて登録されている。
即ち、特許文献1の技術は、プロセッサから取得した所望のプログラムコードを読み出すためのアドレス値を、このアドレス変換テーブルを用いて変換し、変換後のアドレス値が示すメモリ上の位置から、該当の圧縮プログラムコードを読み出すというものである。
特開2007−234048号公報
しかしながら、特許文献1の技術では、プロセッサが所望するプログラムコードに対応する圧縮プログラムコードをメモリから読み出すために、上記アドレス変換テーブルを参照する必要がある。従って、特許文献1の技術では、このアドレス変換テーブルを記憶するためのメモリ領域を確保しなければならない。
そこで、本発明は、アドレス変換テーブルを用いることなく、プロセッサが所望するデータに対応する圧縮データを、メモリから読み出せるようにするための技術を提供することを目的とする。
上記課題を解決するために、本発明に係る配置決定装置は、データブロックを構成するM個のNビットデータそれぞれを基に圧縮したM個のNビット未満の圧縮データについてのメモリ配置を決定する配置決定装置であって、M個の圧縮データのうち、データ長がXビット(X<N)以下である一般圧縮データそれぞれについては、当該一般圧縮データ全体と、少なくとも当該一般圧縮データのデータ長がXビット以下であることを示すフラグとからなるLビット(X<L<N)以下の第1データを、当該一般圧縮データの基となったNビットデータの前記データブロック内アドレス値に第1演算を施した結果値が示すメモリ位置に配置するよう決定し、M個の圧縮データのうち、データ長がXビットより大きい特定圧縮データそれぞれについては、当該特定圧縮データのうちのXビット分と、少なくとも当該特定圧縮データのデータ長がXビットより大きいことを示すフラグとからなるLビットの第1データを、当該特定圧縮データの基となったNビットデータの前記データブロック内アドレス値に第1演算を施した結果値が示すメモリ位置に配置するよう決定する第1決定手段と、前記特定圧縮データそれぞれについて、当該特定圧縮データから前記第1データに含まれるXビットを除いた部分の一部又は全体を含む第2データを、当該特定圧縮データの基となったNビットデータの前記データブロック内アドレス値に前記第1演算とは異なる第2演算を施した結果値が示すメモリ位置に配置するよう決定する第2決定手段とを備え、前記第2演算は、M個のNビットデータそれぞれの前記データブロック内アドレス値のうち、K個(K≦M)を1組とした各組について、同じ組内のいずれのアドレス値に当該第2演算を施しても同一の結果値が生じ、かつ他のいずれの組内の各アドレス値に当該第2演算を施して生じた結果値とも異なる結果値が生じる演算であることを特徴とする。
上記構成を備える本発明に係る配置決定装置によれば、この配置決定装置により決定された配置で各圧縮データが配置されているメモリから、プロセッサが所望するNビットデータに対応する圧縮データを、アドレス変換テーブルを用いることなく読み出し得る。
実施の形態1に係る配置決定装置100の主要部の機能構成を示すブロック図 実施の形態1に係るアクセス装置200の主要部の機能構成を示すブロック図 M個のNビットの非圧縮コードそれぞれを圧縮した結果例及び各圧縮コードのROM10への配置例を示す図 配置決定装置100の配置決定処理を示すフローチャート アクセス装置200のアクセス処理を示すフローチャート 変形例1に係るアクセス装置の制御回路210aの回路構成を示す図 実施の形態2に係る配置決定装置120の主要部の機能構成を示すブロック図 実施の形態2に係るアクセス装置220の主要部の機能構成を示すブロック図 M個のNビットの非圧縮コードそれぞれを圧縮した結果例及び各圧縮コードのROM10への配置例を示す図 配置決定装置120の配置決定処理を示すフローチャート アクセス装置220のアクセス処理を示すフローチャート 変形例2に係るアクセス装置の制御回路230aの回路構成を示す図 実施の形態3に係る配置決定装置140の主要部の機能構成を示すブロック図 実施の形態3に係るアクセス装置240の主要部の機能構成を示すブロック図 M個のNビットの非圧縮コードそれぞれを圧縮した結果例及び各圧縮コードのROM10への配置例を示す図 配置決定装置140の配置決定処理を示すフローチャート アクセス装置240のアクセス処理を示すフローチャート 変形例3に係るアクセス装置の制御回路250aの回路構成を示す図
以下、本発明に係る配置決定装置及びメモリアクセス装置の一実施形態を、図面を参照しながら説明する。
≪実施の形態1≫
<1.概要>
実施の形態1に係る配置決定装置は、M個のNビットの非圧縮プログラムコードそれぞれを基に圧縮したM個の圧縮プログラムコードの、本発明に係るメモリの一実施形態であるROM(Read Only Memory)への配置を決定する装置である。以下、「プログラムコード」のことを単に「コード」ともいう。
この配置決定装置は、上記M個の非圧縮コードからなる非圧縮ブロック内の各非圧縮コードのアドレス値に所定の演算を施した結果値に基づいて、各圧縮コードの配置を決定する。
具体的には、この配置決定装置は、非圧縮ブロック内の各非圧縮コードのアドレス値に、第1演算を施した結果値に基づいて、各圧縮コードのうちのXaビット(Xa<N)分の配置を決定する。また、この配置決定装置は、非圧縮ブロック内のデータ長がXaビットより大きい各圧縮コード(以下、「特定圧縮コード」ともいう)のアドレス値に、第2演算を施した結果値に基づいて各特定圧縮コードから上記Xaビット分を除いた部分の配置を決定する。なお、第1演算及び第2演算の内容は後述する。
また、実施の形態1に係るアクセス装置は、プロセッサが所望する非圧縮コードに対応する圧縮コード(以下、「対象圧縮コード」ともいう)が配置されている上記ROM上の位置を特定して読み出し、読み出した対象圧縮コードを伸長して、プロセッサに送出する装置である。
このアクセス装置も上記配置決定装置と同様に、第1演算及び第2演算を用いて、対象圧縮コードが配置されているROM上の位置を特定する。
このように、実施の形態1に係る配置決定装置及びアクセス装置によれば、アドレス変換テーブルを用いることなく、所定の演算(第1演算及び第2演算)を用いて圧縮コードの配置の決定し、圧縮コードの位置を特定することができる。
<2.機能構成>
<2−1.配置決定装置>
まず、配置決定装置100の機能構成について説明する。
図1は、実施の形態1に係る配置決定装置100の主要部の機能構成を示すブロック図である。
同図に示すように、配置決定装置100は、記憶装置20及び書込装置30と接続しており、アクセス部101、圧縮部102及び制御部110を備える。なお、配置決定装置100は、プロセッサ及びメモリを含むコンピュータであり、圧縮部102及び制御部110の各機能は、上記メモリに格納されたプログラムを上記プロセッサが実行することで実現される。
アクセス部101は、制御部110の指示に従って、M個の非圧縮コード用のメモリ領域21及びM個の圧縮コード用のメモリ領域22を有する記憶装置20にアクセスし、非圧縮コードの読み出し及び圧縮コードの書き込みを行う機能を有する。
圧縮部102は、制御部110の指示に従って、アクセス部101が読み出したNビット(例えば、16ビット)の非圧縮コードに対し圧縮処理を行い、Nビット未満の圧縮コードを生成する機能を有する。圧縮部102は、生成した圧縮コード及びその圧縮コードのデータ長を示す情報(以下、「データ長情報」という)を、制御部110に送出する。
制御部110は、配置決定装置100内の各ブロックへの指示を行う機能の他、圧縮部102から受領した圧縮コードのROM10への配置を決定し、この決定した配置になるように、アクセス部101を介して、各圧縮コードを記憶装置20の圧縮コード用のメモリ領域22に格納する機能を有する。
制御部110は、第1決定部111及び第2決定部112を含む。
第1決定部111は、圧縮部102から受領した圧縮コードのうちのXaビット(この例では、N/2−1、つまり7ビットとする)分を、その圧縮コードの基となった非圧縮コードの非圧縮ブロック内アドレス値ADDR_aに第1演算を施した結果値addr_a1が示すROM10上の位置に配置するよう決定する機能を有する。なお、このアドレス値ADDR_aは、Nビット単位について割り振られたものである。
第1演算の一例を数1に示す。
[数1]
addr_a1=ADDR_a/2
第2決定部112は、圧縮部102から受領したXaビットより大きい圧縮コード(特定圧縮コード)からXaビット分のデータを除いた残りのデータを、その圧縮コードの基となった非圧縮コードの非圧縮ブロック中のアドレス値ADDR_aに第2演算を施した結果値addr_a2が示すROM10上の位置に配置するよう決定する機能を有する。第2演算の一例を数2に示す。
[数2]
addr_a2=M/2+Round1/2(ADDR_a/4)
ここで、Mは、非圧縮コードの個数であり、圧縮コードの個数でもある。また、Round1/2(ADDR_a/4)は、ADDR_aを4で除算した結果を、1/2単位で丸めた結果値を返す関数である。
制御部110は、M個の圧縮コードそれぞれについて、第1決定部111及び第2決定部112で決定された配置になるように、アクセス部101を介して、記憶装置20の圧縮コード用のメモリ領域22に格納する。
なお、制御部110は、各圧縮コードについて、その圧縮コードのうちのXaビット(上述の例では、N/2−1)分に、その圧縮コードがXaビットより大きいか否かを示す1ビットのフラグを付与して、第1決定部111が決定した配置になるように記憶装置20に格納する。
以下では、この圧縮コードのうちのXaビット分と1ビットのフラグとからなるデータを、「第1データ」ともいい、Xaビットより大きい特定圧縮コードから、第1データに含まれるこのXaビット分を除いた部分のデータを「第2データ」ともいう。
制御部110は、アクセス部101を介して、M個の圧縮コード全てについての圧縮コード用のメモリ領域22への格納が完了した際に、いわゆるROMライターである書込装置30にROM10への書込指示を行う。
この指示を受けた書込装置30は、記憶装置20の圧縮コード用のメモリ領域22における配置を維持して、ROM10に各圧縮コードを書き込む。
<2−2.アクセス装置>
図2は、実施の形態1に係るアクセス装置200の主要部の機能構成を示すブロック図である。
ここで、ROM10には、配置決定装置100が決定した配置で各圧縮コードが格納されているものとする。
同図に示すように、アクセス装置200は、入力部201、読出部202、伸長部203及び制御部210を備える。なお、アクセス装置200は、プロセッサ(プロセッサ40とは別のプロセッサである)及びメモリを含むコンピュータであり、伸長部203及び制御部210の各機能は、上記メモリに格納されたプログラムを上記プロセッサが実行することで実現される。
入力部201は、プロセッサ40から、所望する非圧縮コードにアクセスするためのアドレス値ADDR_bを受け付けて、制御部210に送出する機能を有する。
なお、このアドレス値ADDR_bは、Nビット単位について割り振られたものである。
読出部202は、制御部210の指示に従って、ROM10から第1データ及び第2データを読み出し、制御部210に送出する機能を有する。
伸長部203は、制御部210から送出された圧縮コードを伸長し、得られた非圧縮コードをプロセッサ40に送出する機能を有する。
制御部210は、アクセス装置200内の各ブロックへの指示を行う機能の他、入力部201から受領したアドレス値ADDR_bに基づいて、プロセッサ40が所望する非圧縮コードに対応する圧縮コード(対象圧縮コード)を、読出部202を介して、ROM10から読み出し、伸長部203に送出する機能を有する。
制御部210は、第1特定部211、第2特定部212及び出力部213を含む。
第1特定部211は、入力部201から受領したアドレス値ADDR_bに第1演算を施した結果値addr_b1が示すROM10上の位置を、対象圧縮コードのうちのXaビット分のデータを含む第1データが配置されている位置として特定する機能を有する。
第1演算の一例を数3に示すが、この第1演算は、配置決定装置100の第1決定部111による第1演算(数1参照)と同様のものである。
[数3]
addr_b1=ADDR_b/2
なお、第1特定部211は、特定したROM10上の位置に配置されている第1データを、読出部202を介して読み出す機能も有する。
第2特定部212は、入力部201から受領したアドレス値ADDR_bに第2演算を施した結果値addr_b2が示すROM10上の位置を、Xaビットよりも大きい特定圧縮コードからXaビット分を除いた第2データが配置されている位置として特定する機能を有する。
第2演算の一例を数4に示すが、この第2演算は、配置決定装置100の第2決定部112による第2演算(数2参照)と同様のものである。
[数4]
addr_b2=M/2+Round1/2(ADDR_b/4)
ここで、Mは、非圧縮コードであり、圧縮コードの個数でもある。また、Round1/2(ADDR_b/4)は、ADDR_bを4で除算した結果を、1/2単位で丸めた結果値を返す関数である。
なお、第2特定部212は、特定したROM10上の位置に配置されている第2データを、読出部202を介して読み出す機能も有する。
出力部213は、第1特定部211が読み出した第1データに含まれているXaビット分の圧縮コードと、第2特定部212が読み出した第2データとからなる対象圧縮コードとを、伸長部203に送出する機能を有する。
なお、対象圧縮コードのデータ長がXaビット以下である場合には、第2データの読み出しは行われない。従って、この場合、出力部213は、第1特定部211が読み出した第1データに含まれている圧縮コードのみからなる対象圧縮コードを、伸長部203に送出することになる。
<3.データ>
以下では、ROM10のデータ構成について説明する。
図3(a)は、M個のNビットの非圧縮コードそれぞれを圧縮した結果例を示す図である。
同図に示すADDRは、各非圧縮コードについての非圧縮ブロック内アドレス値ADDR_a又はプロセッサ40が所望する非圧縮コードのアドレス値ADDR_bを示している(後述する図9(a)、図15(a)についても同様)。
例えば、同図では、ADDRが「0」である非圧縮コードA1を圧縮した結果、圧縮コードA10が得られたことを示している。
また、同図では、ADDRがそれぞれ「0」、「1」、「2」である非圧縮コードA1、B1、D1を圧縮した圧縮コードA10、B10、D10のデータ長は、Xaビット(この例では、N/2−1ビット)以下であることを示している。また、同図では、ADDRが「2」である非圧縮コードC1を圧縮した圧縮コードC10のデータ長が、Xaビット(この例では、N/2−1ビット)より大きいことを示している。
また、図3(b)は、各圧縮コード(A10〜D10)のROM10への配置例を示す図である。
各圧縮コードが配置されるROM10内の領域area0は、第1領域area1と第2領域area2とからなる。なお、同図に示すaddrは、ROM10上のアドレス値を示している(後述する図9(b)、図15(b)についても同様)。
第1領域area1は、各圧縮コードについての、その圧縮コードのうちのXaビット以下分と1ビットのフラグとからなる第1データが配置される物理的に連続した領域である。
この例では、圧縮コードのデータ長がXaビット以下である場合のフラグの値を「0」とし、Xaビットより大きい場合のフラグの値を「1」としている。
第2領域area2は、データ長がXaビットより大きい各特定圧縮コードの第2データが配置される物理的に連続した領域である。
即ち、データ長がXaビット以下である各圧縮コードは、数1の結果値addr_a1が示す第1領域area1内の位置に格納されることになる。また、データ長がビットより大きい各特定圧縮コードは、数1の結果値addr_a1が示す第1領域area1内の位置と、数2の結果値addr_a2が示す第2領域area2内の位置とに分割して格納されることになる。なお、数1及び数2を用いた各圧縮コードの配置決定方法については、以下の<4.動作>の<4−1.配置決定処理>及び<4−2.配置決定処理の具体例>において詳しく説明する。
図3(a)の例では、圧縮コードA10、B10、D10のデータ長はN/2−1以下であり、圧縮コードC10のデータ長はN/2−1より大きい。従って、この例では、圧縮コードC10についてのみ第2データが格納されることになる。
即ち、図3(b)の例では、圧縮コードA10とB10とがそれぞれ、ROM10の第1領域area1内のaddrが「0」である領域の下位N/2ビット分の領域と上位N/2ビット分の領域とに配置される。また、圧縮コードC10のXaビット分のデータC11と圧縮コードD10とがそれぞれ、ROM10の第1領域area1内のaddrが「1」である領域の下位N/2ビット分の領域と上位N/2ビット分の領域とに配置される。また、圧縮コードC10からXaビット分のデータC11を除いた第2データC12が、ROM10の第2領域area2内のaddrが「M/2」である領域の上位N/2ビット分の領域に配置される。
なお、図中では、各圧縮コードの有効データ長のイメージをハッチで示している(後述する図9(b)、図15(b)についても同様)。実装においては、伸長部203で伸長したときに、元の固定長(Nビット)の非圧縮コードが得られれば足りるので、有効データ長の境界が明示される必要はない。
<4.動作>
次に、上記構成を備える配置決定装置100及びアクセス装置200の動作について説明する。
<4−1.配置決定処理>
まずは、配置決定装置100の配置決定処理について説明する。
図4は、配置決定装置100の配置決定処理を示すフローチャートである。
まず、配置決定装置100における制御部110は、処理対象の非圧縮コードの非圧縮ブロック内アドレス値ADDR_a(変数)を「0」に初期化する(ステップS1)。
制御部110は、M個の非圧縮コード全てについて、以下説明するステップS3以降の処理を完了した否かを判定する(ステップS2)。
ステップS3以降の処理を完了していない場合に(ステップS2:NO)、制御部110は、アドレス値ADDR_aが示す記憶装置20の非圧縮コード用の領域21内の位置に格納されている非圧縮コードを、アクセス部101を介して読み出す(ステップS3)。
制御部110は、読み出した非圧縮コードを圧縮部102に送出し、圧縮部102は、受領した非圧縮コードを圧縮し、圧縮コード及びその圧縮コードのデータ長を示すデータ長情報を、制御部110に送出する(ステップS4)。
制御部110の第1決定部111は、アドレス値ADDR_aに第1演算(数1参照)を施し(ステップS5)、制御部110は、圧縮部102から受領したデータ長情報が示すデータ長がXaビットより大きいか否かを判定する(ステップS6)。
圧縮部102から受領したデータ長情報が示すデータ長がXaビット以下である場合に(ステップS6:NO)、制御部110は、フラグとステップS4で受領した圧縮コードとを、ステップS5の第1演算の結果値addr_a1が示す記憶装置20の圧縮コード用の領域22内の位置にアクセス部101を介して書き込む(ステップS8)。このときのフラグは、圧縮コードのデータ長がXaビット以下であることを示すように「0」に設定される。
一方、圧縮部102から受領したデータ長情報が示すデータ長がXaビットより大きい場合に(ステップS6:YES)、制御部110の第2決定部112は、アドレス値ADDR_aに第2演算を施す(ステップS7)。
続いて、制御部110は、フラグとステップS4で受領した圧縮コードのXaビット分とを、ステップS5の第1演算の結果値addr_a1が示す記憶装置20の圧縮コード用の領域22内の位置にアクセス部101を介して書き込む。このときのフラグは、圧縮コードのデータ長がXaビットより大きいことを示すように「1」に設定される。また、制御部110は、ステップS4で受領した圧縮コードからXaビット分を除いた残りを、ステップS7の第2演算の結果値addr_a2が示す圧縮コード用の領域22内の位置にアクセス部101を介して書き込む(ステップS8)。
ステップS8の処理を完了すると、制御部110は、アドレス値ADDR_aを、1加算した値に更新し(ステップS9)、再びステップS2から処理を行う。
M個の非圧縮コード全てについて、ステップS3以降の処理を完了した場合に(ステップS2:YES)、制御部110は、記憶装置20の圧縮コード用の領域22に配置されている各圧縮コードを、ROM10に書き込むよう書込装置30に指示し(ステップS10)、配置決定処理を終了する。
なお、書込装置30は、制御部110からのこの指示に従って、圧縮コード用の領域22に配置されている各圧縮コードを、この配置のままROM10に書き込むことになる。
<4−2.配置決定処理の具体例>
上述した配置決定装置100の配置決定処理について、図3に示す例を用いて、図4に示すフローチャートに即して具体的に説明する。
(1)非圧縮コードA1についての処理
まず、配置決定装置100における制御部110は、処理対象の非圧縮コードの非圧縮ブロック内アドレス値ADDR_aを「0」に初期化する(ステップS1)。
この例では、M個の非圧縮コード全てについて、ステップS3以降の処理を完了していないので(ステップS2:NO)、制御部110は、アドレス値ADDR_a(0)が示す記憶装置20の非圧縮コード用の領域21内の位置に格納されている非圧縮コード(A1)を、アクセス部101を介して読み出す(ステップS3)。
制御部110は、読み出した非圧縮コード(A1)を圧縮部102に送出し、圧縮部102は、受領した非圧縮コード(A1)を圧縮し、圧縮コード(A10)及びその圧縮コードのデータ長を示すデータ長情報を、制御部110に送出する(ステップS4)。
制御部110の第1決定部111は、アドレス値ADDR_a(0)に第1演算(数1参照)を施す(ステップS5)。この第1演算の結果値addr_a1は、アドレス値ADDR_a(0)/2で「0」になる。
この例では、圧縮部102から受領したデータ長情報が示すデータ長は、Xaビット以下である(ステップS6:NO)。従って、制御部110は、図3(b)に示すように、フラグ(0)とステップS4で受領した圧縮コード(A10)とを、ステップS5の第1演算の結果値addr_a1(0)が示す記憶装置20の圧縮コード用の領域22内の位置にアクセス部101を介して書き込む(ステップS8)。
制御部110は、アドレス値ADDR_aを、1加算した値(1)に更新し(ステップS9)、再びステップS2から処理を行う。
(2)非圧縮コードB1について
非圧縮コードB1を圧縮した圧縮コードB10についても、上記圧縮コードA10と同様に処理されるため(ステップS2〜S6、S8、S9)、詳細な説明は省略するが、ステップS5の第1演算の結果値addr_a1は、アドレス値ADDR_a(1)/2で「1/2」になる。また、図3(a)の例では、圧縮コードB10のデータ長は、Xaビット以下である。
従って、図3(b)に示すように、フラグ(0)とステップS4で受領した圧縮コード(B10)とが、第1演算の結果値addr_a1(1/2)が示す記憶装置20の圧縮コード用の領域22内の位置に配置されることになる。
(3)非圧縮コードC1について
この例では、M個の非圧縮コード全てについて、ステップS3以降の処理を完了していないので(ステップS2:NO)、制御部110は、アドレス値ADDR_a(2)が示す記憶装置20の非圧縮コード用の領域21内の位置に格納されている非圧縮コード(C1)を、アクセス部101を介して読み出す(ステップS3)。
制御部110は、読み出した非圧縮コード(C1)を圧縮部102に送出し、圧縮部102は、受領した非圧縮コード(C1)を圧縮し、圧縮コード(C10)及びその圧縮コードのデータ長を示すデータ長情報を、制御部110に送出する(ステップS4)。
制御部110の第1決定部111は、アドレス値ADDR_a(2)に第1演算(数1参照)を施す(ステップS5)。この第1演算の結果値addr_a1は、アドレス値ADDR_a(2)/2で「1」になる。
この例では、圧縮部102から受領したデータ長情報が示すデータ長は、Xaビットより大きい(ステップS6:YES)。従って、制御部110の第2決定部112は、アドレス値ADDR_aに第2演算を施す(ステップS7)。この第2演算の結果値addr_a2は、M/2+Round1/2(ADDR_a(2)/4)で、「M/2+1/2」になる。
続いて、制御部110は、図3(b)に示すように、フラグ(1)とステップS4で受領した圧縮コード(C10)のXaビット分(C11)とを、ステップS5の第1演算の結果値addr_a1(1)が示す記憶装置20の圧縮コード用の領域22内の位置にアクセス部101を介して書き込む。また、制御部110は、図3(b)に示すように、ステップS4で受領した圧縮コード(C10)からXaビット分を除いた残り(C12)を、ステップS7の第2演算の結果値addr_a2(M/2+1/2)が示す圧縮コード用の領域22内の位置にアクセス部101を介して書き込む(ステップS8)。
ステップS8の処理を完了すると、制御部110は、アドレス値ADDRを、1加算した値(3)に更新し(ステップS9)、再びステップS2から処理を行う。
(4)非圧縮コードD1について
非圧縮コードD1を圧縮した圧縮コードD10についても、上記圧縮コードB10と同様に処理され、図3(b)に示すように、フラグ(0)とステップS4で受領した圧縮コード(D10)とが、第1演算の結果値addr_a1(3/2)が示す記憶装置20の圧縮コード用の領域22内の位置に配置されることになる。
<4−3.アクセス処理>
次に、アクセス装置200のアクセス処理について説明する。
図5は、アクセス装置200のアクセス処理を示すフローチャートである。
まず、アクセス装置200における制御部210は、入力部201を介して、プロセッサ40から、所望する非圧縮コードのアドレス値ADDR_bを受け付ける(ステップS11:YES)。
制御部210の第1特定部211は、アドレス値ADDR_bに第1演算(数3参照)を施し(ステップS12)、制御部210は、読出部202を介して、第1演算の結果値addr_b1が示すROM10の第1領域area1内の位置から第1データを読み出す(ステップS13)。
制御部210は、読み出した第1データのフラグの値に基づいて、圧縮コードのデータ長がXaビットより大きいか否かを判定する(ステップS14)。
フラグの値が「0」の場合に、制御部210は、圧縮コードのデータ長がXaビット以下であると判定し(ステップS14:NO)、制御部210の出力部213は、読み出した第1データに含まれている圧縮コードを伸長部203に出力する(ステップS17)。
一方、フラグの値が「1」の場合に、制御部210は、圧縮コードのデータ長がXaビットより大きいと判定し(ステップS14:YES)、制御部210の第2特定部212は、アドレス値ADDR_bに第2演算を施す(ステップS15)。制御部210は、読出部202を介して、第2演算の結果値addr_b2が示すROM10の第2領域area2内の位置から第2データを読み出す(ステップS16)。制御部210の出力部213は、読み出した第1データに含まれている圧縮コードのうちのXaビット分と第2データとからなる圧縮コードを伸長部203に出力する(ステップS17)。
ステップS17の処理を完了すると、伸長部203は、出力された圧縮コードを伸長し(ステップS18)、非圧縮コードをプロセッサ40に送出し(ステップS19)、アクセス処理を終了する。
<4−4.アクセス処理の具体例>
上述したアクセス装置200のアクセス処理について、図3に示す例を用いて、図5に示すフローチャートに即して具体的に説明する。
以下では、プロセッサ40から、所望する非圧縮コードC1のアドレス値ADDR_b「2」を受領した場合を例にアクセス装置200のアクセス処理を説明する。
アクセス装置200における制御部210は、入力部201を介して、プロセッサ40から、所望する非圧縮コード(C1)のアドレス値ADDR_b(2)を受け付ける(ステップS11)。
制御部210の第1特定部211は、アドレス値ADDR_b(2)に第1演算(数3参照)を施す(ステップS12)。この第1演算の結果値addr_b1は、アドレス値ADDR_b(2)/2で「1」になる。
制御部210は、読出部202を介して、第1演算の結果値addr_b1(1)が示すROM10の第1領域area1内の位置から第1データ(フラグ「1」とデータC11)を読み出す(ステップS13)。
この例では、フラグの値が「1」なので、制御部210は、圧縮コードのデータ長がXaビットより大きいと判定し(ステップS14:YES)、制御部210の第2特定部212は、アドレス値ADDR_bに第2演算を施す(ステップS15)。この第2演算の結果値addr_b2は、M/2+Round1/2(ADDR_b(2)/4)で、「M/2+1/2」になる。
制御部210は、読出部202を介して、第2演算の結果値addr_b2(M/2+1/2)が示すROM10の第2領域area2内の位置から第2データ(C12)を読み出す(ステップS16)。制御部210の出力部213は、読み出した第1データに含まれる圧縮コードのXaビット分(C11)及び第2データ(C12)からなる圧縮コードを伸長部203に出力する(ステップS17)。
ステップS17の処理を完了すると、伸長部203は、出力された圧縮コードを伸長し(ステップS18)、非圧縮コード(C1)をプロセッサ40に送出し(ステップS19)、アクセス処理を終了する。
<5.考察>
実施の形態1に係る配置決定装置100によれば、アドレス変換テーブルを用いることなく、各圧縮コードのROM10上の配置の決定できると共に、一定条件下で、各圧縮コードを配置するROM10上の領域area0の容量削減に利用できる。
アドレス値ADDR_aが「2×j」及び「2×j+1」(但し、j=0,1,・・・M/2)である2つの非圧縮コードを圧縮した各圧縮コードが共に特定圧縮コードでないことを条件に、各圧縮コードのROM10上の格納領域area0(図3(b)参照)の容量は、以下のようになる。
即ち、格納領域area0の容量は、第1領域area1の容量(M×N/2ビット)+第2領域area2の容量(M×N/4ビット)=M×N×3/4ビットとなる。
つまり、アドレス変換テーブルを使わない方法として最も簡単な方法は、M個の圧縮コードそれぞれをROM10上のNビットの領域にそのままに配置することが考えられるが、この場合の格納領域の容量M×Nと比較し、実施の形態1に係る配置決定装置100によれば、25%の容量削減が可能になる。
また、実施の形態1に係るアクセス装置200についても同様に、アドレス変換テーブルを用いることなく、所定の演算(第1演算及び第2演算)を用いて対象圧縮コードの位置の特定を行うことができる。
≪変形例1≫
実施の形態1では、アクセス装置200の制御部210の機能は、アクセス装置200のメモリに格納されたプログラムを、アクセス装置200が備えるプロセッサが実行することで実現するものとして説明したが、以下では、比較的簡単な構成の回路で実現するように変形した例を説明する。
図6は、変形例1に係るアクセス装置の制御回路210aの回路構成を示す図である。
なお、同図では、入力部201を介してプロセッサ40から入力されるアドレス値を、「ADDR」と表記し、読出部202を介してROM10に送出されるアドレス値を「addr」と表記し、ADDR及びaddrは16ビットである例を示している。また、同図では、Nが16ビットであり、ROM10が16ビットのaddrに対して16ビットのdataを出力する例を示している。これらについては、後述する変形例2についても同様である。
同図に示すように、変形例1に係るアクセス装置の制御回路210aは、セレクタ214a〜214eと、AND回路215と、Dフリップフロップ216a〜216cとを含んで構成される回路である。プロセッサ40からアドレス値ADDRが入力されてから1あるいは2cycle後において、後述するNDATA_ENABLEが「0」である場合に、この制御回路210aから出力されているDATAを、伸長部203は、有効な圧縮コードとして取得し伸長することになる。
ここで、セレクタ214a〜214dは、「0」側と「1」側の2つの入力のうち、NDATA_ENABLEと同値となる側の入力を選択するものである。また、セレクタ214eは、後述するbyte_selectと同値となる側の入力を選択するものである。
入力部201を介してプロセッサ40からアドレス値ADDRが入力される時点において、各セレクタ(214a〜214e)は、「0」側の入力を選択しているものとする。
以下では、プロセッサ40から、アドレス値ADDRとして、図3(a)に示す非圧縮コードC1のアドレス値(2)が入力された場合を例に、制御回路210aの動作を具体的に説明する。
(1)第1データの読み出し
入力部201を介してプロセッサ40から、0〜15ビット目までの16ビットからなるアドレス値ADDR[15:0]=‘0・・・010’b=2が入力された時に、セレクタ214aでは、「0」側の入力が選択されている。
従って、このアドレス値ADDRの1ビット目から15ビット目まで(ADDR[15:1])と、最上位ビット「0」とからなる16ビットのアドレス値{0,ADDR[15:1]}=‘0・・・001’b=1がセレクタ214aからaddr[15:0]として出力される。
このaddr[15:0]に対して、ROM10は、図3(b)のaddr「1」に配置されている16ビットデータの上位8ビットのdata[15:8]と下位8ビットのdata[7:0]とを出力する。
この図3(b)の例では、data[15:8]はフラグ「0」及びD10を含む8ビットデータであり、data[7:0]は、フラグ「1」及びC11からなる8ビットデータである。
また、セレクタ214bでは、「0」側の入力が選択されている。従って、プロセッサからのアドレス値ADDRの0ビット目(ADDR[0])=‘0’bが、セレクタ214bからbyte_selectとして出力される。
従って、セレクタ214eからは、data[7:0](C11を含む)がdata_sel[7:0]として出力される。
この例では、data_sel[7:0]の0ビット目(data_sel[0])は、フラグ「1」であり、NDATA_ENABLEは「0」である。従って、AND回路215からは「1」が出力され、Dフリップフロップ216aに入力される。
また、セレクタ214cでは、「0」側の入力が選択されている。従って、data_sel[7:0]の1ビット目から7ビット目(data_sel[7:1])がセレクタ214cから出力され、Dフリップフロップ216bに入力される。
また、セレクタ214dでは、「0」側の入力が選択されている。従って、all 0(9ビットが全て0)がセレクタ214dから出力され、Dフリップフロップ216cに入力される。
Dフリップフロップ216a〜216cにクロックの入力があると、Dフリップフロップ216aからは「1」がNDATA_ENABLEとして出力され、Dフリップフロップ216bからはdata_sel[7:1](C11)がDATA[6:0]として出力される。また、Dフリップフロップ216cからはall 0(9ビットが全て0)がDATA[15:7]として出力される。
なお、この例においては、このタイミング(プロセッサ40からアドレス値ADDRが入力されてから1cycle後)では、NDATA_ENABLEが「1」であるため、伸長部203によるDATAの伸長はまだ行われない。
(2)第2データの読み出し
上述の通り、NDATA_ENABLEが「1」となったため、セレクタ214a〜214dでは、「1」側の入力が選択されることになる。
従って、プロセッサ40からのアドレス値ADDRの2ビット目から15ビット目まで(ADDR[15:2])と、上位2ビット「10」とからなる16ビットのアドレス値{10,ADDR[15:2]}=‘10・・・0’b=215がセレクタ214aからaddr[15:0]として出力される。
このaddr[15:0]に対して、ROM10は、図3(b)のaddr「M/2」に配置されている16ビットデータの上位8ビットのdata[15:8]と下位8ビットのdata[7:0]とを出力する。
また、セレクタ214bからは、プロセッサからのアドレス値ADDRの1ビット目(ADDR[1])=‘1’bがbyte_selectとして出力される。
従って、セレクタ214eからは、data[15:8](C12を含む)がdata_sel[7:0]として出力される。
NDATA_ENABLEは「1」であるため、AND回路215からは「0」が出力され、Dフリップフロップ216aに入力される。また、セレクタ214cからは、DATA[6:0](圧縮コードC10の7ビット分であるC11)が出力され、Dフリップフロップ216bに入力される。また、セレクタ214dからは、data_sel[7:0](C12を含む)と、最上位ビット「0」とからなる9ビットのデータが出力され、Dフリップフロップ216cに入力される。
Dフリップフロップ216a〜216cにクロックの入力があると、Dフリップフロップ216aからは「0」がNDATA_ENABLEとして出力され、Dフリップフロップ216bからは圧縮コードC10の7ビット分であるC11がDATA[6:0]として出力される。また、Dフリップフロップ216cからは圧縮コードC10からC11を除いた残りのデータであるC12を含むデータがDATA[15:7]として出力される。
なお、この例においては、このタイミング(プロセッサ40からアドレス値ADDRが入力されてから2cycle後)で、NDATA_ENABLEが「0」である。従って、この制御回路210aから出力されたDATA(DATA[6:0]及びDATA[15:7])が伸長部203により取得されて、伸長が行われることになる。
≪実施の形態2≫
以下では、実施の形態1で説明した第2演算の内容を変更した例を、実施の形態1との相違点を中心に説明する。
<1.機能構成>
図7は、実施の形態2に係る配置決定装置120の主要部の機能構成を示すブロック図であり、図8は、実施の形態2に係るアクセス装置220の主要部の機能構成を示すブロック図である。
図7に示すように、配置決定装置120は、実施の形態1に係る配置決定装置100の制御部110に代えて、制御部130を備え、この制御部130は、実施の形態1に係る制御部110の第2決定部112に代えて、第2決定部131を含む点で、配置決定装置100とは異なる。
また、図8に示すように、アクセス装置220は、実施の形態1に係るアクセス装置200の制御部210に代えて、制御部230を備え、この制御部230は、実施の形態1に係る制御部210の第2特定部212に代えて、第2特定部231を含む点で、アクセス装置200とは異なる。
具体的には、配置決定装置120の第2決定部131及びアクセス装置220の第2特定部231は、アドレス値ADDR_a及びアドレス値ADDR_bを数5に示すように表した場合において、数6〜8で示すいずれかの演算を第2演算として行う点で、第2決定部112及び第2特定部212とは異なる。
[数5]
ADDR_a=ADDR_b=4×j+k
但し、j=0,1,・・・,M/4−1、k=0,1,2,3
[数6]
addr_a2=addr_b2=M/2+j
[数7]
addr_a2=addr_b2=M/2+j+1/2
[数8]
addr_a2=addr_b2=3×M/4+j/2
<2.データ>
図9(a)は、M個のNビットの非圧縮コードそれぞれを圧縮した結果例を示す図である。
図9(a)では、ADDRが「0」〜「3」である非圧縮コードA2〜D2を圧縮した結果、圧縮コードA20〜D20が得られ、圧縮コードA20、C20、D20のデータ長が、N/2−2ビットより大きいことを示している。
また、図9(b)は、各圧縮コード(A20〜D20)のROM10への配置例を示す図である。
各圧縮コードが配置されるROM10内の領域area10は、第1領域area11と第2領域area12とからなる。
ここで、第1領域area11は、実施の形態1に係る第1領域area1と同様、各圧縮コードについての第1データが配置される領域であるが、第1データが圧縮コードのうちのXbビット(Xb<Nであり、この例では、N/2−2、つまり6ビットとする)分と2ビットのフラグとからなる点で、第1領域area1とは異なる。
ここで、2ビットのフラグは、圧縮コードのデータ長がXbビットより大きいか否かを示すと共に、Xbビットより大きい場合に、圧縮コードからXbビット分を除いた残りが、数6〜数8の結果値が示す3つの位置のうちのいずれの位置に配置されているかをも示すものである。
この例では、圧縮コードのデータ長がXbビット以下である場合のフラグの値を「00」に設定し、圧縮コードのデータ長がXbビットより大きい場合には、以下のようにフラグの値を設定するものとする。即ち、数6の演算が用いられた場合には「10」に、数7の演算が用いられた場合には「11」に、数8が用いられた場合には「01」にそれぞれ設定するものとする。
第2領域area12は、実施の形態1に係る第1領域area2と同様、各圧縮コードのうちデータ長がXbビットより大きい特定圧縮コードの第2データが配置される領域である。なお、実施の形態1では、各圧縮コードのうちデータ長がXaビットより大きい圧縮コードを特定圧縮コードと呼んでいたが、実施の形態2では、データ長がXbビットより大きい圧縮コードを特定圧縮コードと呼ぶ。
図9(a)の例では、圧縮コードA20、C20、D20のデータ長はN/2−2より大きく、圧縮コードB20のデータ長はN/2−2以下である。
従って、図9(b)の例では、圧縮コードA20、C20及びD20がそれぞれ、ROM10の第1領域area11内と、第2領域area12内とに分割して配置されている。なお、数6〜8を用いた第2データの配置決定方法については、以下の<3.動作>の<3−1.配置決定処理>及び<3−2.配置決定処理の具体例>において詳しく説明する。
<3.動作>
次に、配置決定装置120及びアクセス装置220の動作について説明する。
<3−1.配置決定処理>
まずは、配置決定装置120の配置決定処理について説明する。
図10は、配置決定装置120の配置決定処理を示すフローチャートである。
同図に示すように、配置決定装置120の配置決定処理は、図4に示す実施の形態1に係る配置決定装置100の配置決定処理のうちのステップS6〜S8の処理に代えて、ステップS31〜S33の処理を含む点で、配置決定装置100の配置決定処理とは異なる。従って、以下では、ステップS31〜S33の処理を中心に説明する。
ステップS1〜S5の処理を完了すると、制御部130は、ステップS4で圧縮部102から受領したデータ長情報が示すデータ長がXbビット(この例では、N/2−2ビット)より大きいか否かを判定する(ステップS31)。
図4に示すステップS6では、Xaビット(N/2−1ビット)との比較を行っていたが、実施の形態2に係る第1データに含まれるフラグは2ビットであるため、ステップS31では、Xbビット(N/2−2ビット)より大きいかを判定している。
圧縮部102から受領したデータ長情報が示すデータ長がXbビット以下である場合に(ステップS31:NO)、制御部130は、2ビットのフラグとステップS4で受領した圧縮コードとを、ステップS5の第1演算の結果値addr_a1が示す記憶装置20の圧縮コード用の領域22内の位置にアクセス部101を介して書き込む(ステップS33)。このときのフラグは、圧縮コードのデータ長がXbビット以下であることを示すように「00」に設定される。
一方、圧縮部102から受領したデータ長情報が示すデータ長がXbビットより大きい場合に(ステップS31:YES)、制御部130の第2決定部131は、アドレス値ADDR_aに第2演算を施す(ステップS32)。
即ち、jの値が共通する「4×j」、「4×j+1」、「4×j+2」及び「4×j+3」となる連続する4つのアドレス値ADDR_a(但し、j=0,1,・・・,M/4−1)を1組として、数6〜8に示す各演算のうち、同じ組に含まれる他のアドレス値について選択されてない演算を行う。ここでは、一例として、数6、数7、数8の順で選択するものとする。詳細は、<3−2.配置決定処理の具体例>にて説明する。
続いて、制御部130は、2ビットのフラグとステップS4で受領した圧縮コードのXbビット分を、ステップS5の第1演算の結果値addr_a1が示す記憶装置20の圧縮コード用の領域22内の位置にアクセス部101を介して書き込む。このときのフラグは、ステップS32で用いられた演算が、数6〜数8のいずれであるかに応じて設定される。つまり、数6の演算が用いられた場合には「10」に、数7の演算が用いられた場合には「11」に、数8が用いられた場合には「01」に設定される。
また、制御部130は、ステップS4で受領した圧縮コードからXbビット分を除いた残りを、ステップS32の第2演算の結果値addr_a2が示す圧縮コード用の領域22内の位置にアクセス部101を介して書き込み(ステップS33)、ステップS9の処理に進む。
<3−2.配置決定処理の具体例>
上述した配置決定装置120の配置決定処理について、図9に示す例を用いて、図10に示すステップS31〜S33の処理内容を具体的に説明する。
(1)非圧縮コードA2についての処理
この例では、非圧縮コードA2を圧縮した圧縮コードA20のデータ長はXbビットより大きく(ステップS31:YES)、非圧縮コードA2のアドレス値ADDR_aは「4×j」(但しj=0)である。従って、制御部130の第2決定部131は、数6に示す演算を第2演算として実行する(ステップS32)。この第2演算の結果値addr_a2は、「M/2」になる。
続いて、制御部130は、図9(b)に示すように、2ビットフラグ(10)とステップS4で受領した圧縮コード(A20)のXbビット分(A21)を、ステップS5の第1演算の結果値addr_a1(0)が示す記憶装置20の圧縮コード用の領域22内の位置にアクセス部101を介して書き込む。また、制御部130は、図9(b)に示すように、ステップS4で受領した圧縮コード(A20)からXbビット分を除いた残り(A22)を、ステップS32の第2演算の結果値addr_a2(M/2)が示す圧縮コード用の領域22内の位置にアクセス部101を介して書き込む(ステップS33)。
(2)非圧縮コードB2についての処理
この例では、非圧縮コードB2を圧縮した圧縮コードB20のデータ長はXbビット以下である(ステップS31:NO)。従って、制御部130は、図9(b)に示すように、2ビットのフラグ(00)とステップS4で受領した圧縮コードとを、ステップS5の第1演算の結果値addr_a1(1/2)が示す記憶装置20の圧縮コード用の領域22内の位置にアクセス部101を介して書き込む(ステップS33)。
(3)非圧縮コードC2についての処理
非圧縮コードC2を圧縮した圧縮コードC20についても、上記圧縮コードA20と同様に処理されるため(ステップS2〜S5、S31〜S33、S9)、詳細な説明は省略するが、ステップS5の第1演算の結果値addr_a1は、「1」になる。
また、ステップS32では、数7に示す演算が実行され、第2演算の結果値addr_a2は、「M/2+1/2」になる。ここで、数7に示す演算が実行されるのは、既に同じ組に属する圧縮コードA20で数6に示す演算が用いられているためである。
続いて、制御部130は、図9(b)に示すように、2ビットフラグ(11)とステップS4で受領した圧縮コード(C20)のXbビット分(C21)を、ステップS5の第1演算の結果値addr_a1(1)が示す記憶装置20の圧縮コード用の領域22内の位置にアクセス部101を介して書き込む。また、制御部130は、図9(b)に示すように、ステップS4で受領した圧縮コード(C20)からXbビット分を除いた残り(C22)を、ステップS32の第2演算の結果値addr_a2(M/2+1/2)が示す圧縮コード用の領域22内の位置にアクセス部101を介して書き込む(ステップS33)。
(4)非圧縮コードD2についての処理
非圧縮コードD2を圧縮した圧縮コードD20についても、上記圧縮コードA20と同様に処理され、特に、ステップS5の第1演算の結果値addr_a1は、「3/2」になる。
また、ステップS32では、数8に示す演算が実行され、第2演算の結果値addr_a2は、「3×M/4」になる。
続いて、制御部130は、図9(b)に示すように、2ビットフラグ(01)とステップS4で受領した圧縮コード(D20)のXbビット分(D21)を、ステップS5の第1演算の結果値addr_a1(3/2)が示す記憶装置20の圧縮コード用の領域22内の位置にアクセス部101を介して書き込む。また、制御部130は、図9(b)に示すように、ステップS4で受領した圧縮コード(D20)からXbビット分を除いた残り(D22)を、ステップS32の第2演算の結果値addr_a2(3×M/4)が示す圧縮コード用の領域22内の位置にアクセス部101を介して書き込む(ステップS33)。
<3−3.アクセス処理>
次に、アクセス装置220のアクセス処理について説明する。
図11は、アクセス装置220のアクセス処理を示すフローチャートである。
同図に示すように、アクセス装置220のアクセス処理は、図5に示す実施の形態1に係るアクセス装置200のアクセス処理のうち、ステップS14、S15及びS17に代えて、ステップS41〜S43の処理を含む点で、このアクセス装置200のアクセス処理と異なる。従って、以下では、ステップS41〜S43の処理について説明する。
ステップS11〜S13の処理を完了すると、制御部230は、ステップS13で読み出した第1データの2ビットのフラグの値に基づいて、圧縮コードのデータ長がXbビットより大きいか否かを判定する(ステップS41)。
フラグの値が「00」である場合に、制御部230は、圧縮コードのデータ長がXbビット以下であると判定し(ステップS41:NO)、制御部230の出力部213は、読み出した第1データに含まれている圧縮コードを伸長部203に出力する(ステップS43)。ステップS43の処理を完了すると、アクセス装置220は、ステップS18の処理に進む。
一方、フラグの値が「00」以外である場合に、制御部230は、圧縮コードのデータ長がXbビットより大きいと判定し(ステップS41:YES)、制御部230の第2特定部231は、アドレス値ADDR_bに第2演算を施す(ステップS42)。即ち、第2特定部231は、第2演算として、アドレス値ADDR_bを数5に示すように表した場合において、数6〜数8に示す演算のうち、フラグの値に応じた演算を行う。
つまり、フラグの値が「10」である場合には数6の演算を、「11」である場合には数7の演算を、「01」である場合には数8の演算を行う。
制御部230は、読出部202を介して、ROM10の第2領域area12内の第2演算の結果値addr_b2が示す位置から第2データを読み出す(ステップS16)。制御部230の出力部213は、読み出した第1データに含まれている圧縮コードのうちのXbビット分と第2データとからなる圧縮コードを伸長部203に出力する(ステップS43)。ステップS43の処理を完了すると、アクセス装置220は、ステップS18の処理に進む。
<3−4.アクセス処理の具体例>
上述したアクセス装置220のアクセス処理について、図9に示す例を用いて、図11に示すS41〜S43の処理内容を具体的に説明する。
以下では、プロセッサ40から、所望する非圧縮コードD2のアドレス値ADDR_b「3」を受領した場合を例にアクセス装置220のアクセス処理を説明する。
この例では、ステップS13で読み出した第1データのフラグは「01」であるため、制御部230は、圧縮コードのデータ長がXbビットより大きいと判定する(ステップS41:YES)。
制御部230の第2特定部231は、第2演算として、アドレス値ADDR_bを数5に示すように表した場合において、数6〜数8に示す演算のうち、フラグの値に応じた演算を行う(ステップS42)。この例では、非圧縮コードD2のアドレス値ADDR_bは「4×j+3」(但しj=0)であり、フラグは「01」であるため、数8に示す演算を行い、この第2演算の結果値addr_b2は、「3×M/4」になる。
制御部230は、読出部202を介して、ROM10の第2領域area12内の第2演算の結果値addr_b2(3×M/4)が示す位置から第2データ(D21)を読み出す(ステップS16)。制御部230の出力部213は、読み出した第1データからフラグを除いたデータ(D21)及び第2データ(D22)からなる圧縮コードを伸長部203に出力する(ステップS43)。
<4.考察>
実施の形態2に係る配置決定装置120によれば、実施の形態1に係る配置決定装置100の場合よりも特定圧縮コードについての条件を緩和しつつも、各圧縮コードを配置するROM10上の領域area10の容量を削減できる。
アドレス値ADDR_aが「4×j」、「4×j+1」、「4×j+2」及び「4×j+3」(但し、j=0,1,・・・,M/4−1)である4つの非圧縮コードを圧縮した各圧縮コードが共に特定圧縮コードでないことを条件に、各圧縮コードのROM10上の格納領域area10(図9(b)参照)の容量は、以下のようになる。
即ち、格納領域area10の容量は、第1領域area11の容量(M×N/2ビット)+第2領域area12の容量(M×N/4ビット+M×N/8ビット)=7×M×N/8ビットとなる。
上述のように、実施の形態1に係る配置決定装置100では、アドレス値ADDR_aが連続する2つの非圧縮コードに係る圧縮コードが共に特定圧縮コードでないことを条件に25%の容量削減が可能であった。
一方、実施の形態2に係る配置決定装置120によれば、アドレス値ADDR_aが連続する4つの非圧縮コードに係る圧縮コードが共に特定圧縮コードでないことを条件に、12.5%の容量削減が可能である。
≪変形例2≫
以下では、実施の形態2に係るアクセス装置220の制御部230を比較的簡単な構成の回路で実現するように変形した例を説明する。
図12は、変形例2に係るアクセス装置の制御回路230aの回路構成を示す図である。
同図に示すように、変形例2に係るアクセス装置の制御回路230aは、セレクタ232a〜232fと、Dフリップフロップ234a〜234cとを含んで構成される回路である。
プロセッサ40からアドレス値ADDRが入力されてから1あるいは2cycle後において、NDATA_ENABLE[1:0]が「00」である場合に、この制御回路230aから出力されているDATAを、伸長部203は、有効な圧縮コードとして取得し伸長することになる。
なお、セレクタ232a及び232bは、「00」側と、「11」側と、「01」又は「10」側との3つの入力のうち、NDATA_ENABLE[1:0]と同値となる側の入力を選択するものである。
入力部201を介してプロセッサ40からアドレス値ADDRが入力される時点において、セレクタ232a〜232fは、「00」側の入力を選択しているものとする。
以下では、プロセッサ40から、図9(a)に示す非圧縮コードD2のアドレス値(3)が入力された場合を例に、制御回路230aの動作を具体的に説明する。
(1)第1データの読み出し
入力部201を介してプロセッサ40から、アドレス値ADDR[15:0]=‘0・・・011’b=3が入力された時、セレクタ232aでは、「00」側の入力が選択されているので、16ビットのアドレス値{0,ADDR[15:1]}=‘0・・・001’b=1がセレクタ232aからaddr[15:0]として出力される。
このaddr[15:0]に対して、ROM10では、図9(b)のaddr「1」に配置されている16ビットデータが、data[15:8]及びdata[7:0]として出力される。
また、セレクタ232bでは、「00」側の入力が選択されているので、ADDR[0]=1が、セレクタ232bからbyte_selectとして出力される。
従って、セレクタ232eからは、data[15:8](フラグ「01」及びD21)がdata_sel[7:0]として出力され、セレクタ232fでは、「00」側の入力が選択されているので、data_sel[1:0](01)がセレクタ232fから出力され、Dフリップフロップ234aに入力される。
また、セレクタ232cでは、「00」側の入力が選択されているので、data_sel[7:2](D21)がセレクタ232cから出力され、Dフリップフロップ234bに入力される。また、セレクタ232dでは、「00」側の入力が選択されているので、all 0(10ビットが全て0)がセレクタ232dから出力され、Dフリップフロップ234cに入力される。
Dフリップフロップ234a〜234cにクロックの入力があると、Dフリップフロップ234aからは「01」がNDATA_ENABLE[1:0]として出力され、Dフリップフロップ234bからはdata[7:2](D21)がDATA[5:0]として出力される。また、Dフリップフロップ234cからはall 0(10ビットが全て0)がDATA[15:6]として出力される。
なお、この例においては、このタイミング(プロセッサ40からアドレス値ADDRが入力されてから1cycle後)では、NDATA_ENABLE[1:0]が「01」であるため、伸長部203によるDATAの伸長はまだ行われない。
(2)第2データの読み出し
上述の通り、NDATA_ENABLE[1:0]が「01」となったため、セレクタ232a及び232bは、「01」側の入力が選択され、セレクタ232c、232d及び232fでは、「(not)00」側の入力が選択されることになる。
16ビットのアドレス値{110,ADDR[15:3]}=‘110・・・0’b=215+214がセレクタ232aからaddr[15:0]として出力され、ROM10は、図9(b)のaddr「3×M/4」に配置されている16ビットデータがdata[15:8]及びdata[7:0]として出力される。
また、セレクタ232bからは、ADDR[2]=「0」がbyte_selectとして出力されるので、セレクタ232eからは、data[7:0](D22を含む)がdata_sel[7:0]として出力される。
NDATA_ENABLE[1:0]は「01」であるため、セレクタ232fからはall 0(「00」)が出力され、Dフリップフロップ234aに入力される。また、セレクタ232cからは、DATA[5:0](D21)が出力され、Dフリップフロップ234bに入力される。また、セレクタ232dからは、{00,data_sel[7:0]}が出力され、Dフリップフロップ234cに入力される。
Dフリップフロップ234a〜234cにクロックの入力があると、Dフリップフロップ234aからは「00」がNDATA_ENABLE[1:0]として出力され、Dフリップフロップ234bからはD21がDATA[5:0]として出力される。また、Dフリップフロップ234cからは圧縮コードD20からD21を除いた残りのデータであるD22を含むデータがDATA[15:6]として出力される。
なお、この例においては、このタイミング(プロセッサ40からアドレス値ADDRが入力されてから2cycle後)で、NDATA_ENABLE[1:0]が「00」である。従って、この制御回路210aから出力されたDATA(DATA[5:0]及びDATA[15:6])が伸長部203により取得されて、伸長が行われることになる。
≪実施の形態3≫
以下では、実施の形態1で説明した第1演算及び第2演算の内容を変更した例を、実施の形態1との相違点を中心に説明する。
<1.機能構成>
図13は、実施の形態3に係る配置決定装置140の主要部の機能構成を示すブロック図であり、図14は、実施の形態3に係るアクセス装置240の主要部の機能構成を示すブロック図である。
図13に示すように、配置決定装置140は、実施の形態1に係る配置決定装置100の制御部110に代えて、制御部150を備える。この制御部150は、実施の形態1に係る制御部110の第1決定部111及び第2決定部112に代えて、第1決定部151及び第2決定部152を含む点で、配置決定装置100とは異なる。
また、図14に示すように、アクセス装置240は、実施の形態1に係るアクセス装置200の制御部210に代えて、制御部250を備える。この制御部250は、実施の形態1に係る制御部210の第1特定部211及び第2特定部212に代えて、第1特定部251及び第2特定部252を含む点で、アクセス装置200とは異なる。
具体的には、配置決定装置140の第1決定部151及びアクセス装置240の第1特定部251は、アドレス値ADDR_a及びアドレス値ADDR_bを数5に示すように表した場合において、数9で示すkの値に応じた演算を第1演算として行う点で、第1決定部111及び第1特定部211とは異なる。
[数9]
k=0:addr_a1=addr_b1=3×j
k=1:addr_a1=addr_b1=3×j+1/2
k=2:addr_a1=addr_b1=3×j+2
k=3:addr_a1=addr_b1=3×j+2+1/2
但し、j=0,1,・・・,M/4−1
また、配置決定装置140の第2決定部152及びアクセス装置240の第2特定部252は、アドレス値ADDR_a及びアドレス値ADDR_bを数5に示すように表した場合において、数10で示すkの値に応じた演算を第2演算として行う点で、第2決定部112及び第2特定部212と異なる。
[数10]
k=0,1:addr_a2=addr_b2=3×j+1
k=2,3:addr_a2=addr_b2=3×j+1+1/2
但し、j=0,1,・・・,M/4−1
<2.データ>
図15(a)は、M個のNビットの非圧縮コードそれぞれを圧縮した結果例を示す図である。
同図では、ADDRが「0」〜「7」である非圧縮コードA3〜H3を圧縮した結果、圧縮コードA30〜H30が得られ、圧縮コードC30及びE30のデータ長が、N/2−1ビットより大きいことを示している。
また、図15(b)は、各圧縮コード(A30〜H30)のROM10への配置例を示す図である。
各圧縮コードが配置されるROM10内の領域area20は、jの値が共通する「4×j」、「4×j+1」、「4×j+2」及び「4×j+3」となる連続する4つのアドレス値ADDR(但し、j=0,1,・・・,M/4−1)を1組として、組毎に第1領域と第2領域とを有する。
例えば、「0」〜「3」となる連続する4つのアドレス値ADDRからなる組の第1領域はarea21aであり、第2領域はarea22aである。また、例えば、「4」〜「7」となる連続する4つのアドレス値ADDRからなる組の第1領域はarea21bであり、第2領域はarea22bである。
なお、各第1領域(area21a、21b)は、実施の形態1に係る第1領域area1と同様に、その組に対応する各圧縮コードの第1データを格納する領域である。また、各第2領域(area22a、22b)は、実施の形態1に係る第2領域area2と同様に、その組に対応する各圧縮コードのうちデータ長がXaビットより大きい特定圧縮コードの第2データが配置される領域である。
図15(a)の例では、圧縮コードC30及びE30のデータ長はN/2−1より大きい。従って、図15(b)の例では、圧縮コードC30が、ROM10の第1領域area21a内と、第2領域area22a内とに、圧縮コードE30が、ROM10の第1領域area21b内と、第2領域area22b内とに分割して配置されている。
なお、数9を用いた第2データの配置決定方法については、以下の<3.動作>の<3−1.配置決定処理>及び<3−2.配置決定処理の具体例>において詳しく説明する。
<3.動作>
次に、配置決定装置140及びアクセス装置240の動作について説明する。
<3−1.配置決定処理>
まずは、配置決定装置140の配置決定処理について説明する。
図16は、配置決定装置140の配置決定処理を示すフローチャートである。
同図に示すように、配置決定装置140の配置決定処理は、図4に示す実施の形態1に係る配置決定装置100の配置決定処理のうちのステップS5及びS7の処理に代えて、ステップS51及びS52の処理を含む点で、配置決定装置100の配置決定処理とは異なる。従って、以下では、ステップS51及びS52の処理を中心に説明する。
ステップS1〜S4の処理を完了すると、制御部150の第1決定部151は、アドレス値ADDR_aに第1演算を施す(ステップS51)。即ち、第1決定部151は、アドレス値ADDR_aを数5に示すように表した場合において、数9で示すkの値に応じた演算を行う。
また、制御部150は、ステップS6の判定処理を行い、ステップS4で圧縮部102から受領したデータ長情報が示すデータ長がXaビットより大きい場合に(ステップS6:YES)、制御部150の第2決定部152は、アドレス値ADDR_aに第2演算を施す(ステップS52)。即ち、第2決定部152は、アドレス値ADDR_aを数5に示すように表した場合において、数10で示すkの値に応じた演算を行う。
ステップS52の処理を完了すると、制御部150はステップS8の処理に進む。
<3−2.配置決定処理の具体例>
上述した配置決定装置140の配置決定処理について、図15に示す例を用いて、図16に示すステップS51及びS52の処理内容を具体的に説明する。
(1)非圧縮コードA3についての処理
この例では、非圧縮コードA3のアドレス値ADDR_aは「4×j+0」(但しj=0)である。従って、第1決定部151は、数9に示すk=0の場合の演算を第1演算として実行する(ステップS51)。この第1演算の結果値addr_a1は、「0」になる。
また、この例では、圧縮部102から受領したデータ長情報が示すデータ長は、Xaビット以下である(ステップS6:NO)。従って、制御部150は、図15(b)に示すように、フラグ(0)とステップS4で受領した圧縮コード(A30)とを、ステップS51の第1演算の結果値addr_a1(0)が示す記憶装置20の圧縮コード用の領域22内の位置にアクセス部101を介して書き込む(ステップS8)。
(2)非圧縮コードB3についての処理
非圧縮コードB3を圧縮した圧縮コードB30についても、上記圧縮コードA30と同様に処理されるため、詳細な説明は省略するが、ステップS51の第1演算の結果値addr_a1は、「1/2」になる。従って、図15(b)に示すように、フラグ(0)とステップS4で受領した圧縮コード(B30)とが、第1演算の結果値addr_a1(1/2)が示す記憶装置20の圧縮コード用の領域22内の位置に配置されることになる。
(3)非圧縮コードC3についての処理
この例では、非圧縮コードC3のアドレス値ADDR_aは「4×j+2」(但しj=0)である。従って、第1決定部151は、数9に示すk=2の場合の演算を第1演算として実行する(ステップS51)。この第1演算の結果値addr_a1は、「2」になる。
また、この例では、圧縮部102から受領したデータ長情報が示すデータ長は、Xaビットより大きい(ステップS6:YES)。従って、第2決定部151は、数10に示すk=2の場合の演算を第2演算として実行する(ステップS52)。この第2演算の結果値addr_a2は、「1+1/2」になる。
従って、制御部150は、図15(b)に示すように、フラグ(1)とステップS4で受領した圧縮コード(C30)のうちのXaビット分(C31)とを、ステップS51の第1演算の結果値addr_a1(2)が示す記憶装置20の圧縮コード用の領域22内の位置にアクセス部101を介して書き込む。また、制御部150は、図15(b)に示すように、ステップS4で受領した圧縮コード(C30)からXaビット分(C31)を除いたデータ(C32)を、ステップS52の第2演算の結果値addr_a2(1+1/2)が示す記憶装置20の圧縮コード用の領域22内の位置にアクセス部101を介して書き込む(ステップS8)。
(4)非圧縮コードD3についての処理
非圧縮コードD3を圧縮した圧縮コードD30についても、上記圧縮コードA30と同様に処理されるため、詳細な説明は省略するが、ステップS51の第1演算の結果値addr_a1は、「2+1/2」になる。従って、図15(b)に示すように、フラグ(0)とステップS4で受領した圧縮コード(D30)とが、第1演算の結果値addr_a1(2+1/2)が示す記憶装置20の圧縮コード用の領域22内の位置に配置されることになる。
<3−3.アクセス処理>
次に、アクセス装置240のアクセス処理について説明する。
図17は、アクセス装置240のアクセス処理を示すフローチャートである。
同図に示すように、アクセス装置240のアクセス処理は、図5に示す実施の形態1に係るアクセス装置200のアクセス処理のうちのステップS12及びS15の処理に代えて、ステップS61及びS62の処理を含む点で、アクセス装置200のアクセス処理とは異なる。従って、以下では、ステップS61及びS62の処理を中心に説明する。
入力部201を介して、プロセッサ40から、所望する非圧縮コードのアドレス値ADDR_bを受け付けると(ステップS11:YES)、アクセス装置240の制御部250の第1特定部251は、アドレス値ADDR_bに第1演算を施す(ステップS61)。即ち、第1特定部251は、アドレス値ADDR_aを数5に示すように表した場合において、数9で示すkの値に応じた演算を行う。
また、制御部250は、ステップS13の第1データの読出処理及びステップS14の判定処理を行い、圧縮コードのデータ長がXaビットより大きい場合に(ステップS14:YES)、制御部250の第2特定部252は、アドレス値ADDR_bに第2演算を施す(ステップS62)。即ち、第2特定部252は、アドレス値ADDR_bを数5に示すように表した場合において、数10で示すkの値に応じた演算を行う。
ステップS62の処理を完了すると、制御部150はステップS16の処理に進む。
<3−4.アクセス処理の具体例>
上述したアクセス装置240のアクセス処理について、図15に示す例を用いて、図17に示すS61及びS62の処理内容を具体的に説明する。
以下では、プロセッサ40から、所望する非圧縮コードC3のアドレス値ADDR_b「2」を受領した場合を例にアクセス装置240のアクセス処理を説明する。
入力部201を介して、プロセッサ40から、所望する非圧縮コードのアドレス値ADDR_b「2」を受け付けると(ステップS11:YES)、アクセス装置240の制御部250の第1特定部251は、アドレス値ADDR_bに第1演算を施す(ステップS61)。この例では、非圧縮コードC2のアドレス値ADDR_bは「4×j+2」(但しj=0)であるため、数9に示すk=2の場合の演算を第1演算として実行する。この第1演算の結果値addr_b1は、「2」になる。
従って、制御部250は、読出部202を介して、第1演算の結果値addr_b1(2)が示すROM10の第1領域area21a内の位置から第1データ(フラグ「1」とC31)を読み出す(ステップS13)。
また、この例では、ステップS13で読み出した第1データのフラグの値が「1」なので、圧縮コードのデータ長がXaビットより大きいと判定する(ステップS14:YES)。
従って、制御部250の第2特定部252は、アドレス値ADDR_bに第2演算を施す(ステップS62)。この例では、数10に示すk=2の場合の演算を第2演算として実行し、この第2演算の結果値addr_b2は、「1+1/2」になる。
従って、制御部250は、読出部202を介して、第2演算の結果値addr_b2(1+1/2)が示すROM10の第2領域area22a内の位置から第2データ(C32を含む)を読み出す(ステップS16)。
以降、アクセス装置240は、実施の形態1に係るアクセス装置200と同様にステップS17〜S19の処理を行い、アクセス処理を終了する。
<4.考察>
実施の形態3に係る配置決定装置140によれば、実施の形態1に係る配置決定装置100の場合と同様に、アドレス値ADDR_aが「2×j」及び「2×j+1」(但し、j=0,1,・・・M/2)である2つの非圧縮コードを圧縮した各圧縮コードが共に特定圧縮コードでないことを条件に、各圧縮コードのROM10上の格納領域area20(図15(b)参照)の容量は、3×M×N/4ビットとなる。
なお、実施の形態3では、図15(b)に示すように、組毎に第1領域と第2領域とを連続して配置している。従って、以下説明する変形例3のように、アクセス装置240にROMキャッシュを備えるようにし、制御部250がこのROMキャッシュから各圧縮コードを読み出すようにした場合には、一度のアクセスで特定圧縮コードを読み出すことも可能になる。
≪変形例3≫
以下では、実施の形態3に係るアクセス装置240の制御部250を比較的簡単な構成の回路で実現するように変形した例を説明する。
なお、この変形例3に係るアクセス制御装置は、アクセス装置240の制御部250に代えて、制御回路250aを備える他、更にROMキャッシュ11を備える。
このROMキャッシュ11は、ROM10上の各圧縮コードのうちの少なくとも一部のコピーを格納しており、制御回路250aから読出部202を介して送出されるアドレス値「addr[15:0]」に対し、「addr+0」と、「addr+1」と、「addr+2」に格納されているデータを出力するものである。
即ち、この例では、制御回路250aは、プロセッサ40が所望の非圧縮コードを圧縮した圧縮コードをROMキャッシュ11から読み出す。
なお、以下では、説明を簡単にするため、キャッシュミスは発生しないものとする。
図18は、変形例3に係るアクセス装置の制御回路250aの回路構成を示す図である。
なお、同図では、入力部201を介してプロセッサ40から入力されるアドレス値を、「ADDR」と表記し、読出部202を介してROMキャッシュ11に送出されるアドレス値を「addr」と表記し、ADDR及びaddrは16ビットである例を示している。また、同図では、Nが16ビットであり、ROMキャッシュ11が16ビットのaddrに対してそれぞれが16ビットのdata0、data1、data2を出力する例を示している。
同図に示すように、変形例3に係るアクセス装置の制御回路250aは、加算器253と、セレクタ254a〜254cと、Dフリップフロップ255a及び255bとを含んで構成される回路である。
プロセッサ40からアドレス値ADDRが入力されてから1cycle後において、この制御回路250aから出力されているDATAを、伸長部203は、有効な圧縮コードとして取得し伸長することになる。
以下では、プロセッサ40から、図15(a)に示す非圧縮コードC3のアドレス値(2)が入力された場合を例に、制御回路250aの動作を具体的に説明する。
入力部201を介してプロセッサ40から、アドレス値ADDR[15:0]=‘0・・・010’b=2が入力されると、{00,ADDR[15:2]}=‘0・・・0’b=0と、{0,ADDR[15:2],0}=‘0・・・0’b=0とが加算器253に入力される。そして、加算器253から‘0・・・0’b=0がaddr[15:0]として出力される。
このaddr[15:0]に対して、ROMキャッシュ11からは、図15(b)のaddr「0」、「1」及び「2」に配置されている各16ビットデータが、data0[15:0]、data1[15:0]及びdata2[15:0]として出力される。
ADDR[1:0]が「10」なので、セレクタ254aでは、「10」側の入力が選択されており、data2[0]=1がINFOとして、セレクタ254aから出力される。また、data2[7:1](C31)がDATA[6:0]としてセレクタ254aから出力され、Dフリップフロップ255aに入力される。
また、ADDR[1]が「1」なので、セレクタ254bでは、「1」側の入力が選択されており、INFOが「1」なので、セレクタ254cでは、「1」側の入力が選択されている。従って、セレクタ254cからは、データC32を含む{0,data1[15:8]}が出力され、Dフリップフロップ255bに入力される。
Dフリップフロップ255a及び255bにクロックの入力があると、Dフリップフロップ255aからはDATA[6:0](C31)が出力され、Dフリップフロップ255bからはDATA[15:7](C32を含む)が出力される。
この制御回路250aから出力されたDATA(DATA[6:0]及びDATA[15:7])が伸長部203により取得されて、伸長が行われることになる。
以上説明したように、図15(b)に示すように、組毎に第1領域と第2領域とを連続して配置するようにすることで、変形例3に係る制御回路250aによれば、第1領域と第2領域とに分割して配置されている1つの特定圧縮コードを1cycleで読み出すことが可能になる。
≪補足≫
以上、本発明に係る配置決定装置、配置決定方法、データ構造、メモリ、アクセス装置及びメモリアクセス方法を、各実施の形態及び各変形例(以下、単に「実施の形態」ともいう)に基づいて説明したが、以下のように変形することも可能であり、本発明は上述した実施の形態で示した通りの配置決定装置、配置決定方法、データ構造、メモリ、アクセス装置及びメモリアクセス方法に限られないことは勿論である。
(1)実施の形態では、本発明に係るM個のNビットデータの一例として、図3(a)、図9(a)及び図15(a)に示すNビットの非圧縮コードを、本発明に係るM個のNビット未満の圧縮データの一例として、図3(a)、図9(a)及び図15(a)に示すNビット未満の圧縮コードを、それぞれ用いて説明した。しかしながら、本発明に係るM個のNビットデータ及びM個のNビット未満の圧縮データは、これ以外のデータであってもよい。
また、実施の形態では、Nが16である場合を例に説明したが、これに限らず、Nがこれより大きくても小さくてもよい。
また、フラグは、実施の形態1及び3では1ビットであり、実施の形態2では2ビットである例を用いて説明したが、これに限らず、フラグのビット長はこれらの例より大きくてもよい。
(2)実施の形態に係る配置決定装置は、各圧縮コードについてのROM10上の配置を決定するものとして説明し、また、実施の形態に係るアクセス装置は、このROM10にアクセスするものとして説明した。しかしながら、ROMに限らず、本発明に係る配置決定装置は、ROM以外の他のメモリへの各圧縮コードの配置を決定してもよいし、本発明に係るアクセス装置は、ROM以外の他のメモリへアクセスするものであってもよい。
(3)実施の形態1及び3では、第1データの最大データ長がN/2−1であり、実施の形態2では、第1データの最大データ長がN/2−2であるものとして説明した。しかしながら、実施の形態で説明した第1データの最大データ長は一例であり、これ以外であってもよい。
即ち、第1データの最大データ長は、実施の形態に係るROM10上のアドレスaddrの1アドレス分の領域(実施の形態ではNビット)をいくつの圧縮コードで共有するかを決定することによって決まることになる。
例えば、i個の圧縮コードで共有すると決定した場合には、実施の形態1及び3の第1データの最大データ長は、N/i−1とすることができ、実施の形態2の第1データの最大データ長は、N/i―2とすることができる。
実施の形態では、ROM10上のアドレスaddrの1アドレス分の領域(実施の形態ではNビット)を、2個の特定圧縮データで共有するものとして、第2データの最大データ長がN/2である例を説明した。
しかしながら、実施の形態で説明した第2データの最大データ長は一例であり、これ以外であってもよい。例えば、ROM10上のアドレスaddrの1アドレス分の領域を4個の特定圧縮データで共有する場合には、第2データの最大データ長をN/4とすることができ、1個の特定圧縮データで共有する場合には、第2データの最大データ長をNとすることができる。即ち、第1データが配置される第1領域におけるROM10上のアドレスaddrの1アドレス分の領域を共有する圧縮データの数と、第2データが配置される第2領域におけるROM10上のアドレスaddrの1アドレス分の領域を共有する特定圧縮データの数とは、同一の場合に限らず、異なってもよい。
また、第2データの先頭アドレスが、実施の形態1ではM/2(数2及び数4参照)、実施の形態2では、M/2及び3×M/4(数6〜数8参照)であるものとして説明した。しかしながら、これらは一例であり、この先頭アドレスは適宜変更することができる。
また、実施の形態3では、同じ組内の4つのアドレス値に係る各圧縮コードの第1データが配置される領域(例えば図15(b)のarea21a)の間に、第2データが配置される領域(例えば図15(b)のarea22a)が設定されるものとして説明した。しかしながら、この配置は一例であり、組毎に、第1データが配置される領域の近傍に第2データが配置される領域が設けられれば足りる。
例えば、第1データが配置される領域を連続して設定し、その領域に続けて第2データが配置される領域を設定してもよいし、第2データが配置される領域に続けて、第1データが配置される領域を設定してもよい。
また、実施の形態3では、1組に連続する4つのアドレス値が属するものとして説明したが、1組に属するアドレス値の数はこれに限らない。また、1組に属するアドレス値は、必ずしも連続しなくてもよい。
(4)実施の形態に係る配置決定装置は圧縮部102を含み、また、実施の形態に係るアクセス装置は伸長部203を含むものとして説明した。
しかしながら、圧縮部102は配置決定装置の必須の構成ではなく、他の装置で実現してもよい。その場合、例えば記憶装置20に他の装置で生成された各圧縮コードとそのデータ長を示す各データ長情報とを対応付けて格納するように変形する必要がある。そして、この変形に係る配置決定装置は、記憶装置20から読み出した各圧縮コードを圧縮コード用のメモリ領域22に決定した配置で格納することになる。
また、伸長部203はアクセス装置の必須の構成ではなく、他の装置で実現してもよい。
(5)変形例3に係るROMキャッシュ11は、ROM10上の各圧縮コードのうちの少なくとも一部のコピーを格納しており、制御回路250aから読出部202を介して送出されるアドレス値「addr」に対し、「addr+0」と、「addr+1」と、「addr+2」に格納されているデータを出力するものとして説明した。
しかしながら、ROMキャッシュ11を用いないようにしてもよい。即ち、変形例1及び2と同様にROM10から直接圧縮コードを読み出すようにしてもよい。但し、この場合、1つの特定圧縮コード全体の読出に、プロセッサ40からアドレス値ADDRが入力されてから2cycle必要になる。
また、各変形例では、説明の簡略化のために、厳密な入出力仕様については言及しなかったが、圧縮コードの読み書きのためのタイミングを調整するようにしたり、要求信号や応答信号等を追加したりしても勿論よい。
(6)実施の形態では、各特定圧縮データを、その特定圧縮データのうちのXビット(実施の形態1及び3では、Xaビット、実施の形態2では、Xbビット)分を第1データに含め、その特定圧縮データからXビットを除いた部分の全体を第2データとして、2つに分割して配置するものとして説明した。
しかしながら、実施の形態で説明した各特定圧縮データの分割数は一例であり、3つ以上に分割するようにしてもよい。
例えば、3つに分割する場合、特定圧縮データのうち、第1データに含まれるXcビット(Xc<N)分と、第2データに含まれるYビット(Y<N)分とを除いた部分の全体である第3データを、その特定圧縮データの基となった非圧縮コードの非圧縮ブロック中のアドレス値ADDR_aに第3演算を施した結果値が示すROM10等のメモリ位置に配置すればよい。
なお、第3演算は、第1演算及び第2演算とは異なる演算である。また、特定圧縮データのデータ長によっては、第3データは存在しない場合もあるため、第3データの有無を識別するために、第2データには、その特定圧縮データのデータ長がXc+Yビットより大きいことを示すフラグ(例えば1ビット)を含める必要がある。
(7)実施の形態において説明した各構成要素のうち、全部又は一部を1チップ又は複数チップの集積回路で実現してもよいし、コンピュータのプログラムで実現してもよいし、その他どのような形態で実現してもよい。
また、実施の形態1〜3において説明した各構成要素は、配置決定装置及びアクセス装置それぞれが有するプロセッサと協働することにより、その機能を実現する。
(8)実施の形態1〜3において説明した配置決定装置の配置決定処理(図4、10、16参照)及びアクセス装置のアクセス処理(図5、11、17参照)をプロセッサに実行させるためのプログラムを、記録媒体に記録し又は各種通信路等を介して、流通させ頒布することもできる。このような記録媒体には、ICカード、ハードディスク、光ディスク、フレキシブルディスク、ROM、フラッシュメモリ等がある。流通、頒布されたプログラムは、機器におけるプロセッサで読み取り可能なメモリ等に格納されることにより利用に供され、そのプロセッサがそのプログラムを実行することにより実施の形態1〜3で示した配置決定装置及びアクセス装置の各機能が実現される。
(9)実施の形態に係る配置決定装置及びアクセス装置に、上記(1)〜(8)の一部又は全部の変形を組み合わせて適用してもよい。
(10)以下、更に本発明の一実施形態及びその変形例と各効果について説明する。
(a)本発明の一実施形態に係る配置決定装置は、データブロックを構成するM個のNビットデータそれぞれを基に圧縮したM個のNビット未満の圧縮データについてのメモリ配置を決定する配置決定装置であって、M個の圧縮データのうち、データ長がXビット(X<N)以下である一般圧縮データそれぞれについては、当該一般圧縮データ全体と、少なくとも当該一般圧縮データのデータ長がXビット以下であることを示すフラグとからなるLビット(X<L<N)以下の第1データを、当該一般圧縮データの基となったNビットデータの前記データブロック内アドレス値に第1演算を施した結果値が示すメモリ位置に配置するよう決定し、M個の圧縮データのうち、データ長がXビットより大きい特定圧縮データそれぞれについては、当該特定圧縮データのうちのXビット分と、少なくとも当該特定圧縮データのデータ長がXビットより大きいことを示すフラグとからなるLビットの第1データを、当該特定圧縮データの基となったNビットデータの前記データブロック内アドレス値に第1演算を施した結果値が示すメモリ位置に配置するよう決定する第1決定手段と、前記特定圧縮データそれぞれについて、当該特定圧縮データから前記第1データに含まれるXビットを除いた部分の一部又は全体を含む第2データを、当該特定圧縮データの基となったNビットデータの前記データブロック内アドレス値に前記第1演算とは異なる第2演算を施した結果値が示すメモリ位置に配置するよう決定する第2決定手段とを備え、前記第2演算は、M個のNビットデータそれぞれの前記データブロック内アドレス値のうち、K個(K≦M)を1組とした各組について、同じ組内のいずれのアドレス値に当該第2演算を施しても同一の結果値が生じ、かつ他のいずれの組内の各アドレス値に当該第2演算を施して生じた結果値とも異なる結果値が生じる演算であることを特徴とする。
また、前記第1演算は、各結果値それぞれが、メモリ中の第1領域内の異なる位置を示すものであり、前記第2演算は、各結果値それぞれが、前記メモリ中の前記第1領域と連続する第2領域内の位置を示すものであることとしてもよい。
また、本発明の一実施形態に係る配置決定方法は、データブロックを構成するM個のNビットデータそれぞれを基に圧縮したM個のNビット未満の圧縮データについてのメモリ配置を決定する配置決定装置における配置決定方法であって、M個の圧縮データのうち、データ長がXビット(X<N)以下である一般圧縮データそれぞれについては、当該一般圧縮データ全体と、少なくとも当該一般圧縮データのデータ長がXビット以下であることを示すフラグとからなるLビット(X<L<N)以下の第1データを、当該一般圧縮データの基となったNビットデータの前記データブロック内アドレス値に第1演算を施した結果値が示すメモリ位置に配置するよう決定し、M個の圧縮データのうち、データ長がXビットより大きい特定圧縮データそれぞれについては、当該特定圧縮データのうちのXビット分と、少なくとも当該特定圧縮データのデータ長がXビットより大きいことを示すフラグとからなるLビットの第1データを、当該特定圧縮データの基となったNビットデータの前記データブロック内アドレス値に第1演算を施した結果値が示すメモリ位置に配置するよう決定する第1決定ステップと、前記特定圧縮データそれぞれについて、当該特定圧縮データから前記第1データに含まれるXビットを除いた部分の一部又は全体を含む第2データを、当該特定圧縮データの基となったNビットデータの前記データブロック内アドレス値に前記第1演算とは異なる第2演算を施した結果値が示すメモリ位置に配置するよう決定する第2決定ステップとを含み、前記第2演算は、M個のNビットデータそれぞれの前記データブロック内アドレス値のうち、K個(K≦M)を1組とした各組について、同じ組内のいずれのアドレス値に当該第2演算を施しても同一の結果値が生じ、かつ他のいずれの組内の各アドレス値に当該第2演算を施して生じた結果値とも異なる結果値が生じる演算であることを特徴とする。
この配置決定装置及び配置決定方法によれば、第2データが、第1データに含まれるXビットを除いた部分の全体であるとした場合において、各圧縮データを、その圧縮データの基となったNビットデータのデータブロック内アドレス値に所定の演算(第1演算又は第1演算及び第2演算)を施した結果値が示すメモリ位置に配置するよう決定する。
従って、この配置決定装置及び配置決定方法により決定された位置に各圧縮データが配置されているメモリから、プロセッサが所望するNビットデータに対応する圧縮データを、そのNビットデータのアドレス値に所定の演算を施した結果値が示すメモリ位置から読み出すことができる。つまり、プロセッサが所望するNビットデータに対応する圧縮データを、アドレス変換テーブルを用いることなく読み出すことが可能になる。
なお、第2データが、第1データに含まれるXビットを除いた部分の一部を含むものであるときには、その特定圧縮データから、第1データに含まれるXビットと第2データに含まれるその特定圧縮データを構成するデータとを除いた部分である第3データを、当該特定圧縮データの基となったNビットデータの前記データブロック内アドレス値に前記第1演算及び前記第2演算とは異なる第3演算を施した結果値が示すメモリ位置に配置するよう決定すればよい。
即ち、第2データが、第1データに含まれるXビットを除いた部分の一部を含むものである場合においても、その圧縮データの基となったNビットデータのデータブロック内アドレス値に所定の演算(この例では、第1演算、第2演算及び第3演算)を施した結果値が示すメモリ位置に配置することで、プロセッサが所望するNビットデータに対応する圧縮データを、アドレス変換テーブルを用いることなく読み出すことが可能になる。
(b)また、前記第1領域は、N×M/2ビットの領域であり、前記第1決定手段は、前記フラグをFビットとし、データ長がN/2−Fビットより大きい圧縮データを前記特定圧縮データとして、M個の圧縮データそれぞれについて、当該圧縮データの基となるNビットデータの前記データブロック内アドレス値を2で除算した結果値が示すメモリ位置に、前記第1データを配置するよう決定することとしてもよい。
この配置決定装置は、各圧縮データの第1データを配置するメモリ上の位置を、当該圧縮データの基となるNビットデータのデータブロック内アドレス値を2で除算するという簡単な演算の結果値により決定する。
即ち、この配置決定装置により決定された位置に各圧縮データが配置されているメモリから、プロセッサが所望するNビットデータに対応する圧縮データのうちの第1データをそのNビットデータのアドレス値に上述の簡単な演算を施した結果値が示すメモリ位置から読み出すことができる。
(c)また、前記第2領域は、N×M/4ビットの領域であり、前記第2演算は、M個のNビットデータそれぞれの前記データブロック内アドレス値のうち、2個を1組とした組毎に、N/2ビットずつずれたメモリ位置を示す結果値が生じる演算であることとしてもよい。
これにより、第2領域内をN/2ビット毎に分けた各領域は、同じ組に属する2個のブロック内アドレス値に係る2個の圧縮データの第2データを配置する領域として共有されることになる。
従って、同じ組に属する2個のブロック内アドレス値に係る2個の圧縮データが共に特定圧縮データでないことを条件に、この配置決定装置によれば、プロセッサが所望するNビットデータに対応する圧縮データを読み出す際にはアドレス変換テーブルを用いることなく、M個の圧縮データの配置に要するメモリ容量を抑えることができる。
(d)また、前記第2領域は、N×M×3/8ビットの領域であり、前記第2演算は、M個のNビットデータそれぞれの前記データブロック内アドレス値のうち、4個を1組とした組毎に、3個のメモリ位置を示す結果値が生じる演算であり、前記第2決定手段は、各特定圧縮データそれぞれについて、当該特定圧縮データの前記第2データを、当該特定圧縮データの基となるNビットデータの前記データブロック内アドレス値に第2演算を施した結果値が示す3個のメモリ位置のうち、他の特定圧縮データの前記第2データが配置されていない1つのメモリ位置に配置するよう決定し、前記第1データに含まれるフラグは、更に当該第1データを含む前記特定圧縮データの前記第2データが、前記3個のメモリ位置のうち、いずれのメモリ位置に配置されているかを示す2ビットのデータであることとしてもよい。
これにより、同じ組に属する4個のブロック内アドレス値に係る4個の圧縮データの第2データを配置する領域として3つの領域が共有されることになる。
従って、同じ組に属する4個のブロック内アドレス値に係る4個の圧縮データの全てが特定圧縮データでないことを条件に、この配置決定装置によれば、プロセッサが所望するNビットデータに対応する圧縮データを読み出す際にはアドレス変換テーブルを用いることなく、M個の圧縮データの配置に要するメモリ容量を抑えることができる。
また、プロセッサが所望するNビットデータに対応する圧縮データが特定圧縮データである場合に、その特定圧縮データの第1データを読み出し、フラグを参照することで、上記3つの領域のうちのいずれの領域にその特定圧縮データの第2データが配置されているかを簡単に判断することができる。
(e)また、前記第1演算及び前記第2演算は、M個のNビットデータそれぞれの前記データブロック内アドレス値のうち、J個(K≦J≦M)を1組とした各組について、同じ組内の各アドレス値に当該第1演算及び当該第2演算を施すと、メモリ中の第1領域内の位置を示す結果値が生じ、かつ他の1つの組内の各アドレス値に当該第1演算及び当該第2演算を施すと前記メモリ中の前記第1領域とは異なる第2領域内の位置を示す結果値が生じる演算であることとしてもよい。
この配置決定装置によれば、特定圧縮データを構成する第1データ及び第2データを近傍に配置することができる。
従って、この配置決定装置により決定された位置に各圧縮データが配置されているメモリが、例えば、メモリ位置を指定する1つのアドレス値に対して、複数アドレス分のデータを出力することが可能な、所謂バースト転送機能を有するメモリ等である場合には、一度のアクセスで、1つの特定圧縮データ全体を読み出せる可能性を高めることができる。
(f)また、前記第2演算は、M個のNビットデータそれぞれの前記データブロック内アドレス値のうち、連続する4個のアドレス値を1組とした各組について、同じ組内の第1及び第2のアドレス値に当該第2演算を施すと、前記第1領域内の部分領域内の同一位置を示す同一の結果値が生じ、かつ当該同じ組内の第3及び第4のアドレス値に当該第2演算を施すと、前記第1及び第2のアドレス値に当該第2演算を施した結果値が示す同一のメモリ位置からN/2ビットずれた前記部分領域内の同一の位置を示す同一の結果値が生じる演算であり、前記第1演算は、M個のNビットデータそれぞれの前記データブロック内アドレス値のうち、4個を1組とした各組について、各アドレス値に当該第1演算を施すと、前記第1領域内の前記部分領域とは異なる位置を示す結果値が生じる演算であることとしてもよい。
この配置決定装置は、ブロック内アドレス値が連続する4つのアドレス値に係る各圧縮データを同一のメモリ範囲に配置する。
従って、この配置決定装置により決定された位置に各圧縮データが配置されているメモリが、例えば、上述の所謂バースト転送機能を有するメモリ等である場合には、一度のアクセスで、連続する4つのデータブロック内アドレス値に係る各圧縮データをまとめて読み出せる可能性を高めることができる。
よって、この配置決定装置により決定された各圧縮データの配置は、近傍のアドレス値に係る圧縮データを読み出すようなケースに特に有用である。例えば、プログラムの実行には、空間的局所性といった性質があるため、当該圧縮データが圧縮プログラムコードであるような場合に利用できる。
(g)また、本発明の一実施形態に係るデータ構造は、連続メモリ領域に配置されて動作するプログラムコードブロックの構成要素としてのM個のNビットデータそれぞれを基に圧縮したM個のNビット未満の圧縮データについてのメモリ配置用のデータ構造であって、M個の圧縮データのうち、データ長がXビット(X<N)以下である一般圧縮データそれぞれについては、当該一般圧縮データ全体と、少なくとも当該一般圧縮データのデータ長がXビット以下であることを示すフラグとからなるLビット(X<L<N)以下の第1データを、当該一般圧縮データの基となったNビットデータの前記連続メモリ領域におけるアドレス値に第1演算を施した結果値が示すメモリ位置に配置し、M個の圧縮データのうち、データ長がXビットより大きい特定圧縮データそれぞれについては、当該特定圧縮データのうちのXビット分と、少なくとも当該特定圧縮データのデータ長がXビットより大きいことを示すフラグとからなるLビットの第1データを、当該特定圧縮データの基となったNビットデータの前記連続メモリ領域におけるアドレス値に第1演算を施した結果値が示すメモリ位置に配置し、前記特定圧縮データそれぞれについて、当該特定圧縮データから前記第1データに含まれるXビットを除いた部分の一部又は全体を含む第2データを、当該特定圧縮データの基となったNビットデータの前記連続メモリ領域におけるアドレス値に、前記第1演算とは異なる第2演算を施した結果値が示すメモリ位置に配置し、前記第2演算は、M個のNビットデータそれぞれのアドレス値のうち、K個(K≦M)を1組とした各組について、同じ組内のいずれのアドレス値に当該第2演算を施しても同一の結果値が生じ、かつ他のいずれの組内の各アドレス値に当該第2演算を施して生じた結果値とも異なる結果値が生じる演算であることを特徴とする。
このデータ構造によれば、第2データが、第1データに含まれるXビットを除いた部分の全体であるとした場合において、このデータ構造で各圧縮データが配置されているメモリから、プロセッサが所望するNビットデータに対応する圧縮データを、アドレス変換テーブルを用いることなく読み出すことが可能になる。
(h)また、本発明の一実施形態に係るメモリは、データブロックを構成するM個のNビットデータそれぞれを基に圧縮したM個のNビット未満の圧縮データそれぞれが配置されたメモリであって、第1メモリ領域と第2メモリ領域とを有し、前記第1メモリ領域は、M個の圧縮データのうち、データ長がXビット(X<N)以下である一般圧縮データそれぞれについては、当該一般圧縮データ全体と、少なくとも当該一般圧縮データのデータ長がXビット以下であることを示すフラグとからなるLビット(X<L<N)以下の第1データが配置された、当該一般圧縮データの基となるNビットデータの前記データブロック内アドレス値に第1演算を施した結果値が示す領域であり、M個の圧縮データのうち、データ長がXビットより大きい特定圧縮データそれぞれについては、当該特定圧縮データのうちのXビット分と、少なくとも当該特定圧縮データのデータ長がXビットより大きいことを示すフラグとからなるLビットの第1データが配置された、当該特定圧縮データの基となるNビットデータの前記データブロック内アドレス値に第1演算を施した結果値が示す領域であり、前記第2メモリ領域は、前記特定圧縮データそれぞれについて、当該特定圧縮データから前記第1データに含まれるXビットを除いた部分の一部又は全体を含む第2データが配置された、当該特定圧縮データの基となるNビットデータの前記データブロック内アドレス値に前記第1演算とは異なる第2演算を施した結果値が示す領域であり、前記第2演算は、M個のNビットデータそれぞれの前記データブロック内アドレス値のうち、K個(K≦M)を1組とした各組について、同じ組内のいずれのアドレス値に当該第2演算を施しても同一の結果値が生じ、かつ他のいずれの組内の各アドレス値に当該第2演算を施して生じた結果値とも異なる結果値が生じる演算であることを特徴とする。
また、前記メモリはROM(Read Only Memory)であることとしてもよい。
このメモリによれば、第2データが、第1データに含まれるXビットを除いた部分の全体であるとした場合において、プロセッサが所望するNビットデータに対応する圧縮データを、アドレス変換テーブルを用いることなく読み出すことが可能になる。
(i)また、本発明の一実施形態に係るアクセス装置は、上記(h)記載のメモリにアクセスするアクセス装置であって、プロセッサの1つのNビットデータにアクセスするためのアドレス値を受け付ける入力手段と、前記入力手段が受け付けたアドレス値に第1演算を施し、当該第1演算の結果値が示す、前記1つのNビットデータを基に圧縮した前記圧縮データの全体又はXビット分と、少なくとも当該圧縮データがXビットより大きいか否かを示すフラグとからなるLビット以下の第1データが配置されている前記メモリ上の位置を特定する第1特定手段と、前記第1特定手段が特定した前記メモリ上の位置に配置されている前記第1データ内の前記フラグが、前記圧縮データがXビットより大きいことを示す場合に、前記入力手段が受け付けたアドレス値に前記第1演算とは異なる第2演算を施し、当該第2演算の結果値が示す、前記圧縮データから前記第1データに含まれるXビットを除いた部分の一部又は全体を含む第2データが配置されている前記メモリ上の位置を特定する第2特定手段と、前記第1特定手段が特定した前記メモリ上の位置に配置されている前記第1データに含まれる前記圧縮データの全体又はXビット分を出力すると共に、前記第2特定手段が前記メモリ上の位置を特定した場合には、当該メモリ上の位置に配置されている第2データを出力する出力手段とを備え、前記第2演算は、M個のNビットデータそれぞれの前記データブロック内アドレス値のうち、K個(K≦M)を1組とした各組について、同じ組内のいずれのアドレス値に当該第2演算を施しても同一の結果値が生じ、かつ他のいずれの組内の各アドレス値に当該第2演算を施して生じた結果値とも異なる結果値が生じる演算であることを特徴とする。
また、本発明の一実施形態に係るメモリアクセス方法は、上記(h)記載のメモリにアクセスするアクセス装置におけるメモリアクセス方法であって、プロセッサの1つのNビットデータにアクセスするためのアドレス値を受け付ける入力ステップと、前記入力ステップで受け付けたアドレス値に第1演算を施し、当該第1演算の結果値が示す、前記1つのNビットデータを基に圧縮した前記圧縮データの全体又はXビット分と、少なくとも当該圧縮データがXビットより大きいか否かを示すフラグとからなるLビット以下の第1データが配置されている前記メモリ上の位置を特定する第1特定ステップと、前記第1特定ステップで特定した前記メモリ上の位置に配置されている前記第1データ内の前記フラグが、前記圧縮データがXビットより大きいことを示す場合に、前記入力ステップで受け付けたアドレス値に前記第1演算とは異なる第2演算を施し、当該第2演算の結果値が示す、前記圧縮データから前記第1データに含まれるXビットを除いた部分の一部又は全体を含む第2データが配置されている前記メモリ上の位置を特定する第2特定ステップと、前記第1特定ステップで特定した前記メモリ上の位置に配置されている前記第1データのうちの全体又はXビット分を出力すると共に、前記第2特定ステップで前記メモリ上の位置を特定した場合には、当該メモリ上の位置に配置されている第2データを出力する出力ステップとを含み、前記第2演算は、M個のNビットデータそれぞれの前記データブロック内アドレス値のうち、K個(K≦M)を1組とした各組について、同じ組内のいずれのアドレス値に当該第2演算を施しても同一の結果値が生じ、かつ他のいずれの組内の各アドレス値に当該第2演算を施して生じた結果値とも異なる結果値が生じる演算であることを特徴とする。
このアクセス装置及びメモリアクセス方法によれば、第2データが、第1データに含まれるXビットを除いた部分の全体であるとした場合において、プロセッサが所望するNビットデータに対応する圧縮データを、アドレス変換テーブルを用いることなく読み出すことが可能になる。
(j)また、前記アクセス装置は、更に圧縮データを伸長し、得られたNビットデータを前記プロセッサに送出する伸長手段を備えることとしてもよい。
このアクセス装置によれば、プロセッサは、圧縮データを伸長して得られた所望のNビットデータを取得することができる。
本発明に係る配置決定装置は、圧縮データについてのメモリ配置を決定する際に利用される。
10 ROM
20 記憶装置
30 書込装置
100、120、140 配置決定装置
101 アクセス部
102 圧縮部
110、130、150、210、230、250 制御部
111、151 第1決定部
112、131、152 第2決定部
200、220、240 アクセス装置
201 入力部
202 読出部
203 伸長部
211、251 第1特定部
212、231、252 第2特定部
213 出力部

Claims (11)

  1. データブロックを構成するM個のNビットデータそれぞれを基に圧縮したM個のNビット未満の圧縮データについてのメモリ配置を決定する配置決定装置であって、
    M個の圧縮データのうち、データ長がXビット(X<N)以下である一般圧縮データそれぞれについては、当該一般圧縮データ全体と、少なくとも当該一般圧縮データのデータ長がXビット以下であることを示すフラグとからなるLビット(X<L<N)以下の第1データを、当該一般圧縮データの基となったNビットデータの前記データブロック内アドレス値に第1演算を施した結果値が示すメモリ位置に配置するよう決定し、
    M個の圧縮データのうち、データ長がXビットより大きい特定圧縮データそれぞれについては、当該特定圧縮データのうちのXビット分と、少なくとも当該特定圧縮データのデータ長がXビットより大きいことを示すフラグとからなるLビットの第1データを、当該特定圧縮データの基となったNビットデータの前記データブロック内アドレス値に第1演算を施した結果値が示すメモリ位置に配置するよう決定する第1決定手段と、
    前記特定圧縮データそれぞれについて、当該特定圧縮データから前記第1データに含まれるXビットを除いた部分の一部又は全体を含む第2データを、当該特定圧縮データの基となったNビットデータの前記データブロック内アドレス値に前記第1演算とは異なる第2演算を施した結果値が示すメモリ位置に配置するよう決定する第2決定手段とを備え、
    前記第2演算は、M個のNビットデータそれぞれの前記データブロック内アドレス値のうち、K個(K≦M)を1組とした各組について、同じ組内のいずれのアドレス値に当該第2演算を施しても同一の結果値が生じ、かつ他のいずれの組内の各アドレス値に当該第2演算を施して生じた結果値とも異なる結果値が生じる演算である
    ことを特徴とする配置決定装置。
  2. 前記第1演算は、各結果値それぞれが、メモリ中の第1領域内の異なる位置を示すものであり、
    前記第2演算は、各結果値それぞれが、前記メモリ中の前記第1領域と連続する第2領域内の位置を示すものである
    ことを特徴とする請求項1記載の配置決定装置。
  3. 前記第1領域は、N×M/2ビットの領域であり、
    前記第1決定手段は、
    前記フラグをFビットとし、データ長がN/2−Fビットより大きい圧縮データを前記特定圧縮データとして、M個の圧縮データそれぞれについて、当該圧縮データの基となるNビットデータの前記データブロック内アドレス値を2で除算した結果値が示すメモリ位置に、前記第1データを配置するよう決定する
    ことを特徴とする請求項2記載の配置決定装置。
  4. 前記第2領域は、N×M/4ビットの領域であり、
    前記第2演算は、
    M個のNビットデータそれぞれの前記データブロック内アドレス値のうち、2個を1組とした組毎に、N/2ビットずつずれたメモリ位置を示す結果値が生じる演算である
    ことを特徴とする請求項3記載の配置決定装置。
  5. 前記第2領域は、N×M×3/8ビットの領域であり、
    前記第2演算は、M個のNビットデータそれぞれの前記データブロック内アドレス値のうち、4個を1組とした組毎に、3個のメモリ位置を示す結果値が生じる演算であり、
    前記第2決定手段は、
    各特定圧縮データそれぞれについて、当該特定圧縮データの前記第2データを、当該特定圧縮データの基となるNビットデータの前記データブロック内アドレス値に第2演算を施した結果値が示す3個のメモリ位置のうち、他の特定圧縮データの前記第2データが配置されていない1つのメモリ位置に配置するよう決定し、
    前記第1データに含まれるフラグは、更に
    当該第1データを含む前記特定圧縮データの前記第2データが、前記3個のメモリ位置のうち、いずれのメモリ位置に配置されているかを示す2ビットのデータである
    ことを特徴とする請求項3記載の配置決定装置。
  6. 前記第1演算及び前記第2演算は、
    M個のNビットデータそれぞれの前記データブロック内アドレス値のうち、J個(K≦J≦M)を1組とした各組について、同じ組内の各アドレス値に当該第1演算及び当該第2演算を施すと、メモリ中の第1領域内の位置を示す結果値が生じ、かつ他の1つの組内の各アドレス値に当該第1演算及び当該第2演算を施すと前記メモリ中の前記第1領域とは異なる第2領域内の位置を示す結果値が生じる演算である
    ことを特徴とする請求項1記載の配置決定装置。
  7. 前記第2演算は、
    M個のNビットデータそれぞれの前記データブロック内アドレス値のうち、連続する4個のアドレス値を1組とした各組について、同じ組内の第1及び第2のアドレス値に当該第2演算を施すと、前記第1領域内の部分領域内の同一位置を示す同一の結果値が生じ、かつ当該同じ組内の第3及び第4のアドレス値に当該第2演算を施すと、前記第1及び第2のアドレス値に当該第2演算を施した結果値が示す同一のメモリ位置からN/2ビットずれた前記部分領域内の同一の位置を示す同一の結果値が生じる演算であり、
    前記第1演算は、
    M個のNビットデータそれぞれの前記データブロック内アドレス値のうち、4個を1組とした各組について、各アドレス値に当該第1演算を施すと、前記第1領域内の前記部分領域とは異なる位置を示す結果値が生じる演算である
    ことを特徴とする請求項6記載の配置決定装置。
  8. データブロックを構成するM個のNビットデータそれぞれを基に圧縮したM個のNビット未満の圧縮データについてのメモリ配置を決定する配置決定装置における配置決定方法であって、
    M個の圧縮データのうち、データ長がXビット(X<N)以下である一般圧縮データそれぞれについては、当該一般圧縮データ全体と、少なくとも当該一般圧縮データのデータ長がXビット以下であることを示すフラグとからなるLビット(X<L<N)以下の第1データを、当該一般圧縮データの基となったNビットデータの前記データブロック内アドレス値に第1演算を施した結果値が示すメモリ位置に配置するよう決定し、
    M個の圧縮データのうち、データ長がXビットより大きい特定圧縮データそれぞれについては、当該特定圧縮データのうちのXビット分と、少なくとも当該特定圧縮データのデータ長がXビットより大きいことを示すフラグとからなるLビットの第1データを、当該特定圧縮データの基となったNビットデータの前記データブロック内アドレス値に第1演算を施した結果値が示すメモリ位置に配置するよう決定する第1決定ステップと、
    前記特定圧縮データそれぞれについて、当該特定圧縮データから前記第1データに含まれるXビットを除いた部分の一部又は全体を含む第2データを、当該特定圧縮データの基となったNビットデータの前記データブロック内アドレス値に前記第1演算とは異なる第2演算を施した結果値が示すメモリ位置に配置するよう決定する第2決定ステップとを含み、
    前記第2演算は、M個のNビットデータそれぞれの前記データブロック内アドレス値のうち、K個(K≦M)を1組とした各組について、同じ組内のいずれのアドレス値に当該第2演算を施しても同一の結果値が生じ、かつ他のいずれの組内の各アドレス値に当該第2演算を施して生じた結果値とも異なる結果値が生じる演算である
    ことを特徴とする配置決定方法。
  9. データブロックを構成するM個のNビットデータそれぞれを基に圧縮したM個のNビット未満の圧縮データそれぞれが配置されたメモリにアクセスするアクセス装置であって、
    前記メモリは、第1メモリ領域と第2メモリ領域とを有し、
    前記第1メモリ領域は、
    M個の圧縮データのうち、データ長がXビット(X<N)以下である一般圧縮データそれぞれについては、当該一般圧縮データ全体と、少なくとも当該一般圧縮データのデータ長がXビット以下であることを示すフラグとからなるLビット(X<L<N)以下の第1データが配置された、当該一般圧縮データの基となるNビットデータの前記データブロック内アドレス値に第1演算を施した結果値が示す領域であり、
    M個の圧縮データのうち、データ長がXビットより大きい特定圧縮データそれぞれについては、当該特定圧縮データのうちのXビット分と、少なくとも当該特定圧縮データのデータ長がXビットより大きいことを示すフラグとからなるLビットの第1データが配置された、当該特定圧縮データの基となるNビットデータの前記データブロック内アドレス値に第1演算を施した結果値が示す領域であり、
    前記第2メモリ領域は、
    前記特定圧縮データそれぞれについて、当該特定圧縮データから前記第1データに含まれるXビットを除いた部分の一部又は全体を含む第2データが配置された、当該特定圧縮データの基となるNビットデータの前記データブロック内アドレス値に前記第1演算とは異なる第2演算を施した結果値が示す領域であり、
    前記第2演算は、M個のNビットデータそれぞれの前記データブロック内アドレス値のうち、K個(K≦M)を1組とした各組について、同じ組内のいずれのアドレス値に当該第2演算を施しても同一の結果値が生じ、かつ他のいずれの組内の各アドレス値に当該第2演算を施して生じた結果値とも異なる結果値が生じる演算であり、
    前記アクセス装置は、
    プロセッサの1つのNビットデータにアクセスするためのアドレス値を受け付ける入力手段と、
    前記入力手段が受け付けたアドレス値に第1演算を施し、当該第1演算の結果値が示す、前記1つのNビットデータを基に圧縮した前記圧縮データの全体又はXビット分と、少なくとも当該圧縮データがXビットより大きいか否かを示すフラグとからなるLビット以下の第1データが配置されている前記メモリ上の位置を特定する第1特定手段と、
    前記第1特定手段が特定した前記メモリ上の位置に配置されている前記第1データ内の前記フラグが、前記圧縮データがXビットより大きいことを示す場合に、前記入力手段が受け付けたアドレス値に前記第1演算とは異なる第2演算を施し、当該第2演算の結果値が示す、前記圧縮データから前記第1データに含まれるXビットを除いた部分の一部又は全体を含む第2データが配置されている前記メモリ上の位置を特定する第2特定手段と、
    前記第1特定手段が特定した前記メモリ上の位置に配置されている前記第1データに含まれる前記圧縮データの全体又はXビット分を出力すると共に、前記第2特定手段が前記メモリ上の位置を特定した場合には、当該メモリ上の位置に配置されている第2データを出力する出力手段とを備え、
    前記第2演算は、M個のNビットデータそれぞれの前記データブロック内アドレス値のうち、K個(K≦M)を1組とした各組について、同じ組内のいずれのアドレス値に当該第2演算を施しても同一の結果値が生じ、かつ他のいずれの組内の各アドレス値に当該第2演算を施して生じた結果値とも異なる結果値が生じる演算である
    ことを特徴とするアクセス装置。
  10. 前記アクセス装置は、更に
    圧縮データを伸長し、得られたNビットデータを前記プロセッサに送出する伸長手段を備える
    ことを特徴とする請求項9記載のアクセス装置。
  11. データブロックを構成するM個のNビットデータそれぞれを基に圧縮したM個のNビット未満の圧縮データそれぞれが配置されたメモリにアクセスするアクセス装置におけるメモリアクセス方法であって、
    前記メモリは、第1メモリ領域と第2メモリ領域とを有し、
    前記第1メモリ領域は、
    M個の圧縮データのうち、データ長がXビット(X<N)以下である一般圧縮データそれぞれについては、当該一般圧縮データ全体と、少なくとも当該一般圧縮データのデータ長がXビット以下であることを示すフラグとからなるLビット(X<L<N)以下の第1データが配置された、当該一般圧縮データの基となるNビットデータの前記データブロック内アドレス値に第1演算を施した結果値が示す領域であり、
    M個の圧縮データのうち、データ長がXビットより大きい特定圧縮データそれぞれについては、当該特定圧縮データのうちのXビット分と、少なくとも当該特定圧縮データのデータ長がXビットより大きいことを示すフラグとからなるLビットの第1データが配置された、当該特定圧縮データの基となるNビットデータの前記データブロック内アドレス値に第1演算を施した結果値が示す領域であり、
    前記第2メモリ領域は、
    前記特定圧縮データそれぞれについて、当該特定圧縮データから前記第1データに含まれるXビットを除いた部分の一部又は全体を含む第2データが配置された、当該特定圧縮データの基となるNビットデータの前記データブロック内アドレス値に前記第1演算とは異なる第2演算を施した結果値が示す領域であり、
    前記第2演算は、M個のNビットデータそれぞれの前記データブロック内アドレス値のうち、K個(K≦M)を1組とした各組について、同じ組内のいずれのアドレス値に当該第2演算を施しても同一の結果値が生じ、かつ他のいずれの組内の各アドレス値に当該第2演算を施して生じた結果値とも異なる結果値が生じる演算であり、
    前記メモリアクセス方法は、
    プロセッサの1つのNビットデータにアクセスするためのアドレス値を受け付ける入力ステップと、
    前記入力ステップで受け付けたアドレス値に第1演算を施し、当該第1演算の結果値が示す、前記1つのNビットデータを基に圧縮した前記圧縮データの全体又はXビット分と、少なくとも当該圧縮データがXビットより大きいか否かを示すフラグとからなるLビット以下の第1データが配置されている前記メモリ上の位置を特定する第1特定ステップと、
    前記第1特定ステップで特定した前記メモリ上の位置に配置されている前記第1データ内の前記フラグが、前記圧縮データがXビットより大きいことを示す場合に、前記入力ステップで受け付けたアドレス値に前記第1演算とは異なる第2演算を施し、当該第2演算の結果値が示す、前記圧縮データから前記第1データに含まれるXビットを除いた部分の一部又は全体を含む第2データが配置されている前記メモリ上の位置を特定する第2特定ステップと、
    前記第1特定ステップで特定した前記メモリ上の位置に配置されている前記第1データのうちの全体又はXビット分を出力すると共に、前記第2特定ステップで前記メモリ上の位置を特定した場合には、当該メモリ上の位置に配置されている第2データを出力する出力ステップとを含み、
    前記第2演算は、M個のNビットデータそれぞれの前記データブロック内アドレス値のうち、K個(K≦M)を1組とした各組について、同じ組内のいずれのアドレス値に当該第2演算を施しても同一の結果値が生じ、かつ他のいずれの組内の各アドレス値に当該第2演算を施して生じた結果値とも異なる結果値が生じる演算である
    ことを特徴とするメモリアクセス方法。
JP2013519363A 2011-06-10 2012-05-21 配置決定装置、配置決定方法、データ構造、メモリ、アクセス装置及びメモリアクセス方法 Active JP5895229B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2013519363A JP5895229B2 (ja) 2011-06-10 2012-05-21 配置決定装置、配置決定方法、データ構造、メモリ、アクセス装置及びメモリアクセス方法

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
JP2011130153 2011-06-10
JP2011130153 2011-06-10
JP2013519363A JP5895229B2 (ja) 2011-06-10 2012-05-21 配置決定装置、配置決定方法、データ構造、メモリ、アクセス装置及びメモリアクセス方法
PCT/JP2012/003293 WO2012169124A1 (ja) 2011-06-10 2012-05-21 配置決定装置、配置決定方法、データ構造、メモリ、アクセス装置及びメモリアクセス方法

Publications (2)

Publication Number Publication Date
JPWO2012169124A1 JPWO2012169124A1 (ja) 2015-02-23
JP5895229B2 true JP5895229B2 (ja) 2016-03-30

Family

ID=47295717

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2013519363A Active JP5895229B2 (ja) 2011-06-10 2012-05-21 配置決定装置、配置決定方法、データ構造、メモリ、アクセス装置及びメモリアクセス方法

Country Status (4)

Country Link
US (1) US9519599B2 (ja)
JP (1) JP5895229B2 (ja)
CN (1) CN103597454B (ja)
WO (1) WO2012169124A1 (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9141538B2 (en) * 2010-07-07 2015-09-22 Marvell World Trade Ltd. Apparatus and method for generating descriptors to transfer data to and from non-volatile semiconductor memory of a storage drive

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3170312B2 (ja) * 1991-07-29 2001-05-28 キヤノン株式会社 画像処理装置
JPH06222984A (ja) * 1993-01-22 1994-08-12 Mitsubishi Electric Corp 読み出し専用メモリ
CN1099081C (zh) * 1994-01-29 2003-01-15 世嘉企业股份有限公司 信息处理装置
JPH0922353A (ja) * 1995-07-05 1997-01-21 Toshiba Corp 1チップ・マイクロコンピュータおよびその命令コード格納方法
JP3749507B2 (ja) * 2002-07-01 2006-03-01 株式会社ルネサステクノロジ 圧縮コードを処理するマイクロコントローラ
US7203935B2 (en) * 2002-12-05 2007-04-10 Nec Corporation Hardware/software platform for rapid prototyping of code compression technologies
US7162584B2 (en) * 2003-12-29 2007-01-09 Intel Corporation Mechanism to include hints within compressed data
JP4755642B2 (ja) 2004-04-26 2011-08-24 ストアウィズ インク 記憶のためのファイル圧縮および圧縮ファイルの操作の方法およびシステム
US7533234B2 (en) * 2005-05-13 2009-05-12 Intel Corporation Method and apparatus for storing compressed code without an index table
EP1939751A1 (en) * 2006-12-22 2008-07-02 Telefonaktiebolaget LM Ericsson (publ) Storing compressed data
US8706951B2 (en) * 2008-07-18 2014-04-22 Marvell World Trade Ltd. Selectively accessing faster or slower multi-level cell memory
JP2010287114A (ja) * 2009-06-12 2010-12-24 Toshiba Corp データ格納方法及びデータ格納装置
CN101692349A (zh) * 2009-10-23 2010-04-07 中兴通讯股份有限公司 一种设备及其进行数据存储和启动的方法
TWI459197B (zh) * 2011-04-21 2014-11-01 Phison Electronics Corp 資料寫入方法、記憶體控制器與記憶體儲存裝置

Also Published As

Publication number Publication date
US9519599B2 (en) 2016-12-13
CN103597454B (zh) 2016-02-03
US20140089622A1 (en) 2014-03-27
CN103597454A (zh) 2014-02-19
WO2012169124A1 (ja) 2012-12-13
JPWO2012169124A1 (ja) 2015-02-23

Similar Documents

Publication Publication Date Title
JP6370988B2 (ja) 圧縮されたデータセグメントのキャッシュライン小型化
US6704852B2 (en) Control device applicable to flash memory card and method for building partial lookup table
TWI705695B (zh) 針對片上系統中的圖像幀的中央凹型壓縮的系統和方法
KR20170097609A (ko) 압축된 데이터 백그라운드를 캐싱하는 장치, 시스템 및 방법
CN102112973B (zh) 协调装置、协调系统、协调方法、半导体集成电路及图像处理装置
US20100250864A1 (en) Method And Apparatus For Compressing And Decompressing Data
CN108052643B (zh) 基于LSM Tree结构的数据存储方法、装置及存储引擎
JP7088897B2 (ja) データアクセス方法、データアクセス装置、機器及び記憶媒体
CN105700821B (zh) 半导体装置及其压缩/解压缩方法
CN105094691A (zh) 一种数据操作的方法、设备和系统
US6684267B2 (en) Direct memory access controller, and direct memory access control method
US7598891B2 (en) Data development device and data development method
JP5895229B2 (ja) 配置決定装置、配置決定方法、データ構造、メモリ、アクセス装置及びメモリアクセス方法
JP2009533763A (ja) 大蓄積容量を備えるマルチメディアカード
US8688947B1 (en) Aligned data access
JP4693072B2 (ja) Jpegアプリケーションにおける可変長符号の復号
JP5978259B2 (ja) 順次読み出し最適化可変サイズフラッシュトランスレーションレイヤ
JP2023503034A (ja) パターンベースのキャッシュブロック圧縮
JP2004246889A (ja) シーケンシャルバッファを内蔵してdspのデータアクセス性能を向上させるコンピュータシステム及びそのコンピュータシステムのアクセス方法
CN110119313B (zh) 图像处理方法及图像处理装置
JP4895264B2 (ja) 記憶装置および情報処理装置
JP4479370B2 (ja) プロセッサ
JP2019113890A (ja) ストレージコントローラ、ストレージアレイ装置、データ格納方法、およびプログラム
JP2010287114A (ja) データ格納方法及びデータ格納装置
CN112580297B (zh) 一种编解码数据的方法、电子设备及存储介质

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20150512

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20150707

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20150811

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20150915

A911 Transfer to examiner for re-examination before appeal (zenchi)

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20151013

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20151203

R151 Written notification of patent or utility model registration

Ref document number: 5895229

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R151

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

SZ03 Written request for cancellation of trust registration

Free format text: JAPANESE INTERMEDIATE CODE: R313Z03

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

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

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250