KR20170063384A - 반도체 장치, 데이터 처리 시스템 및 반도체 장치의 제어 방법 - Google Patents

반도체 장치, 데이터 처리 시스템 및 반도체 장치의 제어 방법 Download PDF

Info

Publication number
KR20170063384A
KR20170063384A KR1020160158509A KR20160158509A KR20170063384A KR 20170063384 A KR20170063384 A KR 20170063384A KR 1020160158509 A KR1020160158509 A KR 1020160158509A KR 20160158509 A KR20160158509 A KR 20160158509A KR 20170063384 A KR20170063384 A KR 20170063384A
Authority
KR
South Korea
Prior art keywords
data
memory
compression
address
unit
Prior art date
Application number
KR1020160158509A
Other languages
English (en)
Inventor
가쯔시게 마쯔바라
세이지 모찌즈끼
료지 하시모또
도시유끼 가야
기미히꼬 나까자와
다까히로 이리따
데쯔지 즈다
Original Assignee
르네사스 일렉트로닉스 가부시키가이샤
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 르네사스 일렉트로닉스 가부시키가이샤 filed Critical 르네사스 일렉트로닉스 가부시키가이샤
Publication of KR20170063384A publication Critical patent/KR20170063384A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0626Reducing size or complexity of storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • 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
    • 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/1668Details of memory controller
    • G06F13/1673Details of memory controller using buffers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0604Improving or facilitating administration, e.g. storage management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0656Data buffering arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0658Controller construction arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/544Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices for evaluating functions by calculation
    • 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/6005Decoder aspects
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/42Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation
    • H04N19/423Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation characterised by memory arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2207/00Indexing scheme relating to methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F2207/544Indexing scheme relating to group G06F7/544

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Human Computer Interaction (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Computational Mathematics (AREA)
  • Computing Systems (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)
  • Executing Machine-Instructions (AREA)
  • Memory System (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)

Abstract

보다 적절하게 압축 및 신장을 행하는 것이 가능한 반도체 장치를 제공한다.
반도체 장치(100)는 연산 모듈(110)과 메모리 제어 모듈(120)을 구비하고, 연산 모듈(110)은 연산 처리를 실행하는 연산기(111)와, 연산 처리 결과의 데이터를 압축하는 압축 회로(11)를 구비하고, 메모리 제어 모듈(120)은 압축된 데이터를 메모리에 기입하고, 기입된 데이터를 메모리로부터 판독하는 액세스 회로(121)와, 메모리로부터 판독된 데이터를 신장하고, 신장된 데이터를 연산 모듈(110)에 출력하는 신장 회로(21)를 구비한다.

Description

반도체 장치, 데이터 처리 시스템 및 반도체 장치의 제어 방법{SEMICONDUCTOR DEVICE, DATA PROCESSING SYSTEM, AND SEMICONDUCTOR DEVICE CONTROL METHOD}
본 발명은, 반도체 장치, 데이터 처리 시스템 및 반도체 장치의 제어 방법에 관한 것으로, 예를 들어 연산 처리를 행하는 반도체 장치, 데이터 처리 시스템 및 반도체 장치의 제어 방법에 관한 것이다.
최근, 화상 처리 등의 다양한 연산 처리를 행하는 반도체 장치가 널리 이용되고 있다. 이러한 반도체 장치에서는, 화상 등의 데이터를 메모리에 기입 및 메모리로부터 판독을 행할 때에, 소정의 표준 규격에 의한 부호화 및 복호화나, 압축 및 신장 등을 행하고 있다.
압축 및 신장에 관련된 기술로서, 예를 들어 특허문헌 1이 알려져 있다. 특허문헌 1에서는, 버스를 통해서 연산기와 기억 장치가 접속된 데이터 처리 시스템에 있어서, 버스와 연산기 사이에 압축 회로 및 신장 회로를 구비하고 있다. 압축 회로는 연산기의 처리 결과의 데이터를 압축하고, 압축된 데이터를 기억 장치에 저장한다. 신장 회로는 기억 장치로부터 판독한 압축 데이터를 신장하고, 신장된 데이터를 연산기에서 처리한다.
일본특허공개 평10-27127호 공보
다양한 연산 처리를 행하는 반도체 장치에서는, 연산 처리에 대응해서 최적의 구성으로 압축 및 신장을 행할 것이 요망된다. 이로 인해, 일 실시 형태에서는, 보다 적절하게 압축 및 신장을 행하는 것을 하나의 과제로 한다.
그 밖의 과제와 신규 특징은, 본 명세서의 기술 및 첨부 도면에서 명확해질 것이다.
일 실시 형태에 따르면, 반도체 장치는, 연산 모듈과 메모리 제어 모듈을 구비하고 있다. 연산 모듈은 연산 처리부와 압축부를 구비하고, 메모리 제어 모듈은, 액세스부와 신장부를 구비하고 있다. 연산 모듈에서는 연산 처리부가 연산 처리를 실행하고, 압축부가 연산 처리 결과의 데이터를 압축한다. 메모리 제어 모듈에서는, 액세스부가 압축된 데이터를 메모리에 기입하고, 기입된 데이터를 상기 메모리로부터 판독하고, 신장부가 메모리로부터 판독된 데이터를 신장하고, 신장된 데이터를 상기 연산 모듈에 출력한다.
상기 일 실시 형태에 따르면, 보다 적절하게 압축 및 신장을 행하는 것이 가능하게 된다.
도 1은 기본예 1에 따른 데이터 처리 시스템의 구성예를 도시하는 구성도이다.
도 2는 기본예 2에 따른 데이터 처리 시스템의 구성예를 도시하는 구성도이다.
도 3은 기본예 3에 따른 데이터 처리 시스템의 구성예를 도시하는 구성도이다.
도 4는 실시 형태 1에 따른 데이터 처리 시스템의 개요 구성을 도시하는 구성도이다.
도 5는 실시 형태 1에 따른 데이터 처리 시스템의 개요 구성을 도시하는 구성도이다.
도 6은 실시 형태 1에 따른 데이터 처리 시스템의 구성예를 도시하는 구성도이다.
도 7은 실시 형태 1에 따른 연산기의 출력 데이터를 설명하기 위한 도면이다.
도 8은 실시 형태 1에 따른 연산기의 출력 데이터를 설명하기 위한 도면이다.
도 9는 실시 형태 1에 따른 버퍼의 구성예를 도시하는 구성도이다.
도 10은 실시 형태 1에 따른 버퍼의 입출력 동작을 설명하기 위한 도면이다.
도 11은 실시 형태 1에 따른 버퍼의 입출력 동작을 설명하기 위한 도면이다.
도 12는 실시 형태 1에 따른 버퍼의 입출력 동작을 설명하기 위한 도면이다.
도 13은 실시 형태 1에 따른 버퍼의 입출력 동작을 설명하기 위한 도면이다.
도 14는 실시 형태 1에 따른 버퍼의 입출력 동작을 설명하기 위한 도면이다.
도 15는 데이터 길이와 메모리 액세스 효율의 관계를 나타내는 그래프이다.
도 16은 실시 형태 2에 따른 압축 데이터를 설명하기 위한 도면이다.
도 17은 실시 형태 3에 따른 메모리 제어 모듈의 구성예를 도시하는 구성도이다.
도 18은 실시 형태 3에 따른 메모리 액세스 동작을 설명하기 위한 도면이다.
도 19는 실시 형태 4에 따른 압축 데이터를 설명하기 위한 도면이다.
도 20은 실시 형태 4에 따른 메모리 액세스 동작을 설명하기 위한 도면이다.
설명을 명확하게 하기 위해, 이하의 기재 및 도면은 적절히, 생략 및 간략화가 이루어져 있다. 또한, 다양한 처리를 행하는 기능 블록으로서 도면에 기재되는 각 요소는, 하드웨어적으로는 CPU, 메모리, 그 밖의 회로로 구성할 수 있고, 소프트웨어적으로는 메모리에 로드된 프로그램 등에 의해 실현된다. 따라서, 이들 기능 블록이 하드웨어만, 소프트웨어만 또는 그러한 조합에 의해 다양한 형태로 실현할 수 있는 것은 당업자는 이해할 수 있는 바이며, 어느 하나에 한정되는 것은 아니다. 또한, 각 도면에 있어서, 동일한 요소에는 동일한 부호가 붙여져 있고, 필요에 따라서 중복된 설명은 생략되어 있다.
(기본예 1 내지 3)
먼저, 실시 형태의 기본이 되는 기본예 1 내지 3에 대해서 설명한다. 도 1 내지 3은, 각각 기본예 1 내지 3에 따른 데이터 처리 시스템의 구성을 나타내고 있다.
도 1 내지 3에 도시한 바와 같이, 기본예 1 내지 3에 따른 데이터 처리 시스템(91 내지 93)은, 각각 반도체 장치(LSI)(901 내지 903)와 반도체 장치의 데이터를 기억하는 SDRAM(200)을 구비하고 있다. 각 반도체 장치(901 내지 903)는, 복수의 연산 모듈(110)(예를 들어 110_A 내지 110_C)과 메모리 제어 모듈(120)을 구비하고 있다. 연산 모듈(110)과 메모리 제어 모듈(120)은, 예를 들어 데이터 버스(130)를 통해서 접속되어 있다.
복수의 연산 모듈(110)은 연산 처리를 행하는 연산부이며, 그 기능을 실현하기 위해 각각 연산기(111)(111_A 내지 111_C)를 구비하고 있다. 메모리 제어 모듈(120)은 연산 모듈(110)로부터의 요구에 따라서 SDRAM(200)의 기입/판독을 제어하는 제어부이며, 그 기능을 실현하기 위해 액세스 회로(121)를 구비하고 있다. 복수의 연산기(111)는 데이터 버스(130) 및 메모리 제어 모듈(120)을 통해서, SDRAM(200)에 데이터를 저장하고, SDRAM(200)으로부터 데이터를 판독하거나 한다. 또한, SDRAM(200)은 반도체 장치의 데이터를 기억하는 메모리의 일례이며, 그 밖의 기억 장치여도 된다.
반도체 장치(901 내지 903)는 연산 결과의 데이터를 압축하는 압축 회로(11), 압축된 데이터를 신장하는 신장 회로(21)를 더 구비하고 있다. 반도체 장치(901 내지 903)는 이 압축 회로(11)와 신장 회로(21)의 배치가 다른 예이다.
도 1에 도시한 바와 같이, 기본예 1의 반도체 장치(901)에서는, 압축 회로(11) 및 신장 회로(21)가 연산 모듈(110)과 데이터 버스(130) 사이에 설치되어 있고, 압축 회로(11) 및 신장 회로(21)와 데이터 버스(130)가 일 대 일의 관계에 있다. 도 2에 도시한 바와 같이, 기본예 2의 반도체 장치(902)에서는, 압축 회로(11) 및 신장 회로(21)가 메모리 제어 모듈(120)의 내부에 설치되어 있고, 압축 회로(11) 및 신장 회로(21)와 메모리 제어 모듈(120)이 일 대 일의 관계에 있다.
각 연산기(111)로부터는, 그 연산 처리의 특성에 따른 출력 데이터가 출력된다. 즉 연산기마다, 출력 데이터의 전송 개시의 어드레스 위치나, 전송 길이, 데이터의 포맷(연속된 것인가, 이산된 것인가)이 다르다. 기본예 1이나 기본예 2와 같이, 압축 회로(11) 및 신장 회로(21)가, 데이터 버스(130)나 메모리 제어 모듈(120)과 일 대 일의 관계에 있는 경우, 압축 회로(11)는 모든 연산기(111)의 출력을 압축할 필요가 있다. 그렇게 하면, 압축 효율을 높게 할 수 없다. 즉, 연산기마다 출력의 특성이 다름에도 불구하고 동일한 압축 회로로 압축하기 때문에, 압축에 적합한 데이터 구조로 압축할 수 없어, 압축 효율이 낮아진다는 문제가 있다.
또한, 도 3에 도시한 바와 같이, 기본예 3의 반도체 장치(903)에서는, 압축 회로(11) 및 신장 회로(21)가 각 연산 모듈(110)의 내부에 설치되어 있고, 압축 회로(11) 및 신장 회로(21)와 연산기(111)가 일 대 일의 관계에 있다. 기본예 3과 같이, 압축 회로(11) 및 신장 회로(21)가 각 연산기(111)와 일 대 일에 있는 경우에도, 압축 효율을 높게 할 수 없다. 왜냐하면, 연산 결과의 데이터를 다른 연산기에서 사용하는 경우, 데이터를 다른 연산기에서 신장할 수 있도록 하기 위해서는, 공통의 데이터 구조로 압축할 필요가 있다. 그렇게 하면, 연산기마다의 출력에 맞춰서 압축할 수 없기 때문에, 상기와 마찬가지 문제가 발생한다.
또한, 기본예 3의 구성에서는, 압축을 적용하지 않는 연산기(111_C)도, 다른 연산기(111)에서 압축된 데이터를 판독하기 위해서는, 신장 회로(21_C)가 필요하게 된다. 이로 인해, 모든 연산기에 신장 회로가 필요해지기 때문에, 회로 면적이 커진다는 문제가 있다.
또한, 기억 장치로서 SDRAM 등이 생각되지만, 연산기(111)에서 발생한 데이터의 특성에 따라서는, 연속된 데이터 구조로 되지 않기 때문에, SDRAM의 전송 효율을 높게 하는 것이 곤란하다는 문제도 있다.
(실시 형태 1)
이하, 도면을 참조하여 실시 형태 1에 대해서 설명한다.
<실시 형태 1의 개요>
도 4는 본 실시 형태에 따른 데이터 처리 시스템의 개요 구성을 나타내고 있다. 도 4에 도시한 바와 같이, 본 실시 형태에 따른 데이터 처리 시스템(1)은, 반도체 장치(100)와 SDRAM(200)을 구비하고 있다. 본 실시 형태에 따른 반도체 장치(100)는, 기본예 1 내지 3과 마찬가지로, 복수의 연산 모듈(110)(예를 들어 110_A 내지 110_C)과 메모리 제어 모듈(120)을 구비하고 있다. 연산 모듈(110)은 연산기(111)(111_A 내지 111_C)를 구비하고 있다. 또한, 몇몇 연산 모듈(110)은 압축 회로(11)(예를 들어 11_A, 11_B)를 구비하고 있다. 메모리 제어 모듈(120)은 액세스 회로(121)를 구비하고 있고, 신장 회로(21)를 더 구비하고 있다. 또한, 본 실시 형태에 따른 반도체 장치(100), 도 5와 같이, 적어도 도 4의 구성 중 연산 모듈(110)과 메모리 제어 모듈(120)을 구비하고 있어도 된다. 즉, 적어도 연산 모듈(110)은 연산 처리를 실행하는 연산기(연산 처리부)(111), 연산 처리 결과의 데이터를 압축하는 압축 회로(압축부)(11)를 구비하고, 메모리 제어 모듈(120)은 압축된 데이터를 SRDAM(메모리)(200)에 기입하고, 기입된 데이터를 SDRAM(200)으로부터 판독하는 액세스 회로(액세스부)(121), SDRAM(200)으로부터 판독된 데이터를 신장하고, 신장된 데이터를 연산 모듈(110)에 출력하는 신장 회로(신장부)(21)를 구비하고 있다.
이와 같이, 본 실시 형태에서는, 연산부(연산 모듈)와 메모리 제어부(메모리 제어 모듈)로 구성되는 데이터 처리 시스템에 있어서, 연산부는 데이터 출력 시에 압축을 행하는 압축 회로를 갖고, 메모리 제어부는 메모리로부터 리드된 데이터를 신장하는(데이터가 압축 데이터인 경우에 신장하는) 신장 회로를 갖는 것을 하나의 특징으로 하고 있다. 연산부에 압축 회로를 구비함으로써, 연산기의 데이터에 맞춰서 압축을 행할 수 있다. 메모리 제어부의 신장 회로에 의해, 압축 데이터를 신장하고 나서 각 연산부로 송신하기 때문에, 모든 연산부가 메모리에 저장되는 압축 데이터와 비압축 데이터의 양쪽을 이용하는 것이 가능하게 된다. 모든 연산부에 신장 회로를 구비할 필요가 없기 때문에, 회로 면적의 증대를 억제할 수 있다.
<실시 형태 1의 구성>
도 6은 본 실시 형태에 따른 데이터 처리 시스템의 보다 구체적인 구성예를 나타내고 있다.
도 6에 도시한 바와 같이, 본 실시 형태에 따른 반도체 장치(100)는 도 4의 개요 구성 외에, 몇몇 연산 모듈(110)에 버퍼(112)를 더 구비하고 있다.
반도체 장치(100)는 각 연산 모듈(110)측에, 연산기(111), 버퍼(112), 압축 회로(11)를 구비하고 있다. 버퍼(112)는 연산 처리 결과의 데이터를 압축 처리 단위의 데이터로 변환하는 변환부이고, 연산기(111)로부터의 연산 결과인 출력 데이터를 압축에 적합한 압축 데이터 구조가 되도록 유지하고, 유지한 압축 데이터 구조의 데이터를 압축 회로(11)로 전송한다. 압축 회로(11)는 입력된 데이터를 압축하고, 데이터 버스(130)를 통해서 메모리 제어 모듈(120)로 전송한다. 메모리 제어 모듈(120)은 전송된 압축 데이터(201)를 외부의 SDRAM(200)에 보존한다. 메모리 제어 모듈(120)에 신장 회로(21)가 배치되고, SDRAM(200)으로부터 리드된 데이터가 압축 데이터(201)일 때는 신장하고 나서 데이터 버스(130)로 송부한다. 리드 요구원의 연산 모듈(110)로부터, 데이터가 압축되어 있는지, 압축되어 있지 않은지를 나타내는 제어 신호가 메모리 제어 모듈(120)로 송부된다.
도 6의 예에서는, 반도체 장치(100)는 연산 모듈(110_A 내지 110_D)을 구비하고 있다. 예를 들어, 연산 모듈(110_A 및 110_B)은 각각 연산기(111_A 및 111_B), 버퍼(112_A 및 112_B), 압축 회로(11_A 및 11_B)를 구비하고, 연산 모듈(110_C 및 110_D)은 각각 연산기(111_C 및 111_D)를 구비하고 있다.
예를 들어, 연산 모듈(110_A)(연산기(111_A))은 화상 데이터(영상 데이터)를 디코딩하는 디코더이다. 연산 모듈(110_A)은 디코드를 행한 후, 디코딩한 데이터를 압축하고, 압축 데이터(201)로서 SDRAM(200)에 저장한다.
연산 모듈(110_B)(연산기(111_B))은 연산 모듈(110_A)이 디코딩한 화상 데이터에 대하여 확대/축소 등의 화상 처리(영상 처리)를 행하는 화상 처리 장치(GPU)이다. 연산 모듈(110_B)은 SDRAM(200)으로부터 디코드 후의 압축 데이터(201)를 신장 회로(21)를 통해서 취득하고, 화상 처리를 행한 후, 화상 처리를 행한 데이터를 압축하고, 압축 데이터(201)로서 SDRAM(200)에 저장한다.
연산 모듈(110_C)(연산기(111_C))은 연산 모듈(110_B)이 화상 처리를 행한 데이터를 사용하여, 메뉴 등 GUI를 추가하고, 표시 화면 데이터를 생성한다. 연산 모듈(110_C)은 SDRAM(200)으로부터 화상 처리 후의 압축 데이터(201)를 신장 회로(21)를 통해서 취득하고, 표시 화면 데이터를 생성한 후, 비압축 데이터(202)로서 SDRAM(200)에 저장한다.
연산 모듈(110_D)(연산기(111_D))은 연산 모듈(110_A 내지 110_C)의 동작 제어나 연산 결과를 사용하여, 애플리케이션 처리를 실행하는 CPU이다. 연산 모듈(110_D)은 SDRAM(200)으로부터 표시 화면 데이터 등의 비압축 데이터(202)를 취득하고, 애플리케이션 처리를 실행한 후, 비압축 데이터(202)로서 SDRAM(200)에 저장한다.
<실시 형태 1의 동작>
먼저, 본 실시 형태에 따른 연산 모듈(110)(예를 들어 연산 모듈(110_A))의 동작에 대해서 설명한다.
압축 회로(11)는 데이터가 갖는 용장성을 이용해서 데이터를 압축하여, 데이터양을 삭감하고 있다. 예를 들어, 화상 데이터의 압축에서는 대상 화소와 참조 화소의 차분을 사용해서 압축을 행하므로, 근방의 화소군은 차분이 작아 압축률이 높아지는 경향이 있다. 그로 인해, 압축에 의해 데이터양을 효율적으로 삭감하기 위해서는, 일정한 길이의 연속된 데이터(어드레스가 연속되는 데이터, 블록 데이터) 단위로 압축을 실행하는 것이 바람직하다.
그러나, 연산기(111)로부터 출력되는 데이터는 반드시 데이터 압축에 적합한 구조로 되어 있다고는 할 수 없다. 즉, 연산기(111)의 처리 상황이나 데이터의 특성에 따라, 연산기(111)로부터 출력되는 데이터의 순서가 SDRAM(200)에 있어서의 버퍼의 어드레스순과 일치하지 않는 경우가 있다. 이 경우, 어드레스가 불연속이 되는 개소에서 데이터가 세분화되어 버리기 때문에, 효율적으로 압축할 수 없다. 따라서, 본 실시 형태에서는 연산기(111)의 출력을 직접 압축하는 것이 아닌, 한번 버퍼(112)에 저장하고, 버퍼(112)에 있어서 압축에 적합한 구조(일정 길이로 어드레스가 연속된 구조)로 변환하고 나서, 압축 회로(11)에서 압축을 행한다.
이하의 예에서는, 연산기(111)(예를 들어 연산기(111_A))를, 동화상 압축 규격인 H.265에서 채용되고 있는 디블록 필터를 갖는 디코더로 하고, 이 디코더의 출력을, 수평 64화소×수직 4라인의 연속된 256바이트 데이터의 압축 데이터 구조로 변환하는 예를 설명한다.
동화상 압축 규격인 H.265에서는, 동화상은 각 화상(픽처) 단위로 압축된다. 압축된 픽처에는, 크게 구별해서 I/P/B의 3종류가 규정되어 있다.
I 픽처는, 그 픽처 자신의 데이터만으로 압축되어 있으며, 그 픽처 단체로 복호(디코드)할 수 있다. P/B 픽처는, 그 픽처와, 그 이전에 디코딩한 결과(디코드 화상)의 차분을 취하여, 그 픽처를 압축한다. 그로 인해, P/B 픽처는 I 픽처에 비해 압축 후의 데이터 사이즈를 작게 할 수 있다. P/B 픽처에 있어서 차분 데이터를 생성할 때, 참조하는 디코드 화상으로부터 임의의 위치의 데이터를 선택할 수 있다. 예를 들어, 압축 후의 데이터양이 최소가 되는 위치의 데이터가 선택된다.
H.265 규격에서는, 동화상의 압축 효율이나 주관적인 동화상 품질의 향상을 위해, 디블록 필터가 채용되어 있고, 연산기(111)는 이 디블록 필터 DF를 구비하고 있다. 디블록 필터(디블로킹 필터) DF는 화상 복호 시에 발생하는 블록 왜곡을 저감시키기 위한 필터이다.
예를 들어, 연산기(111)는 엔트로피 복호화, 역양자화·역변환에 의해 디코드를 행하고, 루프 내 필터로서 디블록 필터 DF가 디코드의 마지막에 사용된다. 이로 인해, 연산기(111)로부터 출력되는 H.265의 디코드 화상은 디블록 필터 처리 후의 데이터로 된다. 즉, 디블록 필터 처리가 끝난 데이터부터 순서대로, SDARM 상의 버퍼에 저장 가능하게 된다. 디블록 필터 DF가 처리하는 화상 상의 위치의 순서는 H.265 규격에 의해 정해져 있으며, 그 결과, 연산기(111)가 데이터를 출력하는 순서는, 화상 내의 처리하는 위치에 의존해서 변화된다.
H.265에서는, CTB(Coding Tree Block)라 불리는 정사각 화소 블록 단위로, 부호화 처리 및 복호화 처리가 행해진다. CTB 사이즈는 선택 가능하며, 16×16, 32×32, 64×64 화소의 경우가 있다. 이하에서는 CTB 사이즈가 64×64 화소인 경우를 예로 들어 설명한다.
도 7은 CTB 사이즈가 64×64 화소일 때의 휘도 데이터의 출력 순서를 나타내고 있고, 도 8은 도 7의 일부를 확대한 확대도이다. 도 7에 도시한 바와 같이, 연산기(111)는 수평 방향 16×1 화소의 데이터를 한 단위로 하여, 처리하는 화상의 위치에 의존하여, 수직 방향으로 8/12/16 화소의 연속으로 데이터를 출력한다. 즉, 16×8 화소, 16×12 화소, 16×16 화소의 출력 블록 OB의 단위로, 도 7 및 도 8의 화살표 순서대로 출력된다.
H.265에서는 CTB를 더 계층적으로 블록 분할해서 부호화 처리 및 복호화 처리가 행해진다. 예를 들어, CTB를 복수의 CB(Coding Block)로 분할하고, CB를 복수의 PB(Prediction Block)나 TB(Transform Block)로 더 분할한다. CB는 인트라·인터 예측, 변환·양자화 처리/역양자화·역변환 처리, 엔트로피 부호화/복호화 처리 등의 일련의 부호화/복호화를 행하는 단위이다. PB는 인트라·인터 예측 처리를 행하는 단위이고, TB는 변환·양자화 처리/역양자화·역변환 처리를 행하는 단위이다. 디블록 필터 DF는 PB나 TB 단위로 필터 처리를 행한다. 출력 블록 OB는 디블록 필터 DF의 처리 단위의 블록이며, 예를 들어 PB나 TB이다.
디블록 필터 DF는 블록에 인접하는 경계의 화소를 참조하여 필터 처리를 행하기 때문에, 인접하는 다음 블록(수평 방향 또는 수직 방향으로 인접하는 블록)의 필터 처리가 완료된 후가 아니면, 데이터를 출력할 수 없다. 이로 인해, CTB 사이즈 단위가 아닌, CTB로부터 어긋난 단위로 데이터가 출력된다.
도 7의 예에서는, 연산기(111)로부터 출력되는 데이터는, 화상의 64×64 화소 단위의 위치로부터는, 수평 방향으로는 왼쪽으로 16 화소, 수직 방향으로는 위로 4 화소 어긋나 있다. 즉, CTB의 처리 단위와 동일하지 않고, 수평 방향으로는 왼쪽 끝은 48 화소, 중간은 64 화소, 오른쪽 끝은 80 화소로, 수직 방향으로는 상단은 60 화소, 중간은 64 화소, 하단은 68 화소로, 데이터가 출력되게 된다.
즉, 먼저, 48×60 화소의 출력 블록군 OBU1이 출력되고, 다음에 수평 방향으로 연속해서 64×60 화소의 출력 블록군 OBU2가 출력된 후, 수평 방향의 마지막으로 80×60 화소의 출력 블록군 OBU3이 출력된다. 다음 수평 방향의 데이터는, 48×64 화소의 출력 블록군, 64×64 화소의 출력 블록군 … 80×64 화소의 출력 블록군 OBU6이 순서대로 출력된다. 출력 블록군 OBU4 내지 OBU6이 수직 방향으로 계속해서 출력된 후, 수직 방향의 마지막으로 48×68 화소의 출력 블록군 OBU7이 출력되고, 다음에 수평 방향으로 연속해서 64×68 화소의 출력 블록군 OBU8이 출력된 후, 수평 방향의 마지막으로 80×68 화소의 출력 블록군 OBU9가 출력된다.
출력 블록군 OBU 내의 출력순의 예를 보면, 예를 들어 도 8에 도시한 바와 같이, 처음 출력 블록군 OBU1에서는, (출력 블록)OB1, 그 아래의 OB11, 그 오른쪽 위의 OB2, 그 오른쪽의 OB3, 그 왼쪽 아래의 OB12, 그 오른쪽의 OB13 …의 순으로 출력되고, 다음 출력 블록군 OBU2에서는, (출력 블록)OB4, 그 오른쪽의 OB5, 그 왼쪽 아래의 OB14, 그 오른쪽의 OB15 …의 순으로 출력된다.
이와 같이, 연산기(111)로부터는, 도 7 및 도 8의 화살표와 같은 순서로 데이터가 출력되기 때문에, 그대로의 순서로는, 본래의 화상의 위치 관계와 상이하게 되어 버린다. 즉, 도 8과 같이, 본래의 화상에서는, 수평 방향으로 (출력 블록) OB1, OB2, OB3, OB4 …로 연속된 화상이지만, 출력된 데이터는 화살표의 순으로 (출력 블록) OB1, OB11, OB2, OB3 …으로 되어 불연속 데이터로 된다.
본 실시 형태에서는, 도 7 및 도 8과 같은 출력 데이터를, 버퍼(112)에 의해, 화상의 64×4 단위의 연속된 데이터 구조로 변환한다. 도 9는 이러한 버퍼(112)를 실현하기 위한 구성예를 나타내고 있다. 또한, 본 실시 형태에 따른 버퍼는 이러한 데이터 구조를 갖고 있으면 되기 때문에, 데이터의 입출력에 대해서는 어느 구성으로 행해도 무방하다. 버퍼(112) 내의 버퍼 제어부가, 버퍼(112)의 데이터의 입력순/출력순을 제어해도 되고, 연산기가 버퍼(112)에의 데이터의 입력순을 제어하고, 압축 회로가 버퍼(112)로부터의 데이터의 출력순을 제어해도 된다.
도 9에 도시한 바와 같이, 버퍼(112)는 2 뱅크로 구성되어 있고, 뱅크 BK0과 뱅크 BK1을 구비하고 있다. 뱅크 BK0 및 BK1은 물리적으로 2개로 나뉘어져 있을 필요는 없고, 하나의 물리적인 버퍼의 전반/후반 각각을 뱅크 BK0 및 BK1로서 사용해도 된다. 뱅크 BK0 및 BK1은 각각 동일한 사이즈이며, 뱅크당 최대 64×68 화소의 데이터를 저장할 수 있다.
뱅크 BK0 및 BK1은 수평 방향으로 16 화소의 4개의 영역을 가지며, 수직 방향으로 32행의 영역과 36행의 영역의 2개의 영역을 갖는다. 즉, 뱅크 BK0은 16×32 화소용 영역 AR01 내지 AR04, 16×36 화소용 영역 AR05 내지 영역 AR08을 갖고, 뱅크 BK1은 16×32 화소용 영역 AR11 내지 AR14, 16×36 화소용 영역 AR15 내지 영역 AR18을 갖는다.
수평 방향 영역의 16 화소는, 각 출력 블록 OB와 동일한 사이즈이고, 뱅크의 수평 방향의 64 화소는 출력 블록군 OBU2, OBU5, OBU8(또는 CTB)과 동일한 사이즈이다. 수직 방향의 영역의 32행 및 36행은 출력 블록군 OBU7, OBU8, OBU9의 상측의 2블록 및 하측의 3블록과 동일한 사이즈이다.
이후, 도 10 내지 도 14를 사용하여, 연산기(111)가 화상의 왼쪽 위부터 데이터 출력을 개시했을 때의 버퍼(112)의 저장 동작에 대해서, 상세하게 설명한다.
먼저, 처음 CTB에 대응하는 출력 데이터(OBU1)는 48×60화소분이 된다. 도 10에 도시한 바와 같이, 버퍼(112)의 뱅크 BK0에 화살표 순으로 출력 블록군 OBU1의 데이터가 저장된다. 출력 블록군 OBU1의 각 블록은 도 7 및 8에서 나타낸 순서대로 출력되기 때문에, 버퍼(112)는 출력 블록 OB1, OB11의 순으로 영역 AR01에 저장하고, 출력 블록 OB2를 영역 AR02에 저장하고, 출력 블록 OB3을 영역 AR03에 저장하고, 출력 블록 OB12를 영역 AR02의 OB2 뒤에 저장하고, 출력 블록 OB13을 영역 AR03의 OB3 뒤에 저장한다. 그 후, 영역 AR05 내지 AR07의 순으로 데이터가 저장되어, 출력 블록군 OBU1이 뱅크 BK0에 저장된다. 이 단계에서는, 뱅크 BK0의 영역 AR04 및 영역 AR08이 비어 있고, 아직 압축 단위 64×4의 데이터가 정렬되어 있지 않기 때문에, 버퍼로부터 데이터는 출력되지 않는다.
이어서, 2번째의 CTB에 대응하는 출력 데이터(OBU2)는 64×60화소분이 된다. 도 11에 도시한 바와 같이, 버퍼(112)의 뱅크 BK0 및 BK1에 화살표 순으로 출력 블록군 OBU2의 데이터가 저장된다. 이때, 뱅크 BK0의 영역 AR01 내지 AR03, AR05 내지 AR07에는 출력 블록군 OBU1의 데이터가 저장되어 있기 때문에, 뱅크 BK0의 빈 영역(AR04 및 AR08)과 뱅크 BK1의 영역을 사용한다. 출력 블록군 OBU2의 각 블록은 도 7 및 8에서 나타낸 순서대로 출력되기 때문에, 버퍼(112)는 출력 블록 OB4를 영역 AR04에 저장하고, 출력 블록 OB5를 영역 AR11에 저장하고, 출력 블록 OB14를 영역 AR04의 OB4 뒤에 저장하고, 출력 블록 OB15를 영역 AR11의 OB5 뒤에 저장한다. 그 후, 영역 AR12 내지 AR14, AR08, AR15 내지 AR18의 순으로 데이터가 저장된다.
2번째의 CTB에 대응한 출력 데이터(OBU2)가 버퍼(112)에 저장되면, 도 12에 도시한 바와 같이, 뱅크 BK0에는 다수의 64×4 단위(압축 단위)의 연속 데이터 OL이 정렬된다. 이들 연속 데이터 OL이 버퍼(112)로부터 판독되고, 압축 회로(11)로 송부된다.
압축 회로(11)는 버퍼(112)로부터 수취한 연속 데이터 OL을 압축한다. 압축 회로(11)의 압축은, 신장 회로(21)에서 신장 가능하면 임의의 방식이어도 된다. 예를 들어, DPCM(Differential Pulse Code Modulation)이나, 가역 압축, 비가역 압축이어도 된다. 압축 회로(11)는 데이터 압축 후, 데이터 버스(130)를 경유하여, 메모리 제어 모듈(120)로 압축 데이터를 송부한다. 메모리 제어 모듈(120)은 수취한 압축 데이터를 SDRAM(200) 상의 버퍼에 저장한다.
뱅크 BK0으로부터 64×4 단위의 연속 데이터 OL을 판독한 후에는, 뱅크 BK0은 도 13과 같이 비어 있게 되므로, 데이터를 저장할 수 있는 상태로 된다. 이어서, 도 14와 같이, 뱅크 BK1의 빈 영역(AR14 및 AR18)과 빈 뱅크 BK0을 사용하여, 다음의 CTB에 대응한 출력 데이터를 저장한다. 그 후, 뱅크 BK0과 뱅크 BK1을 교대로 사용하여, 연산기(111)로부터의 데이터 저장과, 64×4 단위의 판독을 반복한다.
또한, 이 예에서는, 설명을 간이하게 하기 위해, CTB에 대응하는 모든 데이터가 저장되고 나서, 64×4 단위의 데이터가 판독된다고 하였지만, 실제는 여기에 한정되지 않는다. 즉, 64×4 단위의 데이터가 정렬된 시점에서, 판독할 수 있다.
이어서, 본 실시 형태에 따른 메모리 제어 모듈(120)의 동작을 설명한다. 본 실시 형태에서는, 주로 메모리의 리드 동작에 특징이 있기 때문에, 리드 동작을 설명한다.
도 6에 도시한 바와 같이, 메모리 제어 모듈(120)에는 압축 데이터를 신장하는 신장 회로(21)가 배치된다. 리드 요구원의 연산 모듈(110)은 메모리 제어 모듈(120)로, 리드의 커맨드 외에, 지금부터 읽는 데이터가 압축되어 있는지 여부를 나타내는 플래그도 송부한다. 메모리 제어 모듈(120)(액세스 회로(121))은 리드 커맨드에 따라서 SDRAM(200)으로부터 데이터를 리드하고, 커맨드의 플래그를 참조하여, 압축 데이터가 아닌 경우, SDRAM(200)으로부터의 리드 데이터를, 그대로 연산 모듈(110)로 송부한다. 또한, 커맨드의 플래그에 의해 압축 데이터인 경우, 메모리 제어 모듈(120) 내의 신장 회로(21)에 리드 데이터를 보내고, 신장 후의 데이터를 연산 모듈(110)로 송부한다. 연산 모듈(110)(연산기)이 플래그를 지정함으로써, 연산 모듈(110)(연산기)의 제어에 따라서 압축 데이터(201) 또는 비압축 데이터(202)를 리드할 수 있다.
<실시 형태 1의 효과>
이상과 같이, 본 실시 형태에서는 연산 모듈에 연산기의 출력을 접수하는 버퍼를 설치하고, 데이터를 버퍼링한 후에, 압축 처리를 행한다. 이에 의해, 압축에 적합한 데이터 구조로 변환할 수 있어, 압축률을 높게 할 수 있다.
또한, 압축 전의 데이터 길이를 길게 함으로써, 압축 후에도 반도체 장치와 SDRAM 사이에서 높은 전송 효율을 실현할 수 있는 압축 데이터 길이로 할 수 있다. 도 15의 그래프는, 1회의 데이터 전송 길이에 대한 SDRAM의 전송 효율(액세스 효율)을 나타내고 있다.
예를 들어, 압축 전의 데이터 길이가 128바이트이고, 압축 후가 절반인 64바이트가 되었다고 하자. 데이터 길이가 128바이트일 때는 100% 가까운 전송 효율이지만, 64바이트일 때는 약 50%의 효율로 된다. 50%의 효율에서는, 2회에 1회는 전송할 수 없는 기간이 발생하기 때문에, 실질적으로 128바이트 전송을 하고 있는 것과 등가로 된다. 즉, 반도체 장치와 SDRAM 사이의 전송량은 실질적으로 삭감되지 않게 된다. 그로 인해, 데이터 압축 후에도 효율이 좋은 전송을 실현할 수 있는 데이터 길이로 하는 것이 바람직하다. 예를 들어 256바이트를 128바이트로 압축하는 등, 압축 후의 데이터 길이가 데이터 전송 길이(전송 레이트)의 128바이트에 가까운 것이 바람직하다.
또한, 메모리 제어 모듈에 신장 회로를 구비함으로써, 압축 데이터를 신장하고 나서 각 연산 모듈로 송부할 수 있다. 따라서, 연산 모듈측에 신장 회로를 갖고 있지 않은 모듈이라도, 액세스하는 대상이 압축 데이터인 것을 나타내는 것으로, SDRAM에 있는 압축 데이터와 비압축 데이터 양쪽을 이용할 수 있다.
(실시 형태 2)
이하, 도면을 참조하여 실시 형태 2에 대해서 설명한다. 본 실시 형태는, 기본예 1 내지 3 또는 실시 형태 1에 적용 가능하며, 기본예 1 내지 3 또는 실시 형태 1과 압축 데이터의 저장 방법만이 다르다.
도 16은 본 실시 형태에 있어서의 압축 데이터의 저장 이미지를 나타내고 있다. 도 1 내지 도 6의 압축 회로(11)에 있어서, 도 16과 같이 데이터를 압축하여, SDRAM에 저장한다.
예를 들어, 압축 회로(11)는 연산기(111)로부터 출력된 데이터를 256바이트 단위로 압축한다. 압축된 데이터는 데이터 길이가 짧아지기 때문에, 이 압축 데이터를 연속해서 SDRAM에 저장하면, 데이터의 어드레스가 어긋나게 된다. 이 경우, 어드레스가 어긋난 데이터에 직접 액세스하기 위해서는, 변경 전과 변경 후의 어드레스를 관련지어 기억해 둘 필요가 있다.
따라서, 본 실시 형태에서는, 도 16에 도시한 바와 같이, 압축 회로(11)는 압축 후의 데이터를, 비압축(압축 전)과 동일한 256바이트의 선두 어드레스로부터 저장한다. 즉, 압축 데이터를 SDRAM(200)에 저장할 때, 압축 단위인 256바이트 단위의 선두 어드레스는 변경하지 않고, 압축 데이터분만 저장한다.
이와 같이, 본 실시 형태에서는, 압축 데이터가 저장되는 어드레스가, 비압축 시의 어드레스와 256바이트 단위에서는 동일해진다. 이에 의해, 압축 전의 어드레스, 예를 들어 버퍼의 선두 어드레스 등을 유지할 필요가 없어진다. 또한, 압축 후의 임의의 데이터에 순서부동으로 액세스(랜덤 액세스)하는 것도 가능해진다.
(실시 형태 3)
이하, 도면을 참조하여 실시 형태 3에 대해서 설명한다. 본 실시 형태는 실시 형태 1 또는 2에 적용 가능하고, 실시 형태 1 또는 2와 메모리 제어 모듈의 구성만이 다르다.
도 17은 본 실시 형태에 따른 메모리 제어 모듈(120)의 구성예를 나타내고 있고, 도 18은 본 실시 형태에 있어서의 데이터의 리드 동작예를 나타내고 있다.
도 17에 도시한 바와 같이, 실시 형태 1 또는 2의 메모리 제어 모듈(120)에 있어서, 어드레스 변환기(122), MMU(메모리 관리 유닛)(123)를 더 구비하고 있다. 어드레스 변환기(122)는 연산 모듈(110)로부터 커맨드로 지정된 논리 어드레스를, (별도의) 변환 후의 논리 어드레스로 변환한다. MMU(123)는 변환 후의 논리 어드레스를 SDRAM 상의 물리 어드레스로 변환한다. 액세스 회로(121)는, 물리 어드레스에 의해 SDRAM(200)에 액세스한다. 또한, 어드레스 변환기(122)(혹은 신장 회로(21))는 변환 후의 논리 어드레스에 의해 데이터의 압축의 유무를 판단한다. 예를 들어, 신장 회로(21)는 요구된 어드레스가 제1 어드레스 영역에 포함되는 경우에 리드 데이터를 신장하고, 요구된 어드레스가 제2 어드레스 영역에 포함되는 경우에 리드 데이터의 신장을 행하지 않는다. 예를 들어, 제1 어드레스 영역의 변환 후의 어드레스 영역과, 제2 어드레스 영역의 변환 후의 어드레스 영역을, SDRAM 상의 동일한 어드레스 영역으로 함으로써, 메모리를 유효 활용할 수 있다.
본 실시 형태에서는, 압축 데이터가 저장된 논리 어드레스 영역(영역 A)은, 별도의 논리 어드레스 영역(영역 B)에 재매핑되고 있고, 영역 B의 특정 어드레스가 액세스되는 경우, 해당 어드레스는 어드레스 변환기(122)에 의해 영역 A의 논리 어드레스로 변환된다. 예를 들어, 어드레스 변환기(122)는 변환 전의 논리 어드레스와 변환 후의 논리 어드레스(및 압축의 유무)를 매핑하는 매핑 테이블을 갖는다. 즉, 어드레스 변환기(122)는 매핑 테이블을 참조함으로써, 어드레스의 변환/역변환을 행하고, 또한 압축 데이터/비압축 데이터를 판단한다.
도 18과 같이, 영역 A에의 액세스의 리드 데이터는, 어드레스 변환기에 의해 영역 A로부터 리드되는 비압축 데이터라고 판단되기 때문에, SDRAM(200)의 영역 A의 리드 데이터를 그대로 연산 모듈(110)에 출력한다. 영역 B에의 액세스의 리드 데이터는, 어드레스 변환기에 의해 영역 A로부터 리드되는 압축 데이터라고 판단되기 때문에, SDRAM(200)의 영역 A의 리드 데이터를 신장 회로(21)에서 신장하고, 신장한 데이터를 영역 B의 데이터로서 연산 모듈(110)에 출력한다.
본 실시 형태에 따르면, 비압축 데이터와 압축 데이터의 전환을, 리드할 때의 어드레스 영역에서 지정할 수 있다. 즉, 메모리로부터 리드할 때에, 판독하는 어드레스 영역에 의해, 압축 데이터의 신장의 유무를 전환할 수 있다. 그에 의해 연산 모듈로부터 출력되는 데이터가 압축되어 있는지 여부를 나타내는 플래그를 삭제할 수 있다. 또한, 재매핑하는 영역은 복수 갖는 것이 가능하며, 영역마다 압축·비압축의 전환의 종별을 변경할 수 있다.
(실시 형태 4)
이하, 도면을 참조하여 실시 형태 4에 대해서 설명한다. 본 실시 형태는, 실시 형태 2 또는 3에 적용 가능하고, 실시 형태 2 또는 3과 압축 데이터의 매핑만이 다르다.
도 19는 본 실시 형태에 있어서의 압축 데이터의 저장 이미지를 나타내고 있고, 도 20은 본 실시 형태에 있어서의 데이터의 리드 동작예를 나타내고 있다.
도 19에 도시한 바와 같이, 실시 형태 2에 있어서의 256바이트로부터 128바이트로의 고정 길이의 압축 방법을 사용하여, 압축 단위의 256바이트의 전반 128바이트와 후반 128바이트로, 다른 매핑(영역)의 압축 데이터를 저장한다. 실시 형태 3에서는 영역 A와 영역 B를 정의했지만, 본 실시 형태에서는, 세번째 재매핑한 영역 C를 더 정의한다. 예를 들어, 영역 B를 256바이트의 전반 128바이트로 매핑하고, 영역 C를 256바이트의 후반 128바이트로 매핑한다. 즉, 영역 B에의 액세스는 256바이트 중 전반 128바이트의 압축 데이터를 신장하고, 영역 C에의 액세스는 후반 128바이트의 압축 데이터를 신장한다. 또한, 이 예에서는, 압축 단위의 256바이트의 전반과 후반에 2개의 데이터를 저장하고 있지만, 여기에 한정하지 않고 복수의 데이터를 저장해도 된다.
도 20과 같이, 영역 A에의 액세스의 리드 데이터는, 영역 A로부터 리드되는 통과 데이터(비압축 데이터와 같이 신장하지 않는 데이터)라고 판단되기 때문에, SDRAM(200)의 영역 A의 리드 데이터를 그대로 연산 모듈(110)에 출력한다. 영역 B에의 액세스의 리드 데이터는 영역 A에 있어서의 256바이트의 전반 128바이트로부터 리드되는 압축 데이터라고 판단되기 때문에, SDRAM(200)의 영역 A에 있어서의 256바이트의 전반 128바이트의 리드 데이터(0 내지 125, 256 내지 384, 512 내지 640, 768 내지 896의 데이터)를 신장 회로(21)에서 신장하고, 신장한 데이터를 영역 B의 데이터(1024 내지 2048의 데이터)로서 연산 모듈(110)에 출력한다. 영역 C에의 액세스의 리드 데이터는, 영역 A에 있어서의 256바이트의 후반 128바이트로부터 리드되는 압축 데이터라고 판단되기 때문에, SDRAM(200)의 영역 A에 있어서의 256바이트의 후반 128바이트의 리드 데이터(128 내지 256, 384 내지 512, 640 내지 768, 896 내지 1024의 데이터)를 신장 회로(21)에서 신장하고, 신장한 데이터를 영역 C의 데이터(2048 내지 3072의 데이터)로서 연산 모듈(110)에 출력한다.
본 실시 형태에 따르면, 복수의 영역의 압축 데이터를, SDRAM의 1개의 영역에 저장하기 때문에, 신장 후의 데이터 사이즈로 버퍼 사이즈를 2배로 할 수 있다. 또한, 실시 형태 2와 같이 랜덤 액세스가 가능함과 함께, 실시 형태 3과 같이 연산 모듈로부터 출력되는 데이터가 압축되어 있는지 여부를 나타내는 플래그를 삭제할 수 있다.
이상, 본 발명자에 의해 이루어진 발명을 실시 형태에 기초하여 구체적으로 설명했지만, 본 발명은 이미 설명한 실시 형태에 한정되는 것이 아니라, 그 요지를 일탈하지 않는 범위에서 다양한 변경이 가능한 것은 말할 필요도 없다.
1 : 데이터 처리 시스템
11 : 압축 회로
21 : 신장 회로
91 내지 93 : 데이터 처리 시스템
100 : 반도체 장치
110 : 연산 모듈
111 : 연산기
112 : 버퍼
120 : 메모리 제어 모듈
121 : 액세스 회로
122 : 어드레스 변환기
130 : 데이터 버스
200 : SDRAM
201 : 압축 데이터
202 : 비압축 데이터
901 내지 903 : 반도체 장치
DF : 디블록 필터

Claims (15)

  1. 연산 모듈과 메모리 제어 모듈을 구비하고,
    상기 연산 모듈은,
    연산 처리를 실행하는 연산 처리부와,
    상기 연산 처리 결과의 데이터를 압축하는 압축부
    를 구비하고,
    상기 메모리 제어 모듈은,
    상기 압축된 데이터를 메모리에 기입하고, 상기 기입된 데이터를 상기 메모리로부터 판독하는 액세스부와,
    상기 메모리로부터 판독된 데이터를 신장하고, 상기 신장된 데이터를 상기 연산 모듈에 출력하는 신장부
    를 구비하는 반도체 장치.
  2. 제1항에 있어서,
    상기 연산 처리 결과의 데이터를 압축 처리 단위의 데이터로 변환하는 변환부를 구비하고,
    상기 압축부는 상기 압축 처리 단위의 데이터를 압축하는 반도체 장치.
  3. 제2항에 있어서,
    상기 변환부는, 상기 연산 처리 결과의 데이터를 소정의 길이로 어드레스가 연속되는 구조의 데이터로 변환하는 반도체 장치.
  4. 제2항에 있어서,
    상기 변환부는 상기 연산 처리 결과의 데이터를 상기 압축 처리 단위로 저장하는 버퍼인 반도체 장치.
  5. 제4항에 있어서,
    상기 연산 처리부는 상기 연산 처리의 처리 단위순으로 어드레스가 불연속인 데이터를 출력하고,
    상기 버퍼는 상기 출력된 데이터의 어드레스가 연속되도록 상기 데이터를 저장하는 반도체 장치.
  6. 제1항에 있어서,
    상기 신장부는 상기 메모리로부터 판독된 데이터가 압축되어 있는 경우, 상기 데이터를 신장하는 반도체 장치.
  7. 제6항에 있어서,
    상기 연산 처리부는 상기 메모리로부터 데이터를 판독하는 경우, 메모리 판독 커맨드와 함께 데이터의 압축 또는 비압축을 나타내는 플래그를 출력하고,
    상기 신장부는 상기 메모리로부터 판독된 데이터가 압축되어 있는 경우, 상기 플래그에 기초하여 상기 데이터를 신장하는 반도체 장치.
  8. 제1항에 있어서,
    상기 압축부는 데이터를 소정의 압축 단위로 압축하고, 상기 압축 단위의 선두 어드레스를 압축 전과 동일한 어드레스로 하여 상기 압축한 데이터를 상기 메모리에 기입하는 반도체 장치.
  9. 제1항에 있어서,
    상기 메모리 제어 모듈은 상기 연산 모듈로부터 요구된 어드레스를 변환하는 어드레스 변환부를 구비하고,
    상기 액세스부는 상기 변환된 어드레스로 상기 메모리에 액세스하는 반도체 장치.
  10. 제9항에 있어서,
    상기 신장부는 상기 요구된 어드레스가 제1 어드레스 영역에 포함되는 경우에 상기 데이터를 신장하고, 상기 요구된 어드레스가 제2 어드레스 영역에 포함되는 경우에 상기 데이터의 신장을 행하지 않는 반도체 장치.
  11. 제10항에 있어서,
    상기 제1 어드레스 영역의 변환 후의 어드레스 영역과, 상기 제2 어드레스 영역의 변환 후의 어드레스 영역은, 상기 메모리 상의 동일한 어드레스 영역에 포함되는 반도체 장치.
  12. 제9항에 있어서,
    상기 압축부는 데이터를 소정의 압축 단위로 압축하고, 상기 압축 단위의 데이터를 상기 메모리에 기입하도록 요구하고,
    상기 어드레스 변환부는 복수의 상기 압축 단위의 데이터가 상기 메모리 상의 동일한 어드레스 영역에 포함되도록 상기 어드레스를 변환하는 반도체 장치.
  13. 제12항에 있어서,
    상기 신장부는, 상기 요구된 어드레스가 제1 어드레스 영역에 포함되는 경우에 상기 메모리 상의 어드레스 영역 중 제1 메모리 영역의 데이터를 신장하고, 상기 요구된 어드레스가 제2 어드레스 영역에 포함되는 경우에 상기 메모리 상의 어드레스 영역 중 제2 메모리 영역의 데이터를 신장하는 반도체 장치.
  14. 반도체 장치와 상기 반도체 장치의 데이터를 기억하는 메모리를 구비한 데이터 처리 시스템으로서,
    상기 반도체 장치는 연산 모듈과 메모리 제어 모듈을 구비하고,
    상기 연산 모듈은,
    연산 처리를 실행하는 연산 처리부와,
    상기 연산 처리 결과의 데이터를 압축하는 압축부
    를 구비하고,
    상기 메모리 제어 모듈은,
    상기 압축된 데이터를 상기 메모리에 기입하고, 상기 기입된 데이터를 상기 메모리로부터 판독하는 액세스부와,
    상기 메모리로부터 판독된 데이터를 신장하고, 상기 신장된 데이터를 상기 연산 모듈에 출력하는 신장부
    를 구비하는 데이터 처리 시스템.
  15. 연산 모듈과 메모리 제어 모듈을 구비한 반도체 장치의 제어 방법으로서,
    상기 연산 모듈은,
    연산 처리를 실행하고,
    상기 연산 처리 결과의 데이터를 압축하고,
    상기 메모리 제어 모듈은,
    상기 압축된 데이터를 메모리에 기입하고, 상기 기입된 데이터를 상기 메모리로부터 판독하고,
    상기 메모리로부터 판독된 데이터를 신장하고, 상기 신장된 데이터를 상기 연산 모듈에 출력하는
    반도체 장치의 제어 방법.
KR1020160158509A 2015-11-30 2016-11-25 반도체 장치, 데이터 처리 시스템 및 반도체 장치의 제어 방법 KR20170063384A (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP2015232944A JP6679290B2 (ja) 2015-11-30 2015-11-30 半導体装置
JPJP-P-2015-232944 2015-11-30

Publications (1)

Publication Number Publication Date
KR20170063384A true KR20170063384A (ko) 2017-06-08

Family

ID=57754910

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020160158509A KR20170063384A (ko) 2015-11-30 2016-11-25 반도체 장치, 데이터 처리 시스템 및 반도체 장치의 제어 방법

Country Status (5)

Country Link
US (1) US10459646B2 (ko)
EP (1) EP3174294A1 (ko)
JP (1) JP6679290B2 (ko)
KR (1) KR20170063384A (ko)
CN (1) CN106980465B (ko)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10324656B1 (en) * 2016-07-29 2019-06-18 EMC IP Holding Company LLC Application-aware control for data services
JP2019061631A (ja) * 2017-09-28 2019-04-18 ルネサスエレクトロニクス株式会社 半導体装置、及びメモリアクセス方法
JP7257772B2 (ja) * 2018-10-31 2023-04-14 ルネサスエレクトロニクス株式会社 半導体装置を用いるシステム
JP7142562B2 (ja) 2018-12-25 2022-09-27 ルネサスエレクトロニクス株式会社 半導体装置、および、データのアクセスを制御するための方法
CN114168085B (zh) * 2021-12-16 2024-02-20 潍柴动力股份有限公司 变量处理方法、装置、设备及存储介质

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3037144B2 (ja) 1996-07-09 2000-04-24 神戸日本電気ソフトウェア株式会社 データ圧縮記憶演算装置
EP1627310A2 (en) * 2003-04-16 2006-02-22 Koninklijke Philips Electronics N.V. Selectable compression/decompression for data stored in memory
US8001294B2 (en) 2004-09-28 2011-08-16 Sony Computer Entertainment Inc. Methods and apparatus for providing a compressed network in a multi-processing system
JP4384130B2 (ja) * 2006-03-28 2009-12-16 株式会社東芝 動画像復号方法及び装置
US7801223B2 (en) * 2006-07-27 2010-09-21 Lsi Corporation Method for video decoder memory reduction
JP5194703B2 (ja) 2007-10-16 2013-05-08 ソニー株式会社 データ処理装置及び共有メモリのアクセス方法
US9063663B2 (en) * 2010-09-21 2015-06-23 Hitachi, Ltd. Semiconductor storage device and data control method thereof
US8781000B2 (en) 2010-12-30 2014-07-15 Vixs Systems, Inc. Dynamic video data compression

Also Published As

Publication number Publication date
CN106980465B (zh) 2021-06-29
CN106980465A (zh) 2017-07-25
JP6679290B2 (ja) 2020-04-15
JP2017102524A (ja) 2017-06-08
US20170153838A1 (en) 2017-06-01
US10459646B2 (en) 2019-10-29
EP3174294A1 (en) 2017-05-31

Similar Documents

Publication Publication Date Title
KR20170063384A (ko) 반도체 장치, 데이터 처리 시스템 및 반도체 장치의 제어 방법
JP5969914B2 (ja) 動画像圧縮伸張装置
US20120170667A1 (en) Dynamic video data compression
US9894371B2 (en) Video decoder memory bandwidth compression
TWI487380B (zh) A data processing device, a video coding / decoding device and a data processing system
JP2007293533A (ja) プロセッサシステム及びデータ転送方法
US20120147023A1 (en) Caching apparatus and method for video motion estimation and compensation
JP4209631B2 (ja) 符号化装置、復号化装置、及び、圧縮伸長システム
JP5526641B2 (ja) メモリコントローラ
US10229063B2 (en) Semiconductor device, data processing system, and semiconductor device control method
US20110099340A1 (en) Memory access control device and method thereof
US20180107616A1 (en) Method and device for storing an image into a memory
JP5731816B2 (ja) 画像処理装置、画像処理方法
JP2017195477A (ja) 画像処理装置及び画像処理方法
JP2009130599A (ja) 動画像復号装置
CN110392259A (zh) 影像压缩系统及利用影像压缩系统以压缩影像画面的方法
KR100221003B1 (ko) 디지탈화상 복호장치
JP5131150B2 (ja) 符号化装置、復号装置、及び画像処理システム
JP5654809B2 (ja) 画像処理装置、画像処理方法
JP2004120027A (ja) 画像処理装置
JP2015122584A (ja) 画像処理装置およびその制御方法
JP4906007B2 (ja) エンコーダシステム
JP2014045290A (ja) 画像出力装置、画像処理装置、画像出力制御方法及び画像出力制御プログラム
JP2003244725A (ja) 画像処理装置