KR20080027175A - 메모리 액세스 장치 - Google Patents

메모리 액세스 장치 Download PDF

Info

Publication number
KR20080027175A
KR20080027175A KR1020070095856A KR20070095856A KR20080027175A KR 20080027175 A KR20080027175 A KR 20080027175A KR 1020070095856 A KR1020070095856 A KR 1020070095856A KR 20070095856 A KR20070095856 A KR 20070095856A KR 20080027175 A KR20080027175 A KR 20080027175A
Authority
KR
South Korea
Prior art keywords
address
data
output
read
write
Prior art date
Application number
KR1020070095856A
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 KR20080027175A publication Critical patent/KR20080027175A/ko

Links

Images

Classifications

    • 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/06Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
    • G06F12/0607Interleaved addressing
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C7/00Arrangements for writing information into, or reading information out from, a digital store

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Bus Control (AREA)
  • Static Random-Access Memory (AREA)
  • Executing Machine-Instructions (AREA)
  • Memory System (AREA)

Abstract

효율적인 메모리 액세스를 실현한다. 메모리 액세스 장치는, 읽어내기 데이터의 데이터 사이즈 및 어드레스 공간에서의 어드레스에 기초하여, 제1 및 제2 메모리 중 적어도 한쪽에 대한 읽어내기 어드레스를 출력하는 어드레스 출력부와, 읽어내기 데이터의 데이터 사이즈 및 어드레스 공간에서의 어드레스에 기초하여, 제1 및 제2 메모리 중 적어도 한쪽에 대하여 읽어내기 요구를 출력하는 액세스 요구 출력부와, 읽어내기 데이터의 데이터 사이즈에 관한 정보 및 어드레스에 관한 정보를 출력하는 데이터 정보 출력부와, 읽어내기 어드레스와, 읽어내기 요구에 따라서 제1 및 제2 메모리 중 적어도 한쪽으로부터 출력되는 데이터로부터, 데이터 사이즈에 관한 정보 및 어드레스에 관한 정보에 기초하여 읽어내기 데이터를 생성하여 출력하는 읽어내기 데이터 출력부를 구비한다.
Figure P1020070095856
디지털 신호 처리 회로(DSP), 제어 회로, 메모리 액세스 회로, 메모리, 레지스터, 연산 회로, 버스, 페치 회로, 생성 회로, 레지스터, 버퍼, 비교 회로, 리드 버퍼, 합성 회로, 선택 회로

Description

메모리 액세스 장치{MEMORY ACCESS DEVICE}
본 발명은, 메모리 액세스 장치에 관한 것이다.
DSP(Digital Signal Processor) 등의 처리 회로에서는, 데이터 처리를 고속으로 행하기 위해서, 복수의 메모리를 내장하는 경우가 있다. 예를 들면, 특허 문헌 1에 개시된 DSP는, 데이터를 저장하기 위한 메모리를 2개 구비하고 있고, 이들 2개의 메모리에 동시에 액세스 가능하게 하기 위해서, 어드레스 버스 및 데이터 버스가 2조 설치되어 있다. 그리고, 이와 같은 DSP에서는, 예를 들면 승누산기(MAC: Multiply Accumulator)에 입력되는 2개의 데이터를, 2개의 메모리로부터 2개의 버스를 경유하여 동시에 읽어냄으로써, 연산 처리의 고속화를 실현하고 있다.
[특허 문헌 1] 일본 특개 2006-190389호 공보
DSP에서의 연산 처리를 더욱 고속화하기 위한 방법으로서, 승누산기를 복수 설치하는 것이 생각된다. 그런데, 예를 들면, 전술한 바와 같이 2개의 데이터를 동시에 읽어내는 것이 가능한 DSP에서 승누산기를 2개 설치하였다고 하여도, 메모 리로부터 동시에 읽어내는 것이 가능한 데이터는 2개이다. 그 때문에, 2개의 승누산기에서의 연산을 동시에 행하려고 하여도, 한쪽의 승누산기의 입력 데이터의 읽어내기는, 다른쪽의 승누산기의 입력 데이터의 읽어내기 완료 후에만 행할 수 있어, DSP에서의 연산 처리를 효과적으로 고속화할 수 없다.
본 발명은 상기 과제를 감안하여 이루어진 것으로, 효율적인 메모리 액세스를 실현할 수 있는 메모리 액세스 장치를 제공하는 것을 목적으로 한다.
상기 목적을 달성하기 위해서, 본 발명의 메모리 액세스 장치는, 제1 및 제2 메모리에 액세스하는 메모리 액세스 장치로서, 읽어내기 데이터의 데이터 사이즈 및 어드레스 공간에서의 어드레스에 기초하여, 상기 제1 및 제2 메모리 중 적어도 한쪽에 대한 읽어내기 어드레스를 출력하는 어드레스 출력부와, 상기 읽어내기 데이터의 상기 데이터 사이즈 및 상기 어드레스 공간에서의 상기 어드레스에 기초하여, 상기 제1 및 제2 메모리 중 적어도 한쪽에 대하여 읽어내기 요구를 출력하는 액세스 요구 출력부와, 상기 읽어내기 데이터의 상기 데이터 사이즈에 관한 정보 및 상기 어드레스에 관한 정보를 출력하는 데이터 정보 출력부와, 상기 어드레스 출력부로부터 출력되는 상기 읽어내기 어드레스와, 상기 액세스 요구 출력부로부터 출력되는 상기 읽어내기 요구에 따라서 상기 제1 및 제2 메모리 중 적어도 한쪽으로부터 출력되는 데이터로부터, 상기 데이터 정보 출력부로부터 출력되는 상기 데이터 사이즈에 관한 정보 및 상기 어드레스에 관한 정보에 기초하여 상기 읽어내기 데이터를 생성하여 출력하는 읽어내기 데이터 출력부를 구비하는 것으로 한다.
또한, 상기 메모리 액세스 장치에서, 상기 제1 메모리에는, 상기 어드레스 공간에서의 짝수 어드레스의 N비트폭의 데이터가 저장되고, 상기 제2 메모리에는, 상기 어드레스 공간에서의 홀수 어드레스의 N비트폭의 데이터가 저장되고, 상기 어드레스 출력부는, 상기 읽어내기 데이터의 상기 데이터 사이즈가 N비트인 경우에는, 상기 어드레스 공간에서의 상기 어드레스에 따른 상기 읽어내기 어드레스를 상기 제1 또는 제2 메모리에 출력하고, 상기 읽어내기 데이터의 상기 데이터 사이즈가 2N비트인 경우에는, 상기 어드레스 공간에서의 상기 어드레스에 따른 상기 읽어내기 어드레스를 상기 제1 및 제2 메모리에 출력하고, 상기 읽어내기 데이터 출력부는, 상기 읽어내기 데이터의 상기 데이터 사이즈가 N비트인 경우에는, 상기 제1 또는 제2 메모리로부터 출력되는 데이터를, 상기 읽어내기 데이터로서 출력하고, 상기 읽어내기 데이터의 상기 데이터 사이즈가 2N비트이고, 상기 어드레스 공간에서의 상기 어드레스가 짝수 어드레스인 경우에는, 상기 제1 메모리로부터 출력되는 데이터를 상위 비트, 상기 제2 메모리로부터 출력되는 데이터를 하위 비트로서 상기 읽어내기 데이터를 생성하여 출력하고, 상기 읽어내기 데이터의 상기 데이터 사이즈가 2N비트이고, 상기 어드레스 공간에서의 상기 어드레스가 홀수 어드레스인 경우에는, 상기 제2 메모리로부터 출력되는 데이터를 상위 비트, 상기 제1 메모리로부터 출력되는 데이터를 하위 비트로서 상기 읽어내기 데이터를 생성하여 출력하는 것으로 할 수 있다.
또한, 상기 메모리 액세스 장치에서, 상기 어드레스 출력부는, 기입 데이터의 데이터 사이즈 및 어드레스 공간에서의 어드레스에 기초하여, 상기 제1 및 제2 메모리 중 적어도 한쪽에 대한 기입 어드레스를 출력하고, 상기 액세스 요구 출력부는, 상기 기입 데이터의 상기 데이터 사이즈 및 상기 어드레스 공간에서의 상기 어드레스에 기초하여, 상기 제1 및 제2 메모리 중 적어도 한쪽에 대하여 기입 요구를 출력하고, 상기 데이터 정보 출력부는, 상기 기입 데이터의 상기 데이터 사이즈에 관한 정보 및 상기 어드레스에 관한 정보를 출력하고, 상기 데이터 정보 출력부로부터 출력되는 상기 데이터 사이즈에 관한 정보 및 상기 어드레스에 관한 정보에 기초하여, 상기 제1 및 제2 메모리 중 적어도 한쪽에 상기 기입 데이터를 출력하는 기입 데이터 출력부를 더 구비하는 것으로 할 수도 있다.
또한, 상기 메모리 액세스 장치에서, 상기 제1 메모리에는, 상기 어드레스 공간에서의 짝수 어드레스의 N비트폭의 데이터가 저장되고, 상기 제2 메모리에는, 상기 어드레스 공간에서의 홀수 어드레스의 N비트폭의 데이터가 저장되고, 상기 어드레스 출력부는, 상기 기입 데이터의 상기 데이터 사이즈가 N비트인 경우에는, 상기 어드레스 공간에서의 상기 어드레스에 따른 상기 기입 어드레스를 상기 제1 또는 제2 메모리에 출력하고, 상기 기입 데이터의 상기 데이터 사이즈가 2N비트인 경우에는, 상기 어드레스 공간에서의 상기 어드레스에 따른 상기 기입 어드레스를 상기 제1 및 제2 메모리에 출력하고, 상기 기입 데이터 출력부는, 상기 기입 데이터의 상기 데이터 사이즈가 N비트이고, 상기 어드레스 공간에서의 상기 어드레스가 짝수 어드레스인 경우에는, 상기 기입 데이터를 상기 제1 메모리에 출력하고, 상기 기입 데이터의 상기 데이터 사이즈가 N비트이고, 상기 어드레스 공간에서의 상기 어드레스가 홀수 어드레스인 경우에는, 상기 기입 데이터를 상기 제2 메모리에 출 력하고, 상기 기입 데이터의 상기 데이터 사이즈가 2N비트이고, 상기 어드레스 공간에서의 상기 어드레스가 짝수 어드레스인 경우에는, 상기 기입 데이터의 상위 N비트를 상기 제1 메모리에 출력하고, 상기 기입 데이터의 하위 N비트를 상기 제2 메모리에 출력하고, 상기 기입 데이터의 상기 데이터 사이즈가 2N비트이고, 상기 어드레스 공간에서의 상기 어드레스가 홀수 어드레스인 경우에는, 상기 기입 데이터의 상위 N비트를 상기 제2 메모리에 출력하고, 상기 기입 데이터의 하위 N비트를 상기 제1 메모리에 출력하는 것으로 할 수도 있다.
또한, 상기 메모리 액세스 장치에서, 상기 어드레스 출력부로부터 출력되는 상기 기입 어드레스가 기억되는 기입 어드레스 기억부와, 상기 기입 데이터 출력부로부터 출력되는 상기 기입 데이터가 상기 제1 또는 제2 메모리에 기입되기 전에 기억되는 기입 데이터 기억부와, 상기 어드레스 출력부로부터 출력되는 상기 읽어내기 어드레스와, 상기 기입 어드레스 기억부에 기억되어 있는 상기 기입 어드레스가 서로 다른 경우에는, 상기 읽어내기 어드레스를 상기 제1 또는 제2 메모리에 출력하는 어드레스 선택 회로를 더 구비하고, 상기 읽어내기 데이터 출력부는, 상기 어드레스 출력부로부터 출력되는 상기 읽어내기 어드레스와, 상기 기입 어드레스 기억부에 기억되어 있는 상기 기입 어드레스가 서로 다른 경우에는, 상기 제1 또는 제2 메모리 중 적어도 한쪽으로부터 출력되는 데이터로부터 상기 읽어내기 데이터를 생성하여 출력하고, 상기 어드레스 출력부로부터 출력되는 상기 읽어내기 어드레스와, 상기 기입 어드레스 기억부에 기억되어 있는 상기 기입 어드레스가 동일한 경우에는, 상기 기입 데이터 기억부에 기억되어 있는 상기 기입 데이터를 출력하는 것으로 할 수도 있다.
또한, 상기 메모리 액세스 장치에서, 상기 어드레스 출력부는, 클럭이 한쪽의 논리 레벨로부터 다른쪽의 논리 레벨로 변경되는 제1 타이밍에서, 상기 읽어내기 어드레스를 출력하고, 상기 액세스 요구 출력부는, 상기 제1 타이밍의 다음에, 상기 클럭이 상기 한쪽의 논리 레벨로부터 상기 다른쪽의 논리 레벨로 변경되는 제2 타이밍에서 상기 읽어내기 요구를 출력하는 것으로 할 수도 있다.
또한, 상기 메모리 액세스 장치에서, 상기 어드레스 출력부는, 클럭이 한쪽의 논리 레벨로부터 다른쪽의 논리 레벨로 변경되는 제1 타이밍에서, 상기 기입 어드레스를 출력하고, 상기 액세스 요구부는, 상기 제1 타이밍의 다음에, 상기 클럭이 상기 한쪽의 논리 레벨로부터 상기 다른쪽의 논리 레벨로 변경되는 제2 타이밍에서, 상기 어드레스 출력부로부터 출력되는 상기 기입 어드레스를 상기 어드레스 기억부에 기억시킴과 함께, 상기 기입 데이터 출력부로부터 출력되는 상기 기입 데이터를 상기 기입 데이터 기억부에 기억시키는 것으로 할 수도 있다.
효율적인 메모리 액세스를 실현할 수 있는 메모리 액세스 장치를 제공할 수 있다.
==회로 구성==
도 1은, 본 발명의 메모리 액세스 장치의 일 실시 형태인 디지털 신호 처리 회로(DSP: Digital Signal Processor)의 구성예를 도시하는 도면이다. DSP(10)는, 제어 회로(20), 메모리 액세스 회로(21A, 21B), 프로그램 메모리(22), 데이터 메모리(23Aa, 23Ab, 23Ba, 23Bb), 레지스터(24), 연산 회로(25), 어드레스 버스 BDAA, BDAB, 및 데이터 버스 BDA, BDB를 포함하여 구성된다.
제어 회로(20)는, 프로그램 메모리(22)에 저장된 프로그램을 읽어내어 실행함으로써, 디지털 신호 처리 회로(10)에서의 다양한 제어를 행한다. 예를 들면, 제어 회로(20)는, 디지털 신호 처리 회로(10)에서의 파이프 라인 처리의 제어나, 메모리 액세스 회로(21A, 21B)를 통한 데이터 메모리(23Aa 내지 23Bb)에의 액세스 제어, 연산 회로(25)에서의 연산 처리의 실행 제어 등을 행한다.
메모리 액세스 회로(21A)는, 제어 회로(20)로부터의 지시에 따라서, 데이터 메모리(23Aa, 23Ab)에의 액세스를 제어한다. 또한, 메모리 액세스 회로(21B)는, 제어 회로(20)로부터의 지시에 따라서, 데이터 메모리(23Ba, 23Bb)에의 액세스를 제어한다.
프로그램 메모리(22)는, 예를 들면, 플래시 메모리 등의 불휘발성의 기억 영역으로, 제어 회로(20)에 의해 실행되는 프로그램이 저장된다. 또한, 프로그램 메모리(22)는, 디지털 신호 처리 회로(10)의 외부에 설치되는 것으로 하여도 된다. 또한, 프로그램 메모리(22)를 휘발성의 메모리로 하고, 디지털 신호 처리 회로(10)의 외부로부터 프로그램을 읽어들이는 것으로 하여도 된다.
데이터 메모리(23Aa, 23Ab, 23Ba, 23Bb)는, 예를 들면, SRAM(Static Random Access Memory) 등의 기억 영역이며, DSP(10)의 각종 처리에서 사용되는 데이터나 생성되는 데이터가 저장된다. 또한, 데이터 메모리(23Aa, 23Ab, 23Ba, 23Bb)는, 디지털 신호 처리 회로(10)의 외부에 설치되는 것으로 하여도 된다.
레지스터(24)는, 복수의 범용 레지스터 등에 의해 구성되는 기억 영역이며, 주로, 데이터 메모리(23Aa, 23Ab, 23Ba, 23Bb)로부터 읽어내어진 데이터나, 연산 회로(25)에서의 처리 결과 등의 일시적인 저장 영역으로서 이용된다.
연산 회로(25)는, 레지스터(24)에 저장된 데이터를 입력 데이터로서, 승산이나 가산 등의 연산을 행하는 회로이다. 본 실시 형태의 연산 회로(25)에는, 2개의 승누산기(MAC:Multiply Accumulator)가 포함되어 있고, 레지스터(24)로부터 4개의 데이터를 동시에 읽어냄으로써, 2개의 승누산기에서의 연산을 동시에 행할 수 있다.
어드레스 버스 BDAA는, 예를 들면 24비트의 어드레스 버스 BDAA0, BDAA1에 의해 구성되는 버스이며, 데이터 메모리(23Aa, 23Ab)로부터 데이터를 읽어낼 때의 어드레스(읽어내기 어드레스), 또는, 데이터 메모리(23Aa, 23Ab)에 데이터를 기입할 때의 어드레스(기입 어드레스)가 출력된다. 또한, 데이터 버스 BDA는, 예를 들면 32비트의 데이터 버스이며, 데이터 메모리(23Aa, 23Ab)로부터 읽어내어진 데이터(읽어내기 데이터), 또는, 데이터 메모리(23Aa, 23Ab)에 기입되는 데이터(기입 데이터)가 출력된다.
어드레스 버스 BDAB는, 예를 들면 24비트의 어드레스 버스 BDAB0, BDAB1에 의해 구성되는 버스이며, 데이터 메모리(23Ba, 23Bb)로부터 데이터를 읽어낼 때의 어드레스(읽어내기 어드레스), 또는, 데이터 메모리(23Ba, 23Bb)에 데이터를 기입할 때의 어드레스(기입 어드레스)가 출력된다. 또한, 데이터 버스 BDB는, 예를 들 면 32비트의 데이터 버스이며, 데이터 메모리(23Ba, 23Bb)로부터 읽어내어진 데이터(읽어내기 데이터), 또는, 데이터 메모리(23Ba, 23Bb)에 기입되는 데이터(기입 데이터)가 출력된다.
도 2는, DSP(10)에서의 파이프 라인 제어의 예를 도시하는 도면이다. DSP(10)에서는, 제어 회로(20)의 제어에 의해, 파이프 라인 제어가 행해진다. 파이프 라인 제어에서는, 일련의 처리가 복수의 스테이지로 분할되어, 복수의 처리의 각 스테이지에서의 동작이 병행하여 실행된다. 도 2에 도시하는 예에서는, 페치 스테이지(F 스테이지), 디코드 스테이지(D 스테이지), 어드레스 생성 스테이지(A 스테이지), 실행 스테이지(E1 스테이지), 실행 스테이지(E2 스테이지)의 5개의 스테이지로 분할되어 있다. 그리고, 예를 들면, 시각(클럭 사이클) T1의 F 스테이지에 처리 A의 페치(페치 A)가 행해지면, 계속해서 시각 T2의 D 스테이지에, 페치된 명령의 디코드(디코드 A)가 행해진다. 그 후, 시각 T3의 A 스테이지에, 데이터에 액세스하기 위한 어드레스 생성(어드레스 A)이 행해지고, 시각 T4의 E1 스테이지에 예를 들면 승산 등이 실행되고(실행 A1), 시각 T5의 E2 스테이지에 가산 등이 실행된다(실행 A2). 그리고, 각 스테이지의 동작은 병행하여 실행 가능하기 때문에, 예를 들면, 시각 T2의 F 스테이지에 처리 B의 페치(페치 B)가 행해지고, 시각 T3의 D 스테이지에 처리 B의 디코드(디코드 B)가 행해진다.
도 3은, DSP(10)에서의 제어 회로(20) 및 메모리 액세스 회로(21A)의 상세한 구성예를 도시하는 도면이다. 제어 회로(20)는, 페치 회로(31), 파이프 라인 제어 회로(32), 및 어드레스 생성 회로(33)를 포함하여 구성된다. 또한, 메모리 액세스 회로(21A)는, 어드레스 레지스터(41a, 41b), 어드레스 버퍼(42a, 42b), 어드레스 비교 회로(43a, 43b), 어드레스 선택 회로(44a, 44b), 리드 데이터 선택 회로(45a, 45b), 리드 버퍼(46a, 46b), 리드 데이터 합성 회로(47), 설정 레지스터(51, 52), 라이트 데이터 선택 회로(53), 및 라이트 버퍼(54a, 54b)를 포함하여 구성된다. 또한, 데이터 메모리(23Aa)가 본 발명의 제1 메모리에 상당하고, 데이터 메모리(23Ab)가 본 발명의 제2 메모리에 상당한다. 또한, 파이프 라인 제어 회로(32)에 의해 본 발명의 액세스 요구 출력부가 실현되고, 어드레스 생성 회로(33)에 의해 본 발명의 어드레스 출력부 및 데이터 정보 출력부가 실현된다. 또한, 리드 데이터 선택 회로(45a), 리드 버퍼(46a), 리드 데이터 합성 회로(47)에 의해 본 발명의 읽어내기 데이터 출력부가 실현된다. 또한, 라이트 데이터 선택 회로(53)에 의해 본 발명의 기입 데이터 출력부가 실현되고, 어드레스 버퍼(42a, 42b)에 의해 본 발명의 기입 어드레스 기억부가 실현되고, 라이트 버퍼(54a, 54b)에 의해 본 발명의 기입 데이터 기억부가 실현된다. 또한, 메모리 액세스 회로(21B)에 대해서도, 메모리 액세스 회로(21A)와 마찬가지의 회로 구성으로 되어 있다.
페치 회로(31)는, 프로그램 카운터에 의해 지정되는 어드레스의 프로그램을 프로그램 메모리(22)로부터 읽어내어져, 파이프 라인 제어 회로(32)에 출력한다.
파이프 라인 제어 회로(32)는, 페치 회로(31)로부터 출력되는 프로그램을 디코드하고, 디코드에 의해 얻어지는 명령에 기초하여, 메모리 액세스 회로(21A, 21B)나 연산 회로(25)의 파이프 라인 제어를 행한다. 예를 들면, 파이프 라인 제어 회로(32)는, 데이터 메모리(23Aa)에 대한 읽어내기 요구(XRD0) 및 기입 요 구(XWR0), 데이터 메모리(23Ab)에 대한 읽어내기 요구(XRD1) 및 기입 요구(XWR1)를 적절한 타이밍에서 출력한다. 또한, 본 실시 형태에서는, 읽어내기 요구(XRD0)가 "0"인 경우에 데이터 메모리(23Aa)로부터 데이터가 읽어내어지고, 기입 요구(XWR0)가 "0"인 경우에 데이터 메모리(23Aa)에 대하여 데이터가 기입되는 것으로 한다. 또한, 본 실시 형태에서는, 읽어내기 요구(XRD1)가 "0"인 경우에 데이터 메모리(23Ab)로부터 데이터가 읽어내어지고, 기입 요구(XWR1)가 "0"인 경우에 데이터 메모리(23Ab)에 대하여 데이터가 기입되는 것으로 한다.
어드레스 생성 회로(33)는, 프로그램의 디코드 결과에 기초하여, 데이터 메모리(23Aa) 및 데이터 메모리(23Ab) 중 적어도 한쪽에 대하여 액세스할 때의 어드레스를 생성하여 어드레스 버스 BDAA에 출력한다. 본 실시 형태에서는, 어드레스 버스 BDAA0에 데이터 메모리(23Aa)에 대한 어드레스가 출력되고, 어드레스 버스 BDAA1에 데이터 메모리(23Ab)에 대한 어드레스가 출력된다.
어드레스 생성 회로(33)에서의 어드레스 생성에 대하여, 구체적으로 설명한다. 도 4는, 데이터 메모리(23Aa, 23Ab)의 어드레스 구성예를 도시하는 도면이다. 데이터 메모리(23Aa, 23Ab)는, 예를 들면 데이터 폭이 16비트(N비트)이고, 데이터 메모리(23Aa)에는 DSP(10)의 어드레스 공간에서의 짝수 어드레스의 데이터가 저장되고, 데이터 메모리(23Ab)에는 DSP(10)의 어드레스 공간에서의 홀수 어드레스의 데이터가 저장되어 있다. 예를 들면, 데이터 메모리(23Aa)의 n번지에는, DSP(10)의 어드레스 공간에서의 2n번지의 데이터가 저장되고, 데이터 메모리(23Ab)의 n번지에는, DSP(10)의 어드레스 공간에서의 2n+1번지의 데이터가 저장되어 있다.
도 5는, 데이터 메모리(23Aa, 23Ab)에의 액세스 패턴을 도시하는 도면이다. 도 5의 (a)는, 액세스 대상의 데이터의 DSP(10)의 어드레스 공간에서의 어드레스가 짝수(2n)이며, 데이터 사이즈가 16비트인 경우의 액세스를 도시하는 도면이다. 이 경우, 어드레스 생성 회로(33)는, 어드레스 공간에서의 어드레스(2n번지)와 데이터 사이즈(16비트)에 기초하여, 데이터 메모리(23Aa)에 대한 어드레스(n번지)를 생성하여, 어드레스 버스 BDAA0에 출력한다. 도 5의 (b)는, 액세스 대상의 데이터의 DSP(10)의 어드레스 공간에서의 어드레스가 홀수(2n+1)이고, 데이터 사이즈가 16비트인 경우의 액세스를 도시하는 도면이다. 이 경우, 어드레스 생성 회로(33)는, 어드레스 공간에서의 어드레스(2n+l번지)와 데이터 사이즈(16비트)에 기초하여, 데이터 메모리(23Ab)에 대한 어드레스(n번지)를 생성하여, 어드레스 버스 BDAA1에 출력한다. 도 5의 (c)는, 액세스 대상의 데이터의 DSP(10)의 어드레스 공간에서의 어드레스가 짝수(2n)이고, 데이터 사이즈가 32비트인 경우의 액세스를 도시하는 도면이다. 이 경우, 어드레스 생성 회로(33)는, 어드레스 공간에서의 어드레스(2n번지)와 데이터 사이즈(32비트)에 기초하여, 데이터 메모리(23Aa, 23Ab)에 대한 어드레스(n번지)를 생성하여, 어드레스 버스 BDAA0, BDAA1에 출력한다. 도 5의 (d)는, 액세스 대상의 데이터의 DSP(10)의 어드레스 공간에서의 어드레스가 홀수(2n+1)이고, 데이터 사이즈가 32비트인 경우의 액세스를 도시하는 도면이다. 이 경우, 어드레스 생성 회로(33)는, 어드레스 공간에서의 어드레스(2n+1번지)와 데이터 사이즈(32비트)에 기초하여, 데이터 메모리(23Ab)에 대한 어드레스(n번지)를 생성하여 어드레스 버스 BDAA1에 출력함과 함께, 데이터 메모리(23Aa)에 대한 어드레스(n+1 번지)를 생성하여 어드레스 버스 BDAA0에 출력한다.
어드레스 레지스터(41a)에는, 데이터 메모리(23Aa)에 데이터를 기입하는 경우에, 어드레스 버스 BDAA0에 출력된 어드레스가 저장된다. 또한, 어드레스 레지스터(41b)에는, 데이터 메모리(23Ab)에 데이터를 기입하는 경우에, 어드레스 버스 BDAA1에 출력된 어드레스가 저장된다. 구체적으로는, E1 스테이지에 어드레스 버스 BDAA0에 출력되어 있는 어드레스가, E2 스테이지에 어드레스 레지스터(41a)에 받아들여지고, E1 스테이지에 어드레스 버스 BDAA1에 출력되어 있는 어드레스가, E2 스테이지에 어드레스 레지스터(41b)에 받아들여지게 된다.
어드레스 버퍼(42a)에는, 데이터 메모리(23Aa)에 데이터를 기입하는 경우에, 어드레스 레지스터(41a)에 기억되어 있는 어드레스가 저장된다. 또한, 어드레스 버퍼(42b)에는, 데이터 메모리(23Ab)에 데이터를 기입하는 경우에, 어드레스 레지스터(41b)에 기억되어 있는 어드레스가 저장된다. 구체적으로는, E2 스테이지에 어드레스 레지스터(41a)에 기억되어 있는 어드레스가, 다음의 클럭 사이클에 어드레스 버퍼(42a)에 받아들여지고, E2 스테이지에 어드레스 레지스터(41b)에 기억되어 있는 어드레스가, 다음의 클럭 사이클에 어드레스 버퍼(42b)에 받아들여진다.
어드레스 비교 회로(43a)는, 어드레스 버스 BDAA0에 출력되어 있는 어드레스와, 어드레스 버퍼(42a)에 저장되어 있는 어드레스의 비교 결과를 출력한다. 또한, 어드레스 비교 회로(43b)는, 어드레스 버스 BDAA1에 출력되어 있는 어드레스와, 어드레스 버퍼(42b)에 저장되어 있는 어드레스의 비교 결과를 출력한다.
어드레스 선택 회로(44a)는, 어드레스 비교 회로(43a)로부터 출력되는 비교 결과에 기초하여, 어드레스 버스 BDAA0에 출력되어 있는 어드레스, 또는, 어드레스 버퍼(42a)에 저장되어 있는 어드레스 중 어느 한쪽을, 데이터 메모리(23Aa)의 어드레스 입력 단자에 입력한다. 구체적으로는, 어드레스 버스 BDAA0에 출력되어 있는 데이터 메모리(23Aa)에 대한 읽어내기 어드레스와, 어드레스 버퍼(42a)에 저장되어 있는 데이터 메모리(23Aa)에 대한 기입 어드레스가 동일한 경우에는, 어드레스 버퍼(42a)에 저장되어 있는 기입 어드레스가 데이터 메모리(23Aa)에 출력되고, 이들 2개의 어드레스가 서로 다른 경우에는, 어드레스 버스 BDAA0에 출력되어 있는 읽어내기 어드레스가 데이터 메모리(23Aa)에 출력된다. 또한, 어드레스 선택 회로(44b)는, 어드레스 비교 회로(43b)로부터 출력되는 비교 결과에 기초하여, 어드레스 버스 BDAA1에 출력되어 있는 어드레스, 또는, 어드레스 버퍼(42b)에 출력되어 있는 어드레스 중 어느 한쪽을, 데이터 메모리(23Ab)의 어드레스 입력 단자에 입력한다. 구체적으로는, 어드레스 버스 BDAA1에 출력되어 있는 데이터 메모리(23Ab)에 대한 읽어내기 어드레스와, 어드레스 버퍼(42b)에 저장되어 있는 데이터 메모리(23Ab)에 대한 기입 어드레스가 동일한 경우에는, 어드레스 버퍼(42b)에 저장되어 있는 기입 어드레스가 데이터 메모리(23Ab)에 출력되고, 이들 2개의 어드레스가 서로 다른 경우에는, 어드레스 버스 BDAA1에 출력되어 있는 읽어내기 어드레스가 데이터 메모리(23Ab)에 출력된다.
리드 데이터 선택 회로(45a)는, 어드레스 비교 회로(43a)로부터 출력되는 비교 결과에 기초하여, 데이터 메모리(23Aa)의 데이터 출력 단자로부터 출력되는 데이터, 또는, 라이트 버퍼(54a)에 저장되어 있는 데이터 메모리(23Aa)에 기입될 예 정의 데이터 중 어느 한쪽을 리드 버퍼(46a)에 출력한다. 구체적으로는, 어드레스 버스 BDAA0에 출력되어 있는 데이터 메모리(23Aa)에 대한 읽어내기 어드레스와, 어드레스 버퍼(42a)에 저장되어 있는 데이터 메모리(23Aa)에 대한 기입 어드레스가 동일한 경우에는, 라이트 버퍼(54a)에 저장되어 있는 데이터가 리드 버퍼(46a)에 출력되고, 이들 2개의 어드레스가 서로 다른 경우에는, 데이터 메모리(23Aa)의 데이터 출력 단자로부터 출력되는 데이터가 리드 버퍼(46a)에 출력된다. 또한, 리드 데이터 선택 회로(45b)는, 어드레스 비교 회로(43b)로부터 출력되는 비교 결과에 기초하여, 데이터 메모리(23Ab)의 데이터 출력 단자로부터 출력되는 데이터, 또는, 라이트 버퍼(54b)에 저장되어 있는 데이터 메모리(23Ab)에 기입될 예정의 데이터 중 어느 한쪽을 리드 버퍼(46b)에 출력한다. 구체적으로는, 어드레스 버스 BDAA1에 출력되어 있는 데이터 메모리(23Ab)에 대한 읽어내기 어드레스와, 어드레스 버퍼(42b)에 저장되어 있는 데이터 메모리(23Ab)에 대한 기입 어드레스가 동일한 경우에는, 라이트 버퍼(54b)에 저장되어 있는 데이터가 리드 버퍼(46b)에 출력되고, 이들 2개의 어드레스가 서로 다른 경우에는, 데이터 메모리(23Ab)의 데이터 출력 단자로부터 출력되는 데이터가 리드 버퍼(46b)에 출력된다.
리드 버퍼(46a)에는, 리드 데이터 선택 회로(45a)로부터 출력되는 데이터가 저장된다. 구체적으로는, 데이터 메모리(23Aa)로부터 데이터가 읽어내어지는 경우, A 스테이지에 어드레스 버스 BDAA0에 읽어내기 어드레스가 출력되고, E1 스테이지에 데이터 메모리(23Aa) 또는 라이트 버퍼(54a)로부터 데이터가 읽어내어지고, 읽어내어진 데이터가 E2 스테이지에 리드 버퍼(46a)에 저장된다. 또한, 리드 버 퍼(46b)에는, 리드 데이터 선택 회로(45b)로부터 출력되는 데이터가 저장된다. 구체적으로는, 데이터 메모리(23Ab)로부터 데이터가 읽어내어지는 경우, A 스테이지에 어드레스 버스 BDAA1에 읽어내기 어드레스가 출력되고, E1 스테이지에 데이터 메모리(23Ab) 또는 라이트 버퍼(54b)로부터 데이터가 읽어내어지고, 읽어내어진 데이터가 E2 스테이지에 리드 버퍼(46b)에 저장된다.
리드 데이터 합성 회로(47)는, 설정 레지스터(51)에 기억되어 있는 데이터 사이즈에 관한 정보 및 어드레스에 관한 정보에 기초하여, 리드 버퍼(46a, 46b) 중 적어도 한쪽에 저장되어 있는 데이터로부터 읽어내기 데이터를 생성하여 데이터 버스 BDA에 출력한다. 구체적으로는, 읽어내기 데이터의 데이터 사이즈가 16비트이고, 읽어내기 데이터의 어드레스 공간에서의 어드레스가 짝수인 경우(도 5의 (a)의 경우), 리드 버퍼(46a)에 저장되어 있는 데이터가 데이터 버스 BDA의 하위 16비트[15:0]로 출력된다. 또한, 읽어내기 데이터의 데이터 사이즈가 16비트이고, 읽어내기 데이터의 어드레스 공간에서의 어드레스가 홀수인 경우(도 5의 (b)의 경우), 리드 버퍼(46b)에 저장되어 있는 데이터가 데이터 버스 BDA의 하위 16비트[15:0]로 출력된다. 또한, 읽어내기 데이터의 데이터 사이즈가 32비트이고, 읽어내기 데이터의 어드레스 공간에서의 어드레스가 짝수인 경우(도 5의 (c)의 경우), 리드 버퍼(46a)에 저장되어 있는 데이터가 데이터 버스 BDA의 상위 16비트[31:16]로 출력되고, 리드 버퍼(46b)에 저장되어 있는 데이터가 데이터 버스 BDA의 하위 16비트[15:0]로 출력된다. 또한, 읽어내기 데이터의 데이터 사이즈가 32비트이고, 읽어내기 데이터의 어드레스 공간에서의 어드레스가 홀수인 경우(도 5의 (d)의 경우), 리드 버퍼(46b)에 저장되어 있는 데이터가 데이터 버스 BDA의 상위 16비트[31:16]로 출력되고, 리드 버퍼(46a)에 저장되어 있는 데이터가 데이터 버스 BDA의 하위 16비트[15:0]로 출력된다.
설정 레지스터(51)에는, 데이터 메모리(23Aa, 23Ab)로부터의 읽어내기 데이터, 또는, 데이터 메모리(23Aa, 23Ab)에의 기입 데이터에 대한, 데이터 사이즈에 관한 정보 및 어드레스 공간에서의 어드레스에 관한 정보가 저장된다. 본 실시 형태에서는, 데이터 사이즈에 관한 정보는, 데이터 사이즈가 16비트인 경우에 "1", 데이터 사이즈가 32비트인 경우에 "0"으로 나타내어지는 것으로 한다. 또한, 본 실시 형태에서는, 어드레스에 관한 정보는, 어드레스가 짝수인 경우에는 "0", 어드레스가 홀수인 경우에는 "1"로 나타내어지는 것으로 한다.
설정 레지스터(52)에는, 데이터 메모리(42a) 또는 데이터 메모리(42b)에 데이터가 기입되는 경우에, 설정 레지스터(51)에 설정된 데이터가 저장된다. 구체적으로는, E1 스테이지에 설정 레지스터(51)에 설정된 데이터가, E2 스테이지에 설정 레지스터(52)에 받아들여진다.
라이트 데이터 선택 회로(53)는, 설정 레지스터(52)에 저장되어 있는 데이터 사이즈에 관한 정보 및 어드레스에 관한 정보에 기초하여, 데이터 버스 BDA에 출력되어 있는 기입 데이터를, 라이트 버퍼(54a, 54b) 중 적어도 한쪽에 출력한다. 구체적으로는, 기입 데이터의 데이터 사이즈가 16비트이고, 기입 데이터의 어드레스 공간에서의 어드레스가 짝수인 경우(도 5의 (a)의 경우), 데이터 버스 BDA의 하위 16비트[15:0]로 출력되어 있는 데이터가, 라이트 버퍼(54a)에 출력된다. 또한, 기 입 데이터의 데이터 사이즈가 16비트이고, 기입 데이터의 어드레스 공간에서의 어드레스가 홀수인 경우(도 5의 (b)의 경우), 데이터 버스 BDA의 하위 16비트[15:0] 로 출력되어 있는 데이터가, 라이트 버퍼(54b)에 출력된다. 또한, 기입 데이터의 데이터 사이즈가 32비트이고, 기입 데이터의 어드레스 공간에서의 어드레스가 짝수인 경우(도 5의 (c)의 경우), 데이터 버스 BDA의 상위 16비트[31:16]로 출력되어 있는 데이터가, 라이트 버퍼(54a)에 출력되고, 데이터 버스 BDA의 하위 16비트[15:0]로 출력되어 있는 데이터가, 라이트 버퍼(54b)에 출력된다. 또한, 기입 데이터의 데이터 사이즈가 32비트이고, 기입 데이터의 어드레스 공간에서의 어드레스가 홀수인 경우(도 5의 (d)의 경우), 데이터 버스 BDA의 상위 16비트[31:16]로 출력되어 있는 데이터가, 라이트 버퍼(54b)에 출력되고, 데이터 버스 BDA의 하위 16비트[15:0]로 출력되어 있는 데이터가, 라이트 버퍼(54a)에 출력된다.
==메모리 액세스 동작==
DSP(10)에서의 메모리 액세스 동작에 대해서, 도 6∼도 23을 참조하여 설명한다. 또한, 도 6∼도 21에서는, 메모리 액세스 동작에 관련되는 부분을 실선으로 나타내고, 관련되지 않는 부분을 파선으로 나타내고 있다.
도 6은, 데이터 사이즈가 16비트이고, 어드레스 공간에서의 어드레스가 짝수인 경우의 라이트 동작을 도시하는 도면이다. 어드레스 공간에서의 어드레스가 짝수이기 때문에, A 스테이지에, 어드레스 생성 회로(33)에서 데이터 메모리(23Aa)에 대한 기입 어드레스가 생성된다. 그리고, 생성된 기입 어드레스는, E1 스테이지에, 어드레스 버스 BDAA0에 출력된다. 그리고, E2 스테이지에는, 어드레스 버스 BDAA0에 출력된 기입 어드레스가 어드레스 레지스터(41a)에 받아들여짐과 함께, 데이터 버스 BDA의 하위 16비트[15:0]에 16비트의 기입 데이터가 출력된다. 또한, 어드레스 생성 회로(33)는, E1 스테이지에, 데이터 사이즈가 16비트인 것을 나타내는 정보 "1"과, 어드레스가 짝수인 것을 나타내는 정보 "0"을 설정 레지스터(51)에 기입한다. 그리고, 설정 레지스터(51)에 기입된 정보는, E2 스테이지에, 설정 레지스터(52)에 받아들여진다.
그리고, E2 스테이지의 다음의 클럭 사이클로 되면, 어드레스 레지스터(41a)에 저장되어 있는 어드레스가 어드레스 버퍼(42a)에 받아들여진다. 또한, 라이트 데이터 선택 회로(53)는, 설정 레지스터(52)에 저장된 정보에 따라서, 데이터 버스 BDA의 하위 16비트[15:0]로 출력되어 있는 데이터를, 라이트 버퍼(54a)에 출력한다.
도 6의 경우, 라이트의 다음으로 리드가 계속되고 있지 않기 때문에, 파이프 라인 제어 회로(32)의 제어에 의해, 어드레스 선택 회로(44a)는, 어드레스 버퍼(42a)에 저장되어 있는 어드레스를 데이터 메모리(23Aa)의 어드레스 입력 단자에 입력한다. 그 후, 파이프 라인 제어 회로(32)로부터 데이터 메모리(23Aa)에 대하여 기입 요구(XWR0="0")가 출력됨으로써, 라이트 버퍼(54a)에 저장되어 있는 데이터가, 데이터 메모리(23Aa)에 기입된다.
도 7은, 데이터 사이즈가 16비트이고, 어드레스 공간에서의 어드레스가 홀수인 경우의 라이트 동작을 도시하는 도면이다. 어드레스 공간에서의 어드레스가 홀수이기 때문에, A 스테이지에, 어드레스 생성 회로(33)에서 데이터 메모리(23Ab)에 대한 기입 어드레스가 생성된다. 그리고, 생성된 기입 어드레스는, E1 스테이지에, 어드레스 버스 BDAA1에 출력된다. 그리고, E2 스테이지에는, 어드레스 버스 BDAA1에 출력된 기입 어드레스가 어드레스 레지스터(41b)에 받아들여짐과 함께, 데이터 버스 BDA의 하위 16비트[15:0]로 16비트의 기입 데이터가 출력된다. 또한, 어드레스 생성 회로(33)는, E1 스테이지에, 데이터 사이즈가 16비트인 것을 나타내는 정보 "1"과, 어드레스가 홀수인 것을 나타내는 정보 "1"을 설정 레지스터(51)에 기입한다. 그리고, 설정 레지스터(51)에 기입된 정보는, E2 스테이지에, 설정 레지스터(52)에 받아들여진다.
그리고, E2 스테이지의 다음의 클럭 사이클로 되면, 어드레스 레지스터(41b)에 저장되어 있는 어드레스가 어드레스 버퍼(42b)에 받아들여진다. 또한, 라이트 데이터 선택 회로(53)는, 설정 레지스터(52)에 저장된 정보에 따라서, 데이터 버스 BDA의 하위 16비트[15:0]로 출력되어 있는 데이터를, 라이트 버퍼(54b)에 출력한다.
도 7의 경우, 라이트의 다음으로 리드가 계속되고 있지 않기 때문에, 파이프 라인 제어 회로(32)의 제어에 의해, 어드레스 선택 회로(44b)는, 어드레스 버퍼(42b)에 저장되어 있는 어드레스를 데이터 메모리(23Ab)의 어드레스 입력 단자에 입력한다. 그 후, 파이프 라인 제어 회로(32)로부터 데이터 메모리(23Ab)에 대하여 기입 요구(XWR1="0")가 출력됨으로써, 라이트 버퍼(54b)에 저장되어 있는 데이터가, 데이터 메모리(23Ab)에 기입된다.
도 8은, 데이터 사이즈가 32비트이고, 어드레스 공간에서의 어드레스가 짝수 인 경우의 라이트 동작을 도시하는 도면이다. 우선, A 스테이지에, 어드레스 생성 회로(33)에서 데이터 메모리(23Aa, 23Ab)에 대한 기입 어드레스가 생성된다. 그리고, E1 스테이지에, 데이터 메모리(23Aa)에 대한 기입 어드레스가 어드레스 버스 BDAA0에 출력되고, 데이터 메모리(23Ab)에 대한 기입 어드레스가 어드레스 버스 BDAA1에 출력된다. 그리고, E2 스테이지에는, 어드레스 버스 BDAA0에 출력된 기입 어드레스가 어드레스 레지스터(41a)에 받아들여지고, 어드레스 버스 BDAA1에 출력된 기입 어드레스가 어드레스 레지스터(41b)에 받아들여진다. 또한, E2 스테이지에는, 데이터 버스 BDA[31:0]에 기입 데이터가 출력된다. 또한, 어드레스 생성 회로(33)는, E1 스테이지에, 데이터 사이즈가 32비트인 것을 나타내는 정보 "0"과, 어드레스가 짝수인 것을 나타내는 정보 "0"을 설정 레지스터(51)에 기입한다. 그리고, 설정 레지스터(51)에 기입된 정보는, E2 스테이지에, 설정 레지스터(52)에 받아들여진다.
그리고, E2 스테이지의 다음의 클럭 사이클로 되면, 어드레스 레지스터(41a)에 저장되어 있는 어드레스가 어드레스 버퍼(42a)에 받아들여지고, 어드레스 레지스터(41b)에 저장되어 있는 어드레스가 어드레스 버퍼(42b)에 받아들여진다. 또한, 라이트 데이터 선택 회로(53)는, 설정 레지스터(52)에 저장된 정보에 따라서, 데이터 버스 BDA의 상위 16비트[31:16]로 출력되어 있는 데이터를 라이트 버퍼(54a)에 출력하고, 데이터 버스 BDA의 하위 16비트[15:0]로 출력되어 있는 데이터를 라이트 버퍼(54b)에 출력한다.
도 8의 경우, 라이트의 다음으로 리드가 계속되고 있지 않기 때문에, 파이프 라인 제어 회로(32)의 제어에 의해, 어드레스 선택 회로(44a)는, 어드레스 버퍼(42a)에 저장되어 있는 어드레스를 데이터 메모리(23Aa)의 어드레스 입력 단자에 입력한다. 마찬가지로, 어드레스 선택 회로(44b)는, 어드레스 버퍼(42b)에 저장되어 있는 어드레스를 데이터 메모리(23Ab)의 어드레스 입력 단자에 입력한다. 그 후, 파이프 라인 제어 회로(32)로부터 데이터 메모리(23Aa)에 대하여 기입 요구(XWR0="0")가 출력됨으로써, 라이트 버퍼(54a)에 저장되어 있는 데이터가, 데이터 메모리(23Aa)에 기입된다. 마찬가지로, 파이프 라인 제어 회로(32)로부터 데이터 메모리(23Ab)에 대하여 기입 요구(XWR1="0")가 출력됨으로써, 라이트 버퍼(54b)에 저장되어 있는 데이터가, 데이터 메모리(23Ab)에 기입된다.
도 9는, 데이터 사이즈가 32비트이고, 어드레스 공간에서의 어드레스가 홀수인 경우의 라이트 동작을 도시하는 도면이다. 우선, A 스테이지에, 어드레스 생성 회로(33)에서 데이터 메모리(23Aa, 23Ab)에 대한 기입 어드레스가 생성된다. 그리고, E1 스테이지에, 데이터 메모리(23Aa)에 대한 기입 어드레스가 어드레스 버스 BDAA0에 출력되고, 데이터 메모리(23Ab)에 대한 기입 어드레스가 어드레스 버스 BDAA1에 출력된다. 그리고, E2 스테이지에는, 어드레스 버스 BDAA0에 출력된 기입 어드레스가 어드레스 레지스터(41a)에 받아들여지고, 어드레스 버스 BDAA1에 출력된 기입 어드레스가 어드레스 레지스터(41b)에 받아들여진다. 또한, E2 스테이지에는, 데이터 버스 BDA[31:0]에 기입 데이터가 출력된다. 또한, 어드레스 생성 회로(33)는, E1 스테이지에, 데이터 사이즈가 32비트인 것을 나타내는 정보 "0"과, 어드레스가 홀수인 것을 나타내는 정보 "1"을 설정 레지스터(51)에 기입한다. 그 리고, 설정 레지스터(51)에 기입된 정보는, E2 스테이지에, 설정 레지스터(52)에 받아들여진다.
그리고, E2 스테이지의 다음의 클럭 사이클로 되면, 어드레스 레지스터(41a)에 저장되어 있는 어드레스가 어드레스 버퍼(42a)에 받아들여지고, 어드레스 레지스터(41b)에 저장되어 있는 어드레스가 어드레스 버퍼(42b)에 받아들여진다. 또한, 라이트 데이터 선택 회로(53)는, 설정 레지스터(52)에 저장된 정보에 따라서, 데이터 버스 BDA의 상위 16비트[31:16]로 출력되어 있는 데이터를 라이트 버퍼(54b)에 출력하고, 데이터 버스 BDA의 하위 16비트[15:0]로 출력되어 있는 데이터를 라이트 버퍼(54a)에 출력한다.
도 9의 경우, 라이트의 다음으로 리드가 계속되고 있지 않기 때문에, 파이프 라인 제어 회로(32)의 제어에 의해, 어드레스 선택 회로(44a)는, 어드레스 버퍼(42a)에 저장되어 있는 어드레스를 데이터 메모리(23Aa)의 어드레스 입력 단자에 입력한다. 마찬가지로, 어드레스 선택 회로(44b)는, 어드레스 버퍼(42b)에 저장되어 있는 어드레스를 데이터 메모리(23Ab)의 어드레스 입력 단자에 입력한다. 그 후, 파이프 라인 제어 회로(32)로부터 데이터 메모리(23Aa)에 대하여 기입 요구(XWR0="0")가 출력됨으로써, 라이트 버퍼(54a)에 저장되어 있는 데이터가, 데이터 메모리(23Aa)에 기입된다. 마찬가지로, 파이프 라인 제어 회로(32)로부터 데이터 메모리(23Ab)에 대하여 기입 요구(XWR1="0")가 출력됨으로써, 라이트 버퍼(54b)에 저장되어 있는 데이터가, 데이터 메모리(23Ab)에 기입된다.
도 10은, 데이터 사이즈가 16비트이고, 어드레스 공간에서의 어드레스가 짝 수인 경우의 리드 동작을 도시하는 도면이다. 어드레스 공간에서의 어드레스가 짝수이기 때문에, A 스테이지에, 어드레스 생성 회로(33)에서 데이터 메모리(23Aa)에 대한 읽어내기 어드레스가 생성된다. 그리고, 생성된 읽어내기 어드레스는, E1 스테이지에, 어드레스 버스 BDAA0에 출력된다. 또한, 어드레스 생성 회로(33)는, E1 스테이지에, 데이터 사이즈가 16비트인 것을 나타내는 정보 "1"과, 어드레스가 짝수인 것을 나타내는 정보 "0"을 설정 레지스터(51)에 기입한다.
도 10의 경우, 리드의 전에 라이트가 행해지고 있지 않기 때문에, 파이프 라인 제어 회로(32)의 제어에 의해, 어드레스 선택 회로(44a)는, 어드레스 버스 BDAA0에 출력되어 있는 어드레스를 데이터 메모리(23Aa)의 어드레스 입력 단자에 입력한다. 그리고, 파이프 라인 제어 회로(32)로부터 데이터 메모리(23Aa)에 대하여 읽어내기 요구(XRD0="0")가 출력되면, 데이터 메모리(23Aa)로부터 해당의 데이터가 출력된다. 또한, 리드의 전에 라이트가 행해지고 있지 않기 때문에, 파이프 라인 제어 회로(32)의 제어에 의해, 리드 데이터 선택 회로(45a)는, 데이터 메모리(23Aa)로부터 출력되는 데이터를, 리드 버퍼(46a)에 출력한다. 그리고, 리드 데이터 합성 회로(47)는, 설정 레지스터(51)에 저장된 정보에 따라서, 리드 버퍼(46a)에 저장되어 있는 데이터를, 데이터 버스 BDA의 하위 16비트[15:0]로 출력한다.
도 11은, 데이터 사이즈가 16비트이고, 어드레스 공간에서의 어드레스가 홀수인 경우의 리드 동작을 도시하는 도면이다. 어드레스 공간에서의 어드레스가 홀수이기 때문에, A 스테이지에, 어드레스 생성 회로(33)에서 데이터 메모리(23Ab)에 대한 읽어내기 어드레스가 생성된다. 그리고, 생성된 읽어내기 어드레스는, E1 스테이지에, 어드레스 버스 BDAA1에 출력된다. 또한, 어드레스 생성 회로(33)는, E1 스테이지에, 데이터 사이즈가 16비트인 것을 나타내는 정보 "1"과, 어드레스가 홀수인 것을 나타내는 정보 "1"을 설정 레지스터(51)에 기입한다.
도 11의 경우, 리드의 전에 라이트가 행해지고 있지 않기 때문에, 파이프 라인 제어 회로(32)의 제어에 의해, 어드레스 선택 회로(44b)는, 어드레스 버스 BDAA1에 출력되어 있는 어드레스를 데이터 메모리(23Ab)의 어드레스 입력 단자에 입력한다. 그리고, 파이프 라인 제어 회로(32)로부터 데이터 메모리(23Ab)에 대하여 읽어내기 요구(XRD1="0")가 출력되면, 데이터 메모리(23Ab)로부터 해당의 데이터가 출력된다. 또한, 리드의 전에 라이트가 행해지고 있지 않기 때문에, 파이프 라인 제어 회로(32)의 제어에 의해, 리드 데이터 선택 회로(45b)는, 데이터 메모리(23Ab)로부터 출력되는 데이터를, 리드 버퍼(46b)에 출력한다. 그리고, 리드 데이터 합성 회로(47)는, 설정 레지스터(51)에 저장된 정보에 따라서, 리드 버퍼(46b)에 저장되어 있는 데이터를, 데이터 버스 BDA의 하위 16비트[15:0]로 출력한다.
도 12는, 데이터 사이즈가 32비트이고, 어드레스 공간에서의 어드레스가 짝수인 경우의 리드 동작을 도시하는 도면이다. 우선, A 스테이지에, 어드레스 생성 회로(33)에서 데이터 메모리(23Aa, 23Ab)에 대한 읽어내기 어드레스가 생성된다. 그리고, E1 스테이지에, 데이터 메모리(23Aa)에 대한 읽어내기 어드레스가 어드레스 버스 BDAA0에 출력되고, 데이터 메모리(23Ab)에 대한 읽어내기 어드레스가 어드 레스 버스 BDAA1에 출력된다. 또한, 어드레스 생성 회로(33)는, E1 스테이지에, 데이터 사이즈가 32비트인 것을 나타내는 정보 "0"과, 어드레스가 짝수인 것을 나타내는 정보 "0"을 설정 레지스터(51)에 기입한다.
도 12의 경우, 리드의 전에 라이트가 행해지고 있지 않기 때문에, 파이프 라인 제어 회로(32)의 제어에 의해, 어드레스 선택 회로(44a)는, 어드레스 버스 BDAA0에 출력되어 있는 어드레스를 데이터 메모리(23Aa)의 어드레스 입력 단자에 입력한다. 그리고, 파이프 라인 제어 회로(32)로부터 데이터 메모리(23Aa)에 대하여 읽어내기 요구(XRD0="0")가 출력되면, 데이터 메모리(23Aa)로부터 해당의 데이터가 출력된다. 마찬가지로, 어드레스 선택 회로(44b)는, 어드레스 버스 BDAA1에 출력되어 있는 어드레스를 데이터 메모리(23Ab)의 어드레스 입력 단자에 입력한다. 그리고, 파이프 라인 제어 회로(32)로부터 데이터 메모리(23Ab)에 대하여 읽어내기 요구(XRD1="0")가 출력되면, 데이터 메모리(23Ab)로부터 해당의 데이터가 출력된다. 또한, 리드의 전에 라이트가 행해지고 있지 않기 때문에, 파이프 라인 제어 회로(32)의 제어에 의해, 리드 데이터 선택 회로(45a)는, 데이터 메모리(23Aa)로부터 출력되는 데이터를, 리드 버퍼(46a)에 출력한다. 마찬가지로, 리드 데이터 선택 회로(45b)는, 데이터 메모리(23Ab)로부터 출력되는 데이터를, 리드 버퍼(46b)에 출력한다. 그리고, 리드 데이터 합성 회로(47)는, 설정 레지스터(51)에 저장된 정보에 따라서, 리드 버퍼(46a)에 저장되어 있는 데이터를 데이터 버스 BDA의 상위 16비트[31:16]로 출력하고, 리드 버퍼(46b)에 저장되어 있는 데이터를 데이터 버스 BDA의 하위 16비트[15:0]로 출력한다.
도 13은, 데이터 사이즈가 32비트이고, 어드레스 공간에서의 어드레스가 홀수인 경우의 리드 동작을 도시하는 도면이다. 우선, A 스테이지에, 어드레스 생성 회로(33)에서 데이터 메모리(23Aa, 23Ab)에 대한 읽어내기 어드레스가 생성된다. 그리고, E1 스테이지에, 데이터 메모리(23Aa)에 대한 읽어내기 어드레스가 어드레스 버스 BDAA0에 출력되고, 데이터 메모리(23Ab)에 대한 읽어내기 어드레스가 어드레스 버스 BDAA1에 출력된다. 또한, 어드레스 생성 회로(33)는, E1 스테이지에, 데이터 사이즈가 32비트인 것을 나타내는 정보 "0"과, 어드레스가 홀수인 것을 나타내는 정보 "1"을 설정 레지스터(51)에 기입한다.
도 13의 경우, 리드의 전에 라이트가 행해지고 있지 않기 때문에, 파이프 라인 제어 회로(32)의 제어에 의해, 어드레스 선택 회로(44a)는, 어드레스 버스 BDAA0에 출력되어 있는 어드레스를 데이터 메모리(23Aa)의 어드레스 입력 단자에 입력한다. 그리고, 파이프 라인 제어 회로(32)로부터 데이터 메모리(23Aa)에 대하여 읽어내기 요구(XRD0="0")가 출력되면, 데이터 메모리(23Aa)로부터 해당의 데이터가 출력된다. 마찬가지로, 어드레스 선택 회로(44b)는, 어드레스 버스 BDAA1에 출력되어 있는 어드레스를 데이터 메모리(23Ab)의 어드레스 입력 단자에 입력한다. 그리고, 파이프 라인 제어 회로(32)로부터 데이터 메모리(23Ab)에 대하여 읽어내기 요구(XRD1="0")가 출력되면, 데이터 메모리(23Ab)로부터 해당의 데이터가 출력된다. 또한, 리드의 전에 라이트가 행해지고 있지 않기 때문에, 파이프 라인 제어 회로(32)의 제어에 의해, 리드 데이터 선택 회로(45a)는, 데이터 메모리(23Aa)로부터 출력되는 데이터를, 리드 버퍼(46a)에 출력한다. 마찬가지로, 리드 데이터 선 택 회로(45b)는, 데이터 메모리(23Ab)로부터 출력되는 데이터를, 리드 버퍼(46b)에 출력한다. 그리고, 리드 데이터 합성 회로(47)는, 설정 레지스터(51)에 저장된 정보에 따라서, 리드 버퍼(46b)에 저장되어 있는 데이터를 데이터 버스 BDA의 상위 16비트[31:16]로 출력하고, 리드 버퍼(46a)에 저장되어 있는 데이터를 데이터 버스 BDA의 하위 16비트[15:0]로 출력한다.
도 14는, 데이터 사이즈가 16비트이고, 어드레스 공간에서의 어드레스가 짝수이고, 동일 어드레스에 대한 라이트 동작에 계속되는 리드 동작을 도시하는 도면이다. 어드레스 공간에서의 어드레스가 짝수이기 때문에, A 스테이지에, 어드레스 생성 회로(33)에서 데이터 메모리(23Aa)에 대한 읽어내기 어드레스가 생성된다. 그리고, 생성된 읽어내기 어드레스는, E1 스테이지에, 어드레스 버스 BDAA0에 출력된다. 또한, 어드레스 생성 회로(33)는, E1 스테이지에, 데이터 사이즈가 16비트인 것을 나타내는 정보 "1"과, 어드레스가 짝수인 것을 나타내는 정보 "0"을 설정 레지스터(51)에 기입한다.
도 14의 경우, 리드의 전에 라이트가 행해지고 있기 때문에, 파이프 라인 제어 회로(32)의 제어에 의해, 어드레스 비교 회로(43a)는, 어드레스 버스 BDAA0에 출력되어 있는 어드레스와, 어드레스 버퍼(42a)에 저장되어 있는 어드레스의 비교 결과를 출력한다. 도 14의 경우, 이들의 어드레스가 동일하기 때문에, 어드레스 선택 회로(44a)는, 어드레스 비교 회로(43a)로부터 출력되는 비교 결과에 따라서, 어드레스 버퍼(42a)에 저장되어 있는 어드레스를, 데이터 메모리(23Aa)의 어드레스 입력 단자에 입력한다. 또한, 리드 데이터 선택 회로(45a)는, 어드레스 비교 회 로(43a)로부터 출력되는 비교 결과에 따라서, 라이트 버퍼(54a)에 저장되어 있는 데이터를, 리드 버퍼(46a)에 출력한다. 그리고, 리드 데이터 합성 회로(47)는, 설정 레지스터(51)에 저장된 정보에 따라서, 리드 버퍼(46a)에 저장되어 있는 데이터를, 데이터 버스 BDA의 하위 16비트[15:0]로 출력한다. 또한, 파이프 라인 제어 회로(32)로부터 데이터 메모리(23Aa)에 대하여 기입 요구(XWR0="0")가 출력되면, 라이트 버퍼(54a)에 저장되어 있는 데이터가, 데이터 메모리(23Aa)에 기입된다.
도 15는, 데이터 사이즈가 16비트이고, 어드레스 공간에서의 어드레스가 짝수이고, 서로 다른 어드레스에 대한 라이트 동작에 계속되는 리드 동작을 도시하는 도면이다. 어드레스 공간에서의 어드레스가 짝수이기 때문에, A 스테이지에, 어드레스 생성 회로(33)에서 데이터 메모리(23Aa)에 대한 읽어내기 어드레스가 생성된다. 그리고, 생성된 읽어내기 어드레스는, E1 스테이지에, 어드레스 버스 BDAA0에 출력된다. 또한, 어드레스 생성 회로(33)는, E1 스테이지에, 데이터 사이즈가 16비트인 것을 나타내는 정보 "1"과, 어드레스가 짝수인 것을 나타내는 정보 "0"을 설정 레지스터(51)에 기입한다.
도 15의 경우, 리드의 전에 라이트가 행해지고 있기 때문에, 파이프 라인 제어 회로(32)의 제어에 의해, 어드레스 비교 회로(43a)는, 어드레스 버스 BDAA0에 출력되어 있는 어드레스와, 어드레스 버퍼(42a)에 저장되어 있는 어드레스의 비교 결과를 출력한다. 도 15의 경우, 이들의 어드레스가 서로 다르기 때문에, 어드레스 선택 회로(44a)는, 어드레스 비교 회로(43a)로부터 출력되는 비교 결과에 따라서, 어드레스 버스 BDAA0에 출력되어 있는 어드레스를, 데이터 메모리(23Aa)의 어 드레스 입력 단자에 입력한다. 또한, 파이프 라인 제어 회로(32)로부터 데이터 메모리(23Aa)에 대하여 읽어내기 요구(XRD0="0")가 출력되면, 데이터 메모리(23Aa)로부터 해당의 데이터가 출력된다. 그리고, 리드 데이터 선택 회로(45a)는, 어드레스 비교 회로(43a)로부터 출력되는 비교 결과에 따라서, 데이터 메모리(23Aa)로부터 출력되는 데이터를 리드 버퍼(46a)에 출력한다. 또한, 리드 데이터 합성 회로(47)는, 설정 레지스터(51)에 저장된 정보에 따라서, 리드 버퍼(46a)에 저장되어 있는 데이터를, 데이터 버스 BDA의 하위 16비트[15:0]로 출력한다. 또한, 어드레스 버퍼(42a)에 저장되어 있는 어드레스 및 라이트 버퍼(54a)에 저장되어 있는 데이터는 클리어되지 않고 유지된다. 그리고, 데이터 메모리(23Aa)로부터 데이터의 읽어내기가 행해진 후의 적절한 타이밍에서, 어드레스 버퍼(42a)에 저장되어 있는 어드레스가 데이터 메모리(23Aa)의 어드레스 입력 단자에 입력되고, 기입 요구(XWR0="0")가 출력됨으로써, 데이터 메모리(23Aa)에 대하여 데이터의 기입이 행해진다.
도 16은, 데이터 사이즈가 16비트이고, 어드레스 공간에서의 어드레스가 홀수이고, 동일 어드레스에 대한 라이트 동작에 계속되는 리드 동작을 도시하는 도면이다. 어드레스 공간에서의 어드레스가 홀수이기 때문에, A 스테이지에, 어드레스 생성 회로(33)에서 데이터 메모리(23Ab)에 대한 읽어내기 어드레스가 생성된다. 그리고, 생성된 읽어내기 어드레스는, E1 스테이지에, 어드레스 버스 BDAA1에 출력된다. 또한, 어드레스 생성 회로(33)는, E1 스테이지에, 데이터 사이즈가 16비트인 것을 나타내는 정보 "1"과, 어드레스가 홀수인 것을 나타내는 정보 "1"을 설정 레지스터(51)에 기입한다.
도 16의 경우, 리드의 전에 라이트가 행해지고 있기 때문에, 파이프 라인 제어 회로(32)의 제어에 의해, 어드레스 비교 회로(43b)는, 어드레스 버스 BDAA1에 출력되어 있는 어드레스와, 어드레스 버퍼(42b)에 저장되어 있는 어드레스의 비교 결과를 출력한다. 도 16의 경우, 이들의 어드레스가 동일하기 때문에, 어드레스 선택 회로(44b)는, 어드레스 비교 회로(43b)로부터 출력되는 비교 결과에 따라서, 어드레스 버퍼(42b)에 저장되어 있는 어드레스를, 데이터 메모리(23Ab)의 어드레스 입력 단자에 입력한다. 또한, 리드 데이터 선택 회로(45b)는, 어드레스 비교 회로(43b)로부터 출력되는 비교 결과에 따라서, 라이트 버퍼(54b)에 저장되어 있는 데이터를, 리드 버퍼(46b)에 출력한다. 그리고, 리드 데이터 합성 회로(47)는, 설정 레지스터(51)에 저장된 정보에 따라서, 리드 버퍼(46b)에 저장되어 있는 데이터를, 데이터 버스 BDA의 하위 16비트[15:0]로 출력한다. 또한, 파이프 라인 제어 회로(32)로부터 데이터 메모리(23Ab)에 대하여 기입 요구(XWR1="0")가 출력되면, 라이트 버퍼(54b)에 저장되어 있는 데이터가, 데이터 메모리(23Ab)에 기입된다.
도 17은, 데이터 사이즈가 16비트이고, 어드레스 공간에서의 어드레스가 홀수이고, 서로 다른 어드레스에 대한 라이트 동작에 계속되는 리드 동작을 도시하는 도면이다. 어드레스 공간에서의 어드레스가 홀수이기 때문에, A 스테이지에, 어드레스 생성 회로(33)에서 데이터 메모리(23Ab)에 대한 읽어내기 어드레스가 생성된다. 그리고, 생성된 읽어내기 어드레스는, E1 스테이지에, 어드레스 버스 BDAA1에 출력된다. 또한, 어드레스 생성 회로(33)는, E1 스테이지에, 데이터 사이즈가 16 비트인 것을 나타내는 정보 "1"과, 어드레스가 홀수인 것을 나타내는 정보 "1"을 설정 레지스터(51)에 기입한다.
도 17의 경우, 리드의 전에 라이트가 행해지고 있기 때문에, 파이프 라인 제어 회로(32)의 제어에 의해, 어드레스 비교 회로(43b)는, 어드레스 버스 BDAA1에 출력되어 있는 어드레스와, 어드레스 버퍼(42b)에 저장되어 있는 어드레스의 비교 결과를 출력한다. 도 17의 경우, 이들의 어드레스가 서로 다르기 때문에, 어드레스 선택 회로(44b)는, 어드레스 비교 회로(43b)로부터 출력되는 비교 결과에 따라서, 어드레스 버스 BDAA1에 출력되어 있는 어드레스를, 데이터 메모리(23Ab)의 어드레스 입력 단자에 입력한다. 또한, 파이프 라인 제어 회로(32)로부터 데이터 메모리(23Ab)에 대하여 읽어내기 요구(XRD1="0")가 출력되면, 데이터 메모리(23Ab)로부터 해당의 데이터가 출력된다. 그리고, 리드 데이터 선택 회로(45b)는, 어드레스 비교 회로(43b)로부터 출력되는 비교 결과에 따라서, 데이터 메모리(23Ab)로부터 출력되는 데이터를 리드 버퍼(46b)에 출력한다. 또한, 리드 데이터 합성 회로(47)는, 설정 레지스터(51)에 저장된 정보에 따라서, 리드 버퍼(46b)에 저장되어 있는 데이터를, 데이터 버스 BDA의 하위 16비트[15:0]로 출력한다. 또한, 어드레스 버퍼(42b)에 저장되어 있는 어드레스 및 라이트 버퍼(54b)에 저장되어 있는 데이터는 클리어되지 않고 유지된다. 그리고, 데이터 메모리(23Ab)로부터 데이터의 읽어내기가 행해진 후의 적절한 타이밍에서, 어드레스 버퍼(42b)에 저장되어 있는 어드레스가 데이터 메모리(23Ab)의 어드레스 입력 단자에 입력되어, 기입 요구(XWR1="0")가 출력됨으로써, 데이터 메모리(23Ab)에 대하여 데이터의 기입이 행 해진다.
도 18은 데이터 사이즈가 32비트이고, 어드레스 공간에서의 어드레스가 짝수이고, 동일 어드레스에 대한 라이트 동작에 계속되는 리드 동작을 도시하는 도면이다. 우선, A 스테이지에, 어드레스 생성 회로(33)에서 데이터 메모리(23Aa, 23Ab)에 대한 읽어내기 어드레스가 생성된다. 그리고, E1 스테이지에, 데이터 메모리(23Aa)에 대한 읽어내기 어드레스가 어드레스 버스 BDAA0에 출력되고, 데이터 메모리(23Ab)에 대한 읽어내기 어드레스가 어드레스 버스 BDAA1에 출력된다. 또한, 어드레스 생성 회로(33)는, E1 스테이지에, 데이터 사이즈가 32비트인 것을 나타내는 정보 "0"과, 어드레스가 짝수인 것을 나타내는 정보 "0"을 설정 레지스터(51)에 기입한다.
도 18의 경우, 리드의 전에 라이트가 행해지고 있기 때문에, 파이프 라인 제어 회로(32)의 제어에 의해, 어드레스 비교 회로(43a)는, 어드레스 버스 BDAA0에 출력되어 있는 어드레스와, 어드레스 버퍼(42a)에 저장되어 있는 어드레스의 비교 결과를 출력한다. 도 18의 경우, 이들의 어드레스가 동일하기 때문에, 어드레스 선택 회로(44a)는, 어드레스 비교 회로(43a)로부터 출력되는 비교 결과에 따라서, 어드레스 버퍼(42a)에 저장되어 있는 어드레스를, 데이터 메모리(23Aa)의 어드레스 입력 단자에 입력한다. 또한, 리드 데이터 선택 회로(45a)는, 어드레스 비교 회로(43a)로부터 출력되는 비교 결과에 따라서, 라이트 버퍼(54a)에 저장되어 있는 데이터를, 리드 버퍼(46a)에 출력한다. 마찬가지로, 어드레스 비교 회로(43b)는, 어드레스 버스 BDAA1에 출력되어 있는 어드레스와, 어드레스 버퍼(42b)에 저장되어 있는 어드레스의 비교 결과를 출력한다. 도 18의 경우, 이들의 어드레스가 동일하기 때문에, 어드레스 선택 회로(44b)는, 어드레스 비교 회로(43b)로부터 출력되는 비교 결과에 따라서, 어드레스 버퍼(42b)에 저장되어 있는 어드레스를, 데이터 메모리(23Ab)의 어드레스 입력 단자에 입력한다. 또한, 리드 데이터 선택 회로(45b)는, 어드레스 비교 회로(43b)로부터 출력되는 비교 결과에 따라서, 라이트 버퍼(54b)에 저장되어 있는 데이터를, 리드 버퍼(46b)에 출력한다. 그리고, 리드 데이터 합성 회로(47)는, 설정 레지스터(51)에 저장된 정보에 따라서, 리드 버퍼(46a)에 저장되어 있는 데이터를 데이터 버스 BDA의 상위 16비트[31:16]로 출력하고, 리드 버퍼(46b)에 저장되어 있는 데이터를 데이터 버스 BDA의 하위 16비트[15:0]로 출력한다. 또한, 파이프 라인 제어 회로(32)로부터 데이터 메모리(23Aa)에 대하여 기입 요구(XWR0="0")가 출력되면, 라이트 버퍼(54a)에 저장되어 있는 데이터가, 데이터 메모리(23Aa)에 기입된다. 마찬가지로, 데이터 메모리(23Ab)에 대하여 기입 요구(XWR1="0")가 출력되면, 라이트 버퍼(54b)에 저장되어 있는 데이터가, 데이터 메모리(23Ab)에 기입된다.
도 19는, 데이터 사이즈가 32비트이고, 어드레스 공간에서의 어드레스가 짝수이고, 서로 다른 어드레스에 대한 라이트 동작에 계속되는 리드 동작을 도시하는 도면이다. 우선, A 스테이지에, 어드레스 생성 회로(33)에서 데이터 메모리(23Aa, 23Ab)에 대한 읽어내기 어드레스가 생성된다. 그리고, E1 스테이지에, 데이터 메모리(23Aa)에 대한 읽어내기 어드레스가 어드레스 버스 BDAA0에 출력되고, 데이터 메모리(23Ab)에 대한 읽어내기 어드레스가 어드레스 버스 BDAA1에 출력된다. 또 한, 어드레스 생성 회로(33)는, E1 스테이지에, 데이터 사이즈가 32비트인 것을 나타내는 정보 "0"과, 어드레스가 짝수인 것을 나타내는 정보 "0"을 설정 레지스터(51)에 기입한다.
도 19의 경우, 리드의 전에 라이트가 행해지고 있기 때문에, 파이프 라인 제어 회로(32)의 제어에 의해, 어드레스 비교 회로(43a)는, 어드레스 버스 BDAA0에 출력되어 있는 어드레스와, 어드레스 버퍼(42a)에 저장되어 있는 어드레스의 비교 결과를 출력한다. 도 19의 경우, 이들의 어드레스가 서로 다르기 때문에, 어드레스 선택 회로(44a)는, 어드레스 비교 회로(43a)로부터 출력되는 비교 결과에 따라서, 어드레스 버스 BDAA0에 출력되어 있는 어드레스를, 데이터 메모리(23Aa)의 어드레스 입력 단자에 입력한다. 또한, 파이프 라인 제어 회로(32)로부터 데이터 메모리(23Aa)에 대하여 읽어내기 요구(XRD0="0")가 출력되면, 데이터 메모리(23Aa)로부터 해당의 데이터가 출력된다. 마찬가지로, 어드레스 비교 회로(43b)는, 어드레스 버스 BDAA1에 출력되어 있는 어드레스와, 어드레스 버퍼(42b)에 저장되어 있는 어드레스의 비교 결과를 출력한다. 도 19의 경우, 이들의 어드레스가 서로 다르기 때문에, 어드레스 선택 회로(44b)는, 어드레스 비교 회로(43b)로부터 출력되는 비교 결과에 따라서, 어드레스 버스 BDAA1에 출력되어 있는 어드레스를, 데이터 메모리(23Ab)의 어드레스 입력 단자에 입력한다. 또한, 파이프 라인 제어 회로(32)로부터 데이터 메모리(23Ab)에 대하여 읽어내기 요구(XRD1="0")가 출력되면, 데이터 메모리(23Ab)로부터 해당의 데이터가 출력된다.
그리고, 리드 데이터 선택 회로(45a)는, 어드레스 비교 회로(43a)로부터 출 력되는 비교 결과에 따라서, 데이터 메모리(23Aa)로부터 출력되는 데이터를 리드 버퍼(46a)에 출력한다. 마찬가지로, 리드 데이터 선택 회로(45b)는, 어드레스 비교 회로(43b)로부터 출력되는 비교 결과에 따라서, 데이터 메모리(23Ab)로부터 출력되는 데이터를 리드 버퍼(46b)에 출력한다. 또한, 리드 데이터 합성 회로(47)는, 설정 레지스터(51)에 저장된 정보에 따라서, 리드 버퍼(46a)에 저장되어 있는 데이터를 데이터 버스 BDA의 상위 16비트[31:16]로 출력하고, 리드 버퍼(46b)에 저장되어 있는 데이터를 데이터 버스 BDA의 하위 16비트[15:0]로 출력한다. 또한, 어드레스 버퍼(42a, 42b)에 저장되어 있는 어드레스 및 라이트 버퍼(54a, 54b)에 저장되어 있는 데이터는 클리어되지 않고 유지된다. 그리고, 데이터 메모리(23Aa, 23Ab)로부터 데이터의 읽어내기가 행해진 후의 적절한 타이밍에서, 어드레스 버퍼(42a, 42b)에 저장되어 있는 어드레스가 각각 데이터 메모리(23Aa, 23Ab)의 어드레스 입력 단자에 입력되고, 기입 요구(XWR0="0", XWR1="0")가 출력됨으로써, 데이터 메모리(23Aa, 23Ab)에 대하여 데이터의 기입이 행해진다.
도 20은, 데이터 사이즈가 32비트이고, 어드레스 공간에서의 어드레스가 홀수이고, 동일 어드레스에 대한 라이트 동작에 계속되는 리드 동작을 도시하는 도면이다. 우선, A 스테이지에, 어드레스 생성 회로(33)에서 데이터 메모리(23Aa, 23Ab)에 대한 읽어내기 어드레스가 생성된다. 그리고, E1 스테이지에, 데이터 메모리(23Aa)에 대한 읽어내기 어드레스가 어드레스 버스 BDAA0에 출력되고, 데이터 메모리(23Ab)에 대한 읽어내기 어드레스가 어드레스 버스 BDAA1에 출력된다. 또한, 어드레스 생성 회로(33)는, E1 스테이지에, 데이터 사이즈가 32비트인 것을 나 타내는 정보 "0"과, 어드레스가 홀수인 것을 나타내는 정보 "1"을 설정 레지스터(51)에 기입한다.
도 20의 경우, 리드의 전에 라이트가 행해지고 있기 때문에, 파이프 라인 제어 회로(32)의 제어에 의해, 어드레스 비교 회로(43a)는, 어드레스 버스 BDAA0에 출력되어 있는 어드레스와, 어드레스 버퍼(42a)에 저장되어 있는 어드레스의 비교 결과를 출력한다. 도 20의 경우, 이들의 어드레스가 동일하기 때문에, 어드레스 선택 회로(44a)는, 어드레스 비교 회로(43a)로부터 출력되는 비교 결과에 따라서, 어드레스 버퍼(42a)에 저장되어 있는 어드레스를, 데이터 메모리(23Aa)의 어드레스 입력 단자에 입력한다. 또한, 리드 데이터 선택 회로(45a)는, 어드레스 비교 회로(43a)로부터 출력되는 비교 결과에 따라서, 라이트 버퍼(54a)에 저장되어 있는 데이터를, 리드 버퍼(46a)에 출력한다. 마찬가지로, 어드레스 비교 회로(43b)는, 어드레스 버스 BDAA1에 출력되어 있는 어드레스와, 어드레스 버퍼(42b)에 저장되어 있는 어드레스의 비교 결과를 출력한다. 도 20의 경우, 이들의 어드레스가 동일하기 때문에, 어드레스 선택 회로(44b)는, 어드레스 비교 회로(43b)로부터 출력되는 비교 결과에 따라서, 어드레스 버퍼(42b)에 저장되어 있는 어드레스를, 데이터 메모리(23Ab)의 어드레스 입력 단자에 입력한다. 또한, 리드 데이터 선택 회로(45b)는, 어드레스 비교 회로(43b)로부터 출력되는 비교 결과에 따라서, 라이트 버퍼(54b)에 저장되어 있는 데이터를, 리드 버퍼(46b)에 출력한다. 그리고, 리드 데이터 합성 회로(47)는, 설정 레지스터(51)에 저장된 정보에 따라서, 리드 버퍼(46b)에 저장되어 있는 데이터를 데이터 버스 BDA의 상위 16비트[31:16]로 출력 하고, 리드 버퍼(46a)에 저장되어 있는 데이터를 데이터 버스 BDA의 하위 16비트[15:0]로 출력한다. 또한, 파이프 라인 제어 회로(32)로부터 데이터 메모리(23Aa)에 대하여 기입 요구(XWR0="0")가 출력되면, 라이트 버퍼(54a)에 저장되어 있는 데이터가, 데이터 메모리(23Aa)에 기입된다. 마찬가지로, 데이터 메모리(23Ab)에 대하여 기입 요구(XWR1="0")가 출력되면, 라이트 버퍼(54b)에 저장되어 있는 데이터가, 데이터 메모리(23Ab)에 기입된다.
도 21은, 데이터 사이즈가 32비트이고, 어드레스 공간에서의 어드레스가 홀수이고, 서로 다른 어드레스에 대한 라이트 동작에 계속되는 리드 동작을 도시하는 도면이다. 우선, A 스테이지에, 어드레스 생성 회로(33)에서 데이터 메모리(23Aa, 23Ab)에 대한 읽어내기 어드레스가 생성된다. 그리고, E1 스테이지에, 데이터 메모리(23Aa)에 대한 읽어내기 어드레스가 어드레스 버스 BDAA0에 출력되고, 데이터 메모리(23Ab)에 대한 읽어내기 어드레스가 어드레스 버스 BDAA1에 출력된다. 또한, 어드레스 생성 회로(33)는, E1 스테이지에, 데이터 사이즈가 32비트인 것을 나타내는 정보 "0"과, 어드레스가 홀수인 것을 나타내는 정보 "1"을 설정 레지스터(51)에 기입한다.
도 21의 경우, 리드의 전에 라이트가 행해지고 있기 때문에, 파이프 라인 제어 회로(32)의 제어에 의해, 어드레스 비교 회로(43a)는, 어드레스 버스 BDAA0에 출력되어 있는 어드레스와, 어드레스 버퍼(42a)에 저장되어 있는 어드레스의 비교 결과를 출력한다. 도 21의 경우, 이들의 어드레스가 서로 다르기 때문에, 어드레스 선택 회로(44a)는, 어드레스 비교 회로(43a)로부터 출력되는 비교 결과에 따라 서, 어드레스 버스 BDAA0에 출력되어 있는 어드레스를, 데이터 메모리(23Aa)의 어드레스 입력 단자에 입력한다. 또한, 파이프 라인 제어 회로(32)로부터 데이터 메모리(23Aa)에 대하여 읽어내기 요구(XRD0="0")가 출력되면, 데이터 메모리(23Aa)로부터 해당의 데이터가 출력된다. 마찬가지로, 어드레스 비교 회로(43b)는, 어드레스 버스 BDAA1에 출력되어 있는 어드레스와, 어드레스 버퍼(42b)에 저장되어 있는 어드레스의 비교 결과를 출력한다. 도 21의 경우, 이들의 어드레스가 서로 다르기 때문에, 어드레스 선택 회로(44b)는, 어드레스 비교 회로(43b)로부터 출력되는 비교 결과에 따라서, 어드레스 버스 BDAA1에 출력되어 있는 어드레스를, 데이터 메모리(23Ab)의 어드레스 입력 단자에 입력한다. 또한, 파이프 라인 제어 회로(32)로부터 데이터 메모리(23Ab)에 대하여 읽어내기 요구(XRD1="0")가 출력되면, 데이터 메모리(23Ab)로부터 해당의 데이터가 출력된다.
그리고, 리드 데이터 선택 회로(45a)는, 어드레스 비교 회로(43a)로부터 출력되는 비교 결과에 따라서, 데이터 메모리(23Aa)로부터 출력되는 데이터를 리드 버퍼(46a)에 출력한다. 마찬가지로, 리드 데이터 선택 회로(45b)는, 어드레스 비교 회로(43b)로부터 출력되는 비교 결과에 따라서, 데이터 메모리(23Ab)로부터 출력되는 데이터를 리드 버퍼(46b)에 출력한다. 또한, 리드 데이터 합성 회로(47)는, 설정 레지스터(51)에 저장된 정보에 따라서, 리드 버퍼(46b)에 저장되어 있는 데이터를 데이터 버스 BDA의 상위 16비트[31:16]로 출력하고, 리드 버퍼(46a)에 저장되어 있는 데이터를 데이터 버스 BDA의 하위 16비트[15:0]로 출력한다. 또한, 어드레스 버퍼(42a, 42b)에 저장되어 있는 어드레스 및 라이트 버퍼(54a, 54b)에 저장되어 있는 데이터는 클리어되지 않고 유지된다. 그리고, 데이터 메모리(23Aa, 23Ab)로부터 데이터의 읽어내기가 행해진 후의 적절한 타이밍에서, 어드레스 버퍼(42a, 42b)에 저장되어 있는 어드레스가 각각 데이터 메모리(23Aa, 23Ab)의 어드레스 입력 단자에 입력되고, 기입 요구(XWR0="0", XWR1="0")가 출력됨으로써, 데이터 메모리(23Aa, 23Ab)에 대하여 데이터의 기입이 행해진다.
도 22는, 리드 동작 시의 타이밍을 도시하는 도면이다. 여기에서는, 도 6에 도시한 바와 같이 리드 동작이 행해지는 경우를 예로서 설명한다. 우선, A 스테이지에서의 클럭의 상승(제1 타이밍)을 계기로 하여, 어드레스 생성 회로(33)에서 읽어내기 어드레스가 생성되고, 시각 t1에, 어드레스 버스 BDAA0에 어드레스가 출력된다. 그리고, 시각 t2에서의, 클럭의 다음의 상승(제2 타이밍)을 계기로 하여, 데이터 메모리(23Aa)에 대하여 읽어내기 요구(XRD0="0")가 출력되고, 시각 t3부터, 데이터 메모리(23Aa)로부터 해당의 데이터의 출력이 개시된다. 또한, 시각 t4에서의, 클럭의 다음의 상승을 계기로 하여, 데이터 메모리(23Aa)로부터 출력되는 데이터가 리드 버퍼(46a)에 받아들여진다. 또한, 시각 t5에서의, 클럭의 다음의 상승을 계기로 하여, 리드 버퍼(46a)에 저장되어 있는 데이터가 데이터 버스 BDA의 하위 16비트[15:0]로 출력되고, 레지스터(24)에 저장된다. 그리고, 레지스터(24)에 저장된 데이터는, 연산 회로(25)에 의한 연산 처리에 이용된다.
이와 같이, DSP(10)에서는, E1 스테이지의 1개 전의 클럭 사이클인 A 스테이지에, 읽어내기 어드레스가 어드레스 버스 BDAA에 출력되어 있다. 따라서, 예를 들면, E1 스테이지에서의 클럭의 상승을 계기로 하여 읽어내기 어드레스를 어드레 스 버스 BDAA에 출력하고, E1 스테이지에서의 클럭의 하강을 계기로 하여 데이터 메모리(23Aa, 23Ab)에 데이터의 읽어내기 요구를 출력하는 경우와 비교하여, 읽어내기 어드레스를 셋업하는 시간에 여유를 갖게 할 수 있다. 또한, DSP(10)에서는, 데이터 메모리(23Aa, 23Ab)로부터 출력되는 데이터가, E2 스테이지에 리드 버퍼에 받아들여진다. 따라서, 예를 들면, E1 스테이지에서의 클럭의 하강을 계기로 하여 데이터 메모리(23Aa, 23Ab)에 데이터의 읽어내기 요구가 출력되고, E2 스테이지에서의 클럭의 상승을 계기로 하여 레지스터(24)에 데이터를 받아들이는 경우와 비교하여, 읽어내기 데이터의 저장을 셋업하는 시간에 여유를 갖게 할 수 있다. 그리고, DSP(10)에서는, 셋업 시간에 여유가 생기는 결과, 클럭의 주파수를 높이는 것이 가능하게 되어, DSP(10)에서의 처리 속도를 향상시킬 수 있다.
도 23은, 라이트 동작 시의 타이밍을 도시하는 도면이다. 여기에서는, 도 15에 도시한 바와 같이 라이트 동작에 계속되어 서로 다른 어드레스에 대한 리드 동작이 행해지는 경우를 예로서 설명한다. 우선, 라이트 동작의 E2 스테이지(제1 타이밍)인 시각 t6에, 어드레스 레지스터(41a)에 어드레스가 받아들여져, 데이터 버스 BDA의 하위 16비트[15:0]로 기입 데이터가 출력된다. 그리고, 시각 t7에서의, 다음의 클럭의 상승(제2 타이밍)을 계기로 하여, 어드레스 레지스터(41a)에 저장되어 있는 어드레스가 어드레스 버퍼(42a)에 받아들여져, 데이터 버스 BDA의 하위 16비트[15:0]로 출력되어 있는 데이터가 라이트 버퍼(54a)에 받아들여진다. 그리고, 도 15에 도시한 예에서는, 기입 어드레스와 읽어내기 어드레스가 서로 다르기 때문에, 시각 t8에서의, 클럭의 다음의 상승(리드 동작의 E1 스테이지가 시작되 는 타이밍)을 계기로 하여, 데이터 메모리(23Aa)에 대하여 읽어내기 요구(XRD0="0")가 출력되고, 데이터 메모리(23Aa)로부터 해당의 데이터가 출력된다. 또한, 어드레스 버퍼(42a)에 저장된 어드레스 및 라이트 버퍼(54a)에 저장된 데이터는 클리어되지 않고 유지되고 있다. 그리고, 시각 t9에서의, 다음의 클럭의 상승을 계기로 하여, 어드레스 버퍼(42a)에 저장되어 있는 어드레스가 데이터 메모리(23Aa)의 어드레스 입력 단자에 입력되고, 데이터 메모리(23Aa)에 대하여 기입 요구(XWR0="0")가 출력됨으로써, 데이터 메모리(23Aa)에 데이터가 기입된다. 또한, 어드레스가 서로 다른 리드 동작이 복수 연속하는 경우에는, 그 리드 동작이 완료될 때까지의 동안, 어드레스 버퍼(42a)에 저장된 어드레스 및 라이트 버퍼(54a)에 저장된 데이터는 유지되고, 리드 동작 완료 후에, 데이터 메모리(23Aa)에의 기입이 행해지게 된다.
이와 같이, DSP(10)에서는, E2 스테이지의 다음의 클럭 사이클에, 어드레스 버퍼(42a, 42b)에 어드레스가 받아들여지고, 라이트 버퍼(54a, 54b)에 기입 데이터가 받아들여진다. 그리고, 그 후의 클럭 사이클에서의 클럭의 상승을 계기로 하여, 데이터 메모리(23Aa, 23Ab)에 대하여 기입 요구가 출력된다. 따라서, 예를 들면, E2 스테이지에서의 클럭의 상승을 계기로 하여 데이터 메모리(23Aa, 23Ab)에 대한 기입 어드레스 및 기입 데이터의 출력을 개시하고, E2 스테이지에서의 클럭의 하강을 계기로 하여 데이터 메모리(23Aa, 23Ab)에 대한 기입 요구를 출력하는 경우와 비교하여, 기입 어드레스 및 기입 데이터를 셋업하는 시간에 여유를 갖게 할 수 있다. 그리고, DSP(10)에서는, 셋업 시간에 여유가 생기는 결과, 클럭의 주파수를 높이는 것이 가능하게 되어, DSP(10)에서의 처리 속도를 향상시킬 수 있다.
또한, DSP(10)에서는, 라이트 동작에 계속되어, 서로 다른 어드레스에 대한 리드 동작이 행해지는 경우에는, 데이터 메모리(23Aa)에 대한 리드 액세스를 우선하여 행해지고 있다. 또한, DSP(10)에서는, 라이트 동작에 계속되어, 동일한 어드레스에 대한 리드 동작이 행해지는 경우에는, 라이트 버퍼(54a, 54b)에 저장되어 있는 데이터를 읽어내기 데이터로서 출력함과 함께, 라이트 버퍼(54a, 54b)에 저장되어 있는 데이터를 데이터 메모리(23Aa, 23Ab)에 기입하고 있다. 즉, DSP(10)에서는, 선행하는 라이트 동작에 의해 후속의 리드 동작이 대기되는 일 없이, 연산 회로(25)에서의 데이터 대기 시간이 짧아져, 처리 속도를 향상시킬 수 있다.
이상, 본 발명의 실시 형태에 대해서 설명하였다. 전술한 바와 같이, DSP(10)에서는, 2개의 데이터 메모리(23Aa, 23Ab) 중 적어도 한쪽으로부터 출력되는 데이터로부터, 읽어내기 데이터의 데이터 사이즈에 관한 정보 및 읽어내기 데이터에 대한 어드레스 공간에서의 어드레스에 관한 정보에 기초하여 읽어내기 데이터를 생성하여 출력할 수 있다. 즉, 데이터 메모리(23Aa, 23Ab) 중 어느 한쪽으로부터만 데이터를 읽어내는 것도 가능하고, 데이터 메모리(23Aa, 23Ab)의 양쪽으로부터 데이터를 읽어내는 것도 가능하다. 그리고, 데이터 메모리(23Aa, 23Ab)의 양쪽으로부터 데이터를 읽어낸 경우, 읽어내어진 2개의 데이터를, 연산 회로(25)를 구성하는 1개의 승누산기에 대한 2개의 입력 데이터로서 이용할 수 있다. 또한, 메모리 액세스 회로(21B)로부터도 마찬가지로 2개 데이터가 동시에 읽어내어지는 것이 가능하게 되기 때문에, DSP(10) 전체로는, 4개의 데이터를 동시에 읽어내어지는 것이 가능하게 된다. 따라서, 연산 회로(25)를 구성하는 2개의 승누산기의 연산을 동시에 행하는 것이 가능하게 된다. 이와 같이, DSP(10)에서는, 효율적인 메모리 액세스가 실현되고 있어, DSP(10)에서의 연산 처리가 고속화된다.
또한, DSP(10)의 메모리 액세스 회로(21A)에서는, 어드레스 공간에서의 짝수 어드레스의 데이터를 데이터 메모리(23Aa)에 저장하고, 홀수 어드레스의 데이터를 데이터 메모리(23Ab)에 저장하고 있다. 그리고, 리드 데이터 합성 회로(47)는, 읽어내기 데이터의 어드레스가 짝수/홀수 중 어느 것인지, 또한, 읽어내기 데이터의 데이터 사이즈가 16비트(N비트)인지 32비트(2N비트)인지에 따라서, 읽어내기 데이터를 생성하고 있다. 즉, DSP(10)에서는, 메모리 액세스 회로(21A)를 통해서, 16비트의 데이터를 1개 읽어내는 것도 가능하고, 16비트의 데이터를 동시에 2개 읽어내는 것도 가능하다. 마찬가지로, DSP(10)에서는, 메모리 액세스 회로(21B)를 통해서, 16비트의 데이터를 1개 읽어내는 것도 가능하고, 16비트의 데이터를 동시에 2개 읽어내는 것도 가능하다. 즉, DSP(10)에서는, 16비트의 데이터를 최대로 4개 동시에 읽어내는 것도 가능하게 된다. 이와 같이, DSP(10)에서는 효율적인 메모리 액세스가 실현됨으로써, 처리 속도를 향상시킬 수 있다.
또한, DSP(10)에서는, 기입 데이터의 데이터 사이즈에 관한 정보 및 기입 데이터에 대한 어드레스 공간에서의 어드레스에 관한 정보에 기초하여, 데이터 메모리(23Aa, 23Ab) 중 적어도 한쪽에 대하여 데이터를 기입하는 것이 가능하다. 즉, 데이터 메모리(23Aa, 23Ab) 중 어느 한쪽에 대해서만 데이터를 기입하는 것도 가능하고, 데이터 메모리(23Aa, 23Ab)의 양쪽에 대하여 데이터를 기입하는 것도 가능하 다. 또한, 메모리 액세스 회로(21B)를 통해서도 마찬가지로 데이터를 기입하는 것이 가능하게 되기 때문에, DSP(10) 전체로는, 4개의 데이터를 동시에 기입하는 것이 가능하게 된다. 이와 같이, DSP(10)에서는 효율적인 메모리 액세스가 실현됨으로써, 처리 속도를 향상시킬 수 있다.
또한, DSP(10)의 메모리 액세스 회로(21A)에서는, 어드레스 공간에서의 짝수 어드레스의 데이터를 데이터 메모리(23Aa)에 저장하고, 홀수 어드레스의 데이터를 데이터 메모리(23Ab)에 저장하고 있다. 그리고, 라이트 데이터 선택 회로(53)는, 기입 데이터의 어드레스가 짝수/홀수 중 어느 것인지, 또한, 기입 데이터의 데이터 사이즈가 16비트(N비트)인지 32비트(2N비트)인지에 따라서, 데이터 버스 BDA에 출력된 데이터를 라이트 버퍼(54a, 54b)에 출력하고 있다. 즉, DSP(10)에서는, 메모리 액세스 회로(21A)를 통해서, 16비트의 데이터를 1개 기입하는 것도 가능하고, 16비트의 데이터를 동시에 2개 기입하는 것도 가능하다. 마찬가지로, DSP(10)에서는, 메모리 액세스 회로(21B)를 통해서, 16비트의 데이터를 1개 기입하는 것도 가능하고, 16비트의 데이터를 동시에 2개 기입하는 것도 가능하다. 따라서, DSP(10)에서는, 16비트의 데이터를 최대로 4개 동시에 기입하는 것이 가능하게 된다. 이와 같이, DSP(10)에서는 효율적인 메모리 액세스가 실현됨으로써, 처리 속도를 향상시킬 수 있다.
또한, DSP(10)의 메모리 액세스 회로(21A)에서는, 라이트 동작에 계속되어 리드 동작이 행해지는 경우, 라이트 동작에 의해 후속의 리드 동작이 대기되는 일이 없도록 제어되어 있다. 즉, 라이트 동작에 계속되어 리드 동작이 행해지는 경 우, 기입 어드레스와 읽어내기 어드레스가 서로 다른 경우에는, 데이터 메모리(23Aa, 23Ab)에의 기입의 전에, 데이터 메모리(23Aa, 23Ab)로부터의 읽어내기가 행해진다. 또한, 기입 어드레스와 읽어내기 어드레스가 동일한 경우에는, 라이트 버퍼(54a, 54b)에 저장되어 있는 데이터로부터 읽어내기 데이터가 생성됨과 함께, 데이터 메모리(23Aa, 23Ab)에의 기입이 행해진다. 이에 의해, 라이트 동작에 계속되어 리드 동작이 행해지는 경우에, 선행하는 라이트 동작에 의해 후속의 리드 동작이 대기되는 일 없이, 연산 회로(25)에서의 데이터 대기 시간이 짧아진다. 즉, DSP(10)에서는 효율적인 메모리 액세스가 실현됨으로써, 처리 속도를 향상시킬 수 있다.
또한, DSP(10)의 메모리 액세스 회로(21A)에서는, 리드 동작 시에서의 읽어내기 어드레스의 셋업 시간에 여유가 있다. 그 때문에, 클럭의 주파수를 높이는 것이 가능하게 되어, DSP(10)의 처리 속도를 향상시킬 수 있다.
또한, DSP(10)의 메모리 액세스 회로(21A)에서는, 라이트 동작 시에서의 기입 어드레스 및 기입 데이터의 셋업 시간에 여유가 있다. 그 때문에, 클럭의 주파수를 높이는 것이 가능하게 되어, DSP(10)의 처리 속도를 향상시킬 수 있다.
또한, 상기 실시 형태는 본 발명의 이해를 쉽게 하기 위한 것으로, 본 발명을 한정하여 해석하기 위한 것은 아니다. 본 발명은, 그 취지를 일탈하지 않고, 변경, 개량할 수 있음과 함께, 본 발명에는 그 등가물도 포함된다.
도 1은 본 발명의 메모리 액세스 장치의 일 실시 형태인 디지털 신호 처리 회로의 구성예를 도시하는 도면.
도 2는 DSP에서의 파이프 라인 제어의 예를 도시하는 도면.
도 3은 DSP에서의 제어 회로 및 메모리 액세스 회로의 상세한 구성예를 도시하는 도면.
도 4는 데이터 메모리의 어드레스 구성예를 도시하는 도면.
도 5는 데이터 메모리에의 액세스 패턴을 도시하는 도면.
도 6은 데이터 사이즈가 16비트이고, 어드레스 공간에서의 어드레스가 짝수인 경우의 라이트 동작을 도시하는 도면.
도 7은 데이터 사이즈가 16비트이고, 어드레스 공간에서의 어드레스가 홀수인 경우의 라이트 동작을 도시하는 도면.
도 8은 데이터 사이즈가 32비트이고, 어드레스 공간에서의 어드레스가 짝수인 경우의 라이트 동작을 도시하는 도면.
도 9는 데이터 사이즈가 32비트이고, 어드레스 공간에서의 어드레스가 홀수인 경우의 라이트 동작을 도시하는 도면.
도 10은 데이터 사이즈가 16비트이고, 어드레스 공간에서의 어드레스가 짝수인 경우의 리드 동작을 도시하는 도면.
도 11은 데이터 사이즈가 16비트이고, 어드레스 공간에서의 어드레스가 홀수인 경우의 리드 동작을 도시하는 도면.
도 12는 데이터 사이즈가 32비트이고, 어드레스 공간에서의 어드레스가 짝수인 경우의 리드 동작을 도시하는 도면.
도 13은 데이터 사이즈가 32비트이고, 어드레스 공간에서의 어드레스가 홀수인 경우의 리드 동작을 도시하는 도면.
도 14는 데이터 사이즈가 16비트이고, 어드레스 공간에서의 어드레스가 짝수이고, 동일 어드레스에 대한 라이트 동작에 계속되는 리드 동작을 도시하는 도면.
도 15는 데이터 사이즈가 16비트이고, 어드레스 공간에서의 어드레스가 짝수이고, 서로 다른 어드레스에 대한 라이트 동작에 계속되는 리드 동작을 도시하는 도면.
도 16은 데이터 사이즈가 16비트이고, 어드레스 공간에서의 어드레스가 홀수이고, 동일 어드레스에 대한 라이트 동작에 계속되는 리드 동작을 도시하는 도면.
도 17은 데이터 사이즈가 16비트이고, 어드레스 공간에서의 어드레스가 홀수이고, 서로 다른 어드레스에 대한 라이트 동작에 계속되는 리드 동작을 도시하는 도면.
도 18은 데이터 사이즈가 32비트이고, 어드레스 공간에서의 어드레스가 짝수이고, 동일 어드레스에 대한 라이트 동작에 계속되는 리드 동작을 도시하는 도면.
도 19는 데이터 사이즈가 32비트이고, 어드레스 공간에서의 어드레스가 짝수이고, 서로 다른 어드레스에 대한 라이트 동작에 계속되는 리드 동작을 도시하는 도면.
도 20은 데이터 사이즈가 32비트이고, 어드레스 공간에서의 어드레스가 홀수 이고, 동일 어드레스에 대한 라이트 동작에 계속되는 리드 동작을 도시하는 도면.
도 21은 데이터 사이즈가 32비트이고, 어드레스 공간에서의 어드레스가 홀수이고, 서로 다른 어드레스에 대한 라이트 동작에 계속되는 리드 동작을 도시하는 도면.
도 22는 리드 동작 시의 타이밍을 도시하는 도면.
도 23은 라이트 동작 시의 타이밍을 도시하는 도면.
<도면의 주요 부분에 대한 부호의 설명>
10: 디지털 신호 처리 회로(DSP)
20: 제어 회로
21A, 21B: 메모리 액세스 회로
22: 프로그램 메모리
23Aa, 23Ab, 23Ba, 23Bb: 데이터 메모리
24: 레지스터
25: 연산 회로
BDAA, BDAB: 어드레스 버스
BDA, BDB: 데이터 버스
31: 페치 회로
32: 파이프 라인 제어 회로
33: 어드레스 생성 회로
41a, 41b: 어드레스 레지스터
42a, 42b: 어드레스 버퍼
43a, 43b: 어드레스 비교 회로
44a, 44b: 어드레스 선택 회로
45a, 45b: 리드 데이터 선택 회로
46a, 46b: 리드 버퍼
47: 리드 데이터 합성 회로
51, 52: 설정 레지스터
53: 라이트 데이터 선택 회로

Claims (7)

  1. 제1 및 제2 메모리에 액세스하는 메모리 액세스 장치로서,
    읽어내기 데이터의 데이터 사이즈 및 어드레스 공간에서의 어드레스에 기초하여, 상기 제1 및 제2 메모리 중 적어도 한쪽에 대한 읽어내기 어드레스를 출력하는 어드레스 출력부와,
    상기 읽어내기 데이터의 상기 데이터 사이즈 및 상기 어드레스 공간에서의 상기 어드레스에 기초하여, 상기 제1 및 제2 메모리 중 적어도 한쪽에 대하여 읽어내기 요구를 출력하는 액세스 요구 출력부와,
    상기 읽어내기 데이터의 상기 데이터 사이즈에 관한 정보 및 상기 어드레스에 관한 정보를 출력하는 데이터 정보 출력부와,
    상기 어드레스 출력부로부터 출력되는 상기 읽어내기 어드레스와, 상기 액세스 요구 출력부로부터 출력되는 상기 읽어내기 요구에 따라서 상기 제1 및 제2 메모리 중 적어도 한쪽으로부터 출력되는 데이터로부터, 상기 데이터 정보 출력부로부터 출력되는 상기 데이터 사이즈에 관한 정보 및 상기 어드레스에 관한 정보에 기초하여 상기 읽어내기 데이터를 생성하여 출력하는 읽어내기 데이터 출력부
    를 구비하는 것을 특징으로 하는 메모리 액세스 장치.
  2. 제1항에 있어서,
    상기 제1 메모리에는, 상기 어드레스 공간에서의 짝수 어드레스의 N비트폭의 데이터가 저장되고, 상기 제2 메모리에는, 상기 어드레스 공간에서의 홀수 어드레스의 N비트폭의 데이터가 저장되고,
    상기 어드레스 출력부는,
    상기 읽어내기 데이터의 상기 데이터 사이즈가 N비트인 경우에는, 상기 어드레스 공간에서의 상기 어드레스에 따른 상기 읽어내기 어드레스를 상기 제1 또는 제2 메모리에 출력하고,
    상기 읽어내기 데이터의 상기 데이터 사이즈가 2N비트인 경우에는, 상기 어드레스 공간에서의 상기 어드레스에 따른 상기 읽어내기 어드레스를 상기 제1 및 제2 메모리에 출력하고,
    상기 읽어내기 데이터 출력부는,
    상기 읽어내기 데이터의 상기 데이터 사이즈가 N비트인 경우에는, 상기 제1 또는 제2 메모리로부터 출력되는 데이터를, 상기 읽어내기 데이터로서 출력하고,
    상기 읽어내기 데이터의 상기 데이터 사이즈가 2N비트이고, 상기 어드레스 공간에서의 상기 어드레스가 짝수 어드레스인 경우에는, 상기 제1 메모리로부터 출력되는 데이터를 상위 비트, 상기 제2 메모리로부터 출력되는 데이터를 하위 비트로서 상기 읽어내기 데이터를 생성하여 출력하고,
    상기 읽어내기 데이터의 상기 데이터 사이즈가 2N비트이고, 상기 어드레스 공간에서의 상기 어드레스가 홀수 어드레스인 경우에는, 상기 제2 메모리로부터 출력되는 데이터를 상위 비트, 상기 제1 메모리로부터 출력되는 데이터를 하위 비트로서 상기 읽어내기 데이터를 생성하여 출력하는 것을 특징으로 하는 메모리 액세 스 장치.
  3. 제1항에 있어서,
    상기 어드레스 출력부는, 기입 데이터의 데이터 사이즈 및 어드레스 공간에서의 어드레스에 기초하여, 상기 제1 및 제2 메모리 중 적어도 한쪽에 대한 기입 어드레스를 출력하고,
    상기 액세스 요구 출력부는, 상기 기입 데이터의 상기 데이터 사이즈 및 상기 어드레스 공간에서의 상기 어드레스에 기초하여, 상기 제1 및 제2 메모리 중 적어도 한쪽에 대하여 기입 요구를 출력하고,
    상기 데이터 정보 출력부는, 상기 기입 데이터의 상기 데이터 사이즈에 관한 정보 및 상기 어드레스에 관한 정보를 출력하고,
    상기 데이터 정보 출력부로부터 출력되는 상기 데이터 사이즈에 관한 정보 및 상기 어드레스에 관한 정보에 기초하여, 상기 제1 및 제2 메모리 중 적어도 한쪽에 상기 기입 데이터를 출력하는 기입 데이터 출력부
    를 더 구비하는 것을 특징으로 하는 메모리 액세스 장치.
  4. 제3항에 있어서,
    상기 제1 메모리에는, 상기 어드레스 공간에서의 짝수 어드레스의 N비트폭의 데이터가 저장되고, 상기 제2 메모리에는, 상기 어드레스 공간에서의 홀수 어드레스의 N비트폭의 데이터가 저장되고,
    상기 어드레스 출력부는,
    상기 기입 데이터의 상기 데이터 사이즈가 N비트인 경우에는, 상기 어드레스 공간에서의 상기 어드레스에 따른 상기 기입 어드레스를 상기 제1 또는 제2 메모리에 출력하고,
    상기 기입 데이터의 상기 데이터 사이즈가 2N비트인 경우에는, 상기 어드레스 공간에서의 상기 어드레스에 따른 상기 기입 어드레스를 상기 제1 및 제2 메모리에 출력하고,
    상기 기입 데이터 출력부는,
    상기 기입 데이터의 상기 데이터 사이즈가 N비트이고, 상기 어드레스 공간에서의 상기 어드레스가 짝수 어드레스인 경우에는, 상기 기입 데이터를 상기 제1 메모리에 출력하고,
    상기 기입 데이터의 상기 데이터 사이즈가 N비트이고, 상기 어드레스 공간에서의 상기 어드레스가 홀수 어드레스인 경우에는, 상기 기입 데이터를 상기 제2 메모리에 출력하고,
    상기 기입 데이터의 상기 데이터 사이즈가 2N비트이고, 상기 어드레스 공간에서의 상기 어드레스가 짝수 어드레스인 경우에는, 상기 기입 데이터의 상위 N비트를 상기 제1 메모리에 출력하고, 상기 기입 데이터의 하위 N비트를 상기 제2 메모리에 출력하고,
    상기 기입 데이터의 상기 데이터 사이즈가 2N비트이고, 상기 어드레스 공간에서의 상기 어드레스가 홀수 어드레스인 경우에는, 상기 기입 데이터의 상위 N비 트를 상기 제2 메모리에 출력하고, 상기 기입 데이터의 하위 N비트를 상기 제1 메모리에 출력하는 것을 특징으로 하는 메모리 액세스 장치.
  5. 제3항 또는 제4항에 있어서,
    상기 어드레스 출력부로부터 출력되는 상기 기입 어드레스가 기억되는 기입 어드레스 기억부와,
    상기 기입 데이터 출력부로부터 출력되는 상기 기입 데이터가 상기 제1 또는 제2 메모리에 기입되기 전에 기억되는 기입 데이터 기억부와,
    상기 어드레스 출력부로부터 출력되는 상기 읽어내기 어드레스와, 상기 기입 어드레스 기억부에 기억되어 있는 상기 기입 어드레스가 서로 다른 경우에는, 상기 읽어내기 어드레스를 상기 제1 또는 제2 메모리에 출력하는 어드레스 선택 회로
    를 더 구비하고,
    상기 읽어내기 데이터 출력부는,
    상기 어드레스 출력부로부터 출력되는 상기 읽어내기 어드레스와, 상기 기입 어드레스 기억부에 기억되어 있는 상기 기입 어드레스가 서로 다른 경우에는, 상기 제1 또는 제2 메모리 중 적어도 한쪽으로부터 출력되는 데이터로부터 상기 읽어내기 데이터를 생성하여 출력하고, 상기 어드레스 출력부로부터 출력되는 상기 읽어내기 어드레스와, 상기 기입 어드레스 기억부에 기억되어 있는 상기 기입 어드레스가 동일한 경우에는, 상기 기입 데이터 기억부에 기억되어 있는 상기 기입 데이터를 출력하는 것을 특징으로 하는 메모리 액세스 장치.
  6. 제1항 내지 제4항 중 어느 한 항에 있어서,
    상기 어드레스 출력부는, 클럭이 한쪽의 논리 레벨로부터 다른쪽의 논리 레벨로 변경되는 제1 타이밍에서, 상기 읽어내기 어드레스를 출력하고,
    상기 액세스 요구 출력부는, 상기 제1 타이밍의 다음에, 상기 클럭이 상기 한쪽의 논리 레벨로부터 상기 다른쪽의 논리 레벨로 변경되는 제2 타이밍에서 상기 읽어내기 요구를 출력하는 것을 특징으로 하는 메모리 액세스 장치.
  7. 제5항에 있어서,
    상기 어드레스 출력부는, 클럭이 한쪽의 논리 레벨로부터 다른쪽의 논리 레벨로 변경되는 제1 타이밍에서, 상기 기입 어드레스를 출력하고,
    상기 액세스 요구 출력부는, 상기 제1 타이밍의 다음에, 상기 클럭이 상기 한쪽의 논리 레벨로부터 상기 다른쪽의 논리 레벨로 변경되는 제2 타이밍에서, 상기 어드레스 출력부로부터 출력되는 상기 기입 어드레스를 상기 어드레스 기억부에 기억시킴과 함께, 상기 기입 데이터 출력부로부터 출력되는 상기 기입 데이터를 상기 기입 데이터 기억부에 기억시키는 것을 특징으로 하는 메모리 액세스 장치.
KR1020070095856A 2006-09-21 2007-09-20 메모리 액세스 장치 KR20080027175A (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP2006256162A JP2008077418A (ja) 2006-09-21 2006-09-21 メモリアクセス装置
JPJP-P-2006-00256162 2006-09-21

Publications (1)

Publication Number Publication Date
KR20080027175A true KR20080027175A (ko) 2008-03-26

Family

ID=39226397

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020070095856A KR20080027175A (ko) 2006-09-21 2007-09-20 메모리 액세스 장치

Country Status (4)

Country Link
US (1) US7702860B2 (ko)
JP (1) JP2008077418A (ko)
KR (1) KR20080027175A (ko)
CN (1) CN100527109C (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20180050218A (ko) * 2016-11-04 2018-05-14 윈본드 일렉트로닉스 코포레이션 반도체 기억 장치 및 그 독출 방법

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102521142B (zh) * 2011-12-13 2015-05-13 曙光信息产业(北京)有限公司 一种提高大容量、多内存设备访问效率的方法
CN102523374B (zh) * 2011-12-19 2014-02-19 北京理工大学 一种实时并行的电子稳像系统设计方法
US9256384B2 (en) * 2013-02-04 2016-02-09 Avago Technologies General Ip (Singapore) Pte. Ltd. Method and system for reducing write latency in a data storage system by using a command-push model

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5717394A (en) * 1993-02-10 1998-02-10 Ricoh Company Ltd. Method and apparatus for encoding and decoding data
JP3479385B2 (ja) * 1995-06-29 2003-12-15 東芝マイクロエレクトロニクス株式会社 情報処理装置
JPH10143448A (ja) 1996-11-14 1998-05-29 Ricoh Co Ltd メモリシステム
DE60019081D1 (de) * 2000-01-31 2005-05-04 St Microelectronics Srl Verschachtelter Burst-Speicher mit Burst-Zugriff bei synchronen Lesezyklen, wobei die beiden untergeordneten Speicherfelder unabhängig lesbar sind mit wahlfreiem Zugriff während asynchroner Lesezyklen
JP2006190389A (ja) 2005-01-06 2006-07-20 Sanyo Electric Co Ltd データ処理用集積回路

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20180050218A (ko) * 2016-11-04 2018-05-14 윈본드 일렉트로닉스 코포레이션 반도체 기억 장치 및 그 독출 방법

Also Published As

Publication number Publication date
US20080077754A1 (en) 2008-03-27
JP2008077418A (ja) 2008-04-03
US7702860B2 (en) 2010-04-20
CN100527109C (zh) 2009-08-12
CN101149713A (zh) 2008-03-26

Similar Documents

Publication Publication Date Title
JP5658556B2 (ja) メモリ制御装置、及びメモリ制御方法
JP2818249B2 (ja) 電子計算機
RU2375768C2 (ru) Процессор и способ осуществления операций непрямого чтения и записи регистра
KR20080027175A (ko) 메모리 액세스 장치
CN108959180B (zh) 一种数据处理方法及系统
CN111459546A (zh) 一种实现操作数位宽可变的装置及方法
JP5664198B2 (ja) 演算処理装置
KR100188374B1 (ko) 연산처리장치
JP2000122919A (ja) プロセッサ及びメモリ制御方法
JP4896839B2 (ja) マイクロプロセッサおよびデータ処理方法
JP2008102599A (ja) プロセッサ
US6363469B1 (en) Address generation apparatus
JP4482356B2 (ja) Simdプロセッサを用いた画像処理方法及び画像処理装置
JP2906792B2 (ja) ディジタルプロセッサ及びその制御方法
JP2883465B2 (ja) 電子計算機
JP2013161325A (ja) Simd型マイクロプロセッサ、プロセッサシステムおよびsimd型マイクロプロセッサのデータ処理方法
JP2005151535A5 (ko)
JP2006293538A (ja) 演算システム
JP3825709B2 (ja) パイプライン処理方法及びプロセッサ装置
JP2006092158A (ja) デジタル信号処理回路
JP3441847B2 (ja) データメモリを有するプロセッサ
JP5263498B2 (ja) 信号処理プロセッサ及び半導体装置
JP2000250869A (ja) マルチプロセッサの制御方法およびその装置
JP2002182905A (ja) ディジタル信号処理プロセッサ
JP2010085177A (ja) 半導体試験装置

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
NORF Unpaid initial registration fee