KR20010031810A - 가상 캐시 메모리를 장착한 사운드 생성 집적회로 - Google Patents

가상 캐시 메모리를 장착한 사운드 생성 집적회로 Download PDF

Info

Publication number
KR20010031810A
KR20010031810A KR1020007004879A KR20007004879A KR20010031810A KR 20010031810 A KR20010031810 A KR 20010031810A KR 1020007004879 A KR1020007004879 A KR 1020007004879A KR 20007004879 A KR20007004879 A KR 20007004879A KR 20010031810 A KR20010031810 A KR 20010031810A
Authority
KR
South Korea
Prior art keywords
address
virtual
cache
data
memory
Prior art date
Application number
KR1020007004879A
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 KR20010031810A publication Critical patent/KR20010031810A/ko

Links

Classifications

    • GPHYSICS
    • G10MUSICAL INSTRUMENTS; ACOUSTICS
    • G10HELECTROPHONIC MUSICAL INSTRUMENTS; INSTRUMENTS IN WHICH THE TONES ARE GENERATED BY ELECTROMECHANICAL MEANS OR ELECTRONIC GENERATORS, OR IN WHICH THE TONES ARE SYNTHESISED FROM A DATA STORE
    • G10H7/00Instruments in which the tones are synthesised from a data store, e.g. computer organs
    • G10H7/02Instruments in which the tones are synthesised from a data store, e.g. computer organs in which amplitudes at successive sample points of a tone waveform are stored in one or more memories
    • GPHYSICS
    • G10MUSICAL INSTRUMENTS; ACOUSTICS
    • G10HELECTROPHONIC MUSICAL INSTRUMENTS; INSTRUMENTS IN WHICH THE TONES ARE GENERATED BY ELECTROMECHANICAL MEANS OR ELECTRONIC GENERATORS, OR IN WHICH THE TONES ARE SYNTHESISED FROM A DATA STORE
    • G10H2230/00General physical, ergonomic or hardware implementation of electrophonic musical tools or instruments, e.g. shape or architecture
    • G10H2230/025Computing or signal processing architecture features
    • G10H2230/031Use of cache memory for electrophonic musical instrument processes, e.g. for improving processing capabilities or solving interfacing problems

Landscapes

  • Engineering & Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Acoustics & Sound (AREA)
  • Multimedia (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

디지털 신호 프로세서(DSP, 12)와 데이터 캐시 메모리(16)을 가지며 디지털 오디오 샘플 데이터를 저장하는 외부 샘플 메모리(18)를 사용하는 디지털 사운드 생성 디바이스는 데이터 캐시 메모리(16)의 캐시 라인들을 동적으로 할당하기 위해 가상 캐시 메모리블록(14)를 포함한다. 상기 가상 캐시 메모리 블록(14)은 DSP(12)와 데이터 캐시 메모리(16) 및 샘플 메모리(18) 사이의 어드레스 경로에 위치하며, 데이터 캐시 메모리(16)는 DSP(12)와 샘플 메모리(18)사이의 데이터 경로에 위치한다. 샘플 메모리(18)에 대한 DSP(12)의 억세스 요청은 특정 샘플 메모리 어드레스에 대응하는 가상 어드레스의 형태로 이루어진다. 가상 캐시 메모리 블록(14)은 상기 가상 어드레스가 데이터 캐시 메모리에 대한 할당된 캐시 라인을 이미 갖고 있는지를 결정하며, 만약 그렇다면 요청된 데이터를 캐시 라인과 DSP(12)간에 이전시킨다. 만약 그렇지 않다면, 가상 캐시 메모리 블록은 그 가상 어드레스에 대응하는 데이터 캐시 라인을 할당하며 대응하는 샘플 메모리 어드레스로부터 데이터를 그 캐시 라인에 이전한다. 그 샘플 데이터는 그 후, 다음 프로세싱 타임 프레임에서 DSP(12)에 의해 사용 가능해 진다.

Description

가상 캐시 메모리를 장착한 사운드 생성 집적회로{SOUND-PRODUCING INTEGRATED CIRCUIT WITH VIRTUAL CACHE}
전자 음악 기구들 및 가라오케와 PC의 멀티미디어 응용 프로그램에 사용되는 미디(MIDI)와 음악 합성 기능(music synthesis capabilities)의 사용이 많아질수록, 좀 더 우수한 성능을 가진 저 비용의 사운드 생성 시스템(sound production system)의 필요성이 증가하고 있다. 디지털 사운드 합성 프로세싱 시스템(digital sound synthesizing and processing system)은, 오디오 샘플(sample)을 저장한 웨이브 테이블(wavetable)로서 사운드 합성을 위해, 지연 버퍼 메모리(delay buffer memory)로서 잔향(殘響,reverb) 및 코러스(chorus) 효과 처리를 위해, 또는 스트리밍 오디오 메모리(streaming audio memory)로서 뮤직 키보드, 마이크로폰, PC 멀티미디어의 하드디스크 같은 외부 사운드 입력 수단으로부터 오디오 샘플을 입력받기 위해서, 등의 다양한 목적으로 디지털 오디오 샘플 메모리(digital audio sample memory)를 사용한다. 이렇게 처리시간이 중요한 환경에서의 시스템은 또한 병목 현상(bottleneck)을 줄이기 위해서, 샘플 메모리에 대한 억세스(access) 빈도를 줄이기 위해 데이터 캐시 메모리를 사용한다. 음악 합성 응용을 위한 오디오 신호 프로세서 집적 회로 구조의 한 예가 Chris Deforeit 등의 논문 ″단일 칩에 특수 DSP 코어와 16-비트 마이크로프로세서를 집적한 음악 합성 아키텍쳐″(A Music Synthesizer Architecture which Integrates a Specialized DSP Core and a 16-bit Microprocessor on a Single Chip, presented at 98th convention of Audio Engineering Society(AES),1995. 2.25 )에 나타나 있다. 이것은 본 발명의 출원인 인 캘리포니아, 산호세의 아트멜 코포레이션(Atmel corporation)의 프랑스 자회사인 세뮈르-엉-옥스와(Semur-en-Auxois)의 Dream. S. A에 의해 판매된 'SAM9407 Integrated sound studio circuit'에 실제로 구현되어 있다.
상기 회로 구조는 합성 디지털 신호 처리(DSP) 코어(synthesis DSP Core), 제어 프로세서(Control processor), 메모리 관리 유닛(Memory management unit) 및 입출력 인터페이스 로직 주변장치(peripheral I/O Interface logic)를 단일 칩(single chip)에 결합시킨 것이다. 상기 합성 DSP는 음악 합성 작업에 최적화된 하드웨어와 결합되어 시스템에 구축되며, 외부 샘플 메모리로부터 억세스된(accessed) 상기 디지털 오디오 샘플 데이터를 이용하여, 합성-특수 알고리즘들(synthesis-specific algorithms)을 수행하기 위해 필요한, 제한된 수의 연산을 반복적이며 효율적으로 수행함으로써, 최대 64개의 동시 음성들(simultaneous voices)을 생성하고 처리한다. 상기 DSP 합성 알고리즘들은 온칩 프로그램 메모리(on-chip program memory)에 저장되며, 합성 음성을 위한 파라미터 데이터(parameter data)들은 온칩 파라미터 메모리(on-chip parameter memory)의 블록(block)에 저장된다. 제어 프로세서는 외부 주변 장치들, 즉 호스트 컴퓨터나 미디 키보드와 주변 입출력 로직(peripheral I/O logic)을 통해 인터페이스 된다(interface). 상기 제어 프로세서는 상기 주변 장치로부터 입력된 데이터와 명령들을 파싱(parsing)하고 해석한 후(interpret), 상기 DSP의 파라미터 메모리에 기록함으로써 상기 합성 DSP를 제어한다. 이러한 파싱 및 제어 작업 외에도, 상기 제어 프로세서는 천천히 변화하는 합성 연산(slowly changing synthesis operation)도 수행할 수 있는데, 가령 저주파 오실레이션 및 파형 엔벨로프 관리(envelope management)를 파라미터 메모리의 합성 파라미터를 주기적으로 갱신함으로써 수행할 수 있다. 상기 메모리 관리 유닛은 외부 메모리 자원(external memory resources)을 상기 제어 프로세서와 상기 합성 DSP가 공유할 수 있도록 해 준다. 따라서, 예를 들어, 단일의 외부 ROM 장치는 상기 제어 프로세서의 프로그램 메모리로서 및 상기 DSP의 샘플 메모리로서의 두 기능 모두를 수행할 수 있으며, 또한 단일 외부 RAM 장치는 상기 제어 프로세서의 외부 데이터 메모리로서 및 DSP에 의한 효과 처리시(effects processing), 지연 버퍼 메모리로서의 두 기능 모두를 수행할 수 있다.
상기 합성 DSP는, 여러 프로세스 슬롯(slot)들로 나뉜[가령 전술한 SAM 9407 장치에서는 64슬롯] 각 합성 프레임과 함께 프레임 타이밍 베이스(frame timing basis)로 작동한다. 한 '프로세스'란, 한 개의 기본적인 소리 생성 기능, 즉 한 개의 음성 웨이브 테이블 합성, 효과 음향(effects)을 위한 한 개의 지연 라인(delay line) 등에 연관되어 있으며 각 프로세스는 일반적으로 디지털 오디오 샘플 메모리로부터 판독하거나, 또는 이에 기록하는 과정에 연결된다. 한 합성 프레임 내에서 수행되는 프로세스의 최대 수(즉, 슬롯 수)는 디바이스의 용량(capability)을 결정한다. 예를 들면, 모든 프로세스 슬롯들이 웨이브 테이블 합성에 사용된다면, 슬롯들의 수는 최대 다음(多音, polyphony)이 될 것이다[비록 슬롯들이 좀 더 복잡한 합성 알고리즘을 구현하기 위해 서로 연결되어 있을지라도]. 또한, 슬롯들 중 일부는[예를 들어 8개] 다음(多音) 웨이브 테이블 사운드 합성을 위해서 사용 가능한 적은 수의 슬롯들만을 남기면서 사운드 효과 프로세싱을 위해 사용되기도 한다.
각 합성 프레임당 프로세싱 슬롯 수를 증가시키는 것이 필요하다. 각 프로세싱 슬롯에는 일반적으로 프레임당 적어도 억세스가 가능한 두 개의 디지털 오디오 샘플 메모리가 필요하다. 가령 128슬롯 디바이스라면 프레임당 256회나 그 이상의 억세스가 필요하다. 48KHz의 프레임 레이트(frame rate)의 기술 분야라면, 이것은 많아봐야 81ns의 샘플 메모리 사이클이 된다. 다행스러운 것은, 대부분의 경우에 있어서, 연속적인 프레임에서는 동일한 오디오 샘플이 억세스되야 한다는 점이다. 따라서, 필요한 샘플 메모리 억세스 수를 최소화하기 위해 온칩(on-chip) 데이터 캐시 메모리를 사용하여 합성 DSP와 샘플 메모리간의 잠재적인 트래픽(traffic) 병목 현상을 피할 수 있다. 직접적인 구현에서는, 데이터 캐시가 각 슬롯들에 할당된, 적어도 둘 이상의 오디오 샘플에 대해 메모리 공간을 가질 경우, 샘플내 캐시 메모리의 크기는 적어도 슬롯 수의 두 배이다. 16비트나 24비트의 전형적인 오디오 샘플 폭을 가진 경우라면, 데이터 캐시는 128슬롯 디바이스에 대해 최소한 4킬로 비트에서 6킬로 비트 정도가 된다.
그러나 멀티미디어 PC 환경에서는 디지털 오디오 샘플 메모리가 별도의 ROM과 RAM을 사용하기 보다는 PC의 주 메모리를 공유하는 것이 더 바람직하다. 그러나, PCI같은 최근 PC 버스의 구조는 PC 캐시 라인이라 불리는 256비트의 메모리 워드 폭(width)을 사용한다. 따라서, 공유 환경의 PC 메모리에서 사용 가능한 합성 DSP 데이터 캐시 메모리의 일반적인 구현에서는 프로세싱 슬롯당 두 개의 PC 캐시 라인들이 필요하고, 따라서 128슬롯 디바이스라면 적어도 64킬로 비트의 온칩 캐시가 요구된다.
본 발명의 목적은 요구되는 데이터 캐시 메모리의 크기를 획기적으로 감소시키기 위해 음성 합성 DSP에 대한 향상된 캐시 메모리 조직을 구현하는데 있다.
본 발명의 또 다른 목적은 PC 메인 보드에 위치한 샘플 메모리와 온칩 데이터 캐시 메모리간의 오디오 샘플 데이터의 교환을 향상시키기 위해 현대적 PC 버스들의 큰 캐시 라인 구조에 합성 DSP 캐시 관리를 최적화 시키는데 있다.
본 발명의 또 다른 목적은 가변(variable) 크기의 디지털 오디오 샘플 메모리 워드를 제공하는데 있다.
본 발명은 전자 음악 톤 발생(electrical musical tone generation)에 관한 것으로, 좀 더 상세하게는 디지털 오디오 샘플 메모리(digital audio sample memory)와 데이터 캐시 메모리(data cache memory)를 장착하여 사운드 합성시 이용하는 디지털 오디오 시그널 프로세싱 시스템(digital audio signal processing system)에 관한 것이다.
도 1은 외부 샘플 메모리와 그에 대한 어드레스 및 데이터의 경로가 그려진 본 발명의 디지털 음성 생성 집적 회로 디바이스의 개략적인 블록 다이아그램.
도 2는 연계된 입력/출력 선정 구성요소와 함께 나타낸 도 1의 데이터 캐시 메모리의 개략적인 블록 다이아그램.
도 3은 도 1의 가상 캐시 메모리 블록의 개략적인 블록 다이아그램.
도 4는 도 3의 가상 캐시 메모리 블록의 DSP-캐시 인터페이스를 추가로 상세하게 나타낸 블록 다이아그램.
상기의 목적들을 달성하기 위해 디지털 오디오 샘플을 저장하기 위한 외부 샘플 메모리를 사용하는 디지털 음성 생성 집적회로 디바이스가 사용되는데, 상기 온칩 데이터 캐시 메모리 조직은 합성 슬롯들과 상관 관계에 있는 것이 아니라, 추가의 가상(virtual) 캐시 메모리를 채용하여, 실제 데이터 캐시 메모리 라인들을 여러 슬롯들에 동적으로(dynamically) 할당하기 위해 사용한다.
특히 상기 디지털 사운드 생성 디바이스는 상기 가상 캐시 메모리 블록에 가상 어드레스(virtual address)를 제공하여 샘플 메모리에 억세스를 요구하는, 디지털 신호 프로세서(DSP) 코어를 포함한다. 상기 디지털 사운드 생성 디바이스는 또한 상기 DSP와 상기 샘플 메모리간의 데이터 전송 경로 사이에 위치한 데이터 캐시 메모리를 포함한다. 상기 데이터 캐시 메모리는, 그것의 캐시 라인 내에, DSP에 의해 사용되어지기 위해 샘플 메모리로부터 판독된 데이터와 DSP에 의해 샘플 메모리에 기록될 데이터를 포함한 오디오 샘플 데이터를 저장한다. 상기 디지털 사운드 생성 디바이스는, 상기 샘플 메모리 및 데이터 캐시 메모리와 상기 DSP 사이의 어드레스 경로에 위치한 가상 캐시 메모리 블록을 추가로 포함한다. 상기 가상 캐시 메모리 블록은 샘플 메모리에 대한 접근을 요구하는 DSP로부터 가상 어드레스를 입력받고 그 어드레스가 이미 데이터 캐시 메모리의 할당된 캐시 라인에 대응하는지를 결정한다. 만약 대응하지 않는다면, 상기 가상 캐시 메모리 블록은 새로운 캐시 라인을 상기 가상 메모리에 대응하는 것으로 할당하고 오디오 샘플 데이터를 상기 캐시 라인으로 이전시키기(transfer) 위해 샘플 메모리를 어드레스한다. 그러면 상기 데이터는 다음 프로세싱 프레임중에 DSP에 의해 사용되어 질 수 있다. 만약 상기 가상 어드레스에 해당하는 캐시 라인이 이미 할당되어 있다면, 상기 가상 메모리 블록은 상기 대응하는 캐시 라인과 DSP간에 오디오 샘플 데이터를 이전시키기 위해 데이터 캐시 메모리를 어드레스한다. 또한 상기 가상 캐시 메모리 블록은 현재 프레임이나 이전 프레임에서 사용되지 않은 캐시 라인을 할당에서 제외시키는 작업(de-allocate)도 수행하는데, 이 때는 데이터 캐시 메모리로부터 샘플 메모리로, 오디오 샘플을 이전시키기 위해 샘플 메모리를 어드레스한다. 상기 가상 캐시 메모리 블록은 각 가상 어드레스에 대한, 대응하는 할당된 데이터 캐시 어드레스를 저장한 데이터 라인 테이블을 포함하며, 또한 [아래에 상세히 설명할 예정이지만] 현재 접근 요구(current access request)를 처리하기 위해 가상 캐시 어드레스 테이블과 다른 회로들을 포함한다.
상기 샘플 메모리는 ROM, 플래시 메모리, RAM 또는 DRAM 등이 가능하며 PC 버스를 통해 간접적으로 접근된다. 샘플 메모리와 데이터 캐시 메모리간의 캐시 라인 이전(transfer)은 버스트 모드(burst mode)인 몇 개의 억세스(판독 및 기록) 사이클들로 이루어진다. 예를 들면, 데이터 캐시 메모리가 DRAM일 경우, 상기 이전은 몇 개의 DRAM 패스트 페이지 모드 억세스 사이클(DRAM fast page mode access cycles)들이 버스트 모드로 발생하는 형태이다. 데이터 캐시 메모리에 저장된 상기 오디오 샘플 데이터 블록은 PC에 대한 캐시 라인 크기에 매치되거나 또는 데이터 캐시의 다양한 캐시 라인에서 서로 다른 크기를 가질 수 있다. 마찬가지로 데이터 캐시로부터 DSP에 의해 판독되는 데이터는, DSP의 요청에 따라 비트들의 변수(variable number of bits)를 가질 수 있다. DSP에 의해 제공되는 가상 어드레스는 대응하는 샘플 메모리 어드레스와 동일한 것일 수 있다. 또는 이에 대한 대안으로, 상기 가상 캐시 메모리 블록은 상기 오디오 샘플 워드 크기만큼 입력된 가상 어드레스를 쉬프트(shifting)시켜 그 쉬프트의 결과를 샘플 메모리 어드레스를 제공하는 한 개 또는 여러 개의 베이스 레지스터(base register)에 더해서 샘플 메모리에 접근할 수 있다. 또한 상기 가상 캐시 메모리 블록은 샘플을 제공하지 않는 대신, 그 전 오디오 샘플을 제공함으로써 오디오 클릭킹(clicking)을 피할 수 있어 어떤 상황의, 어떤 데이터 캐시 메모리도 사용 가능토록 할 수 있다.
이하 도면을 참조하여 본 발명을 상세히 설명한다. 우선 도 1을 참조하면, 디지털 사운드 생성 집적 회로(10) 부분, 즉 오디오 신호를 합성하고 처리하는 디지털 신호 프로세서(DSP) 코어(12)와 상기 DSP를 외부 디지털 오디오 샘플 메모리(18)에 인터페이스 시키면서, 데이터 캐시 메모리(16)와 가상 캐시 메모리(14)를 결합한 본 발명의 캐시 메모리 구조가 주(主) 어드레스 및 데이터 경로와 함께 나타나 있다. 명확한 표현을 위해 제어 신호는 본 도에서 제외되었다.
상기 샘플 메모리(18)는 각각의 연속되는 오디오 샘플들을 오디오 스트림(stream)으로 저장하고 있다. 주어진 오디오 스트림에 대해, 상기 샘플들은 8, 16 또는 32비트 폭을 가지며 다중 채널 인터리브 방식(multichannel interleaved way)으로 조직화 될 수 있다. 상기 샘플 메모리(18)는 일반적인 기능적 블록만으로 표현될 수 있으며, 따라서 더 이상 이에 대해 상세히 언급하지 않는다. 단, 상기 샘플 메모리(18)는 기존의 사운드 합성 응용에서 사용되던 것들과 본질적으로 동일하다. 예를 들면, 이것은 ROM이나 DRAM 디바이스, 혹은 PCI 버스를 통해 PC 캐시 메모리로부터 억세스되는 일반적인 PC의 메모리면 가능하다. 사운드 칩(10)이 출력 선(17)을 통해 샘플 메모리 어드레스를 제공하면, 데이터 입/출력선(19)를 통해 상기 샘플 메모리(18)에 억세스 할 수 있다.
상기 DSP 코어(12)는 어드레스 선(13)을 통해, 판독 및 기록요청과 함께 오디오 샘플에 해당하는 어드레스를 가상 캐시 메모리 블록(14)에 제공한다. 상기 DSP(12)가, 본 발명에서는, 샘플 메모리(18)나 데이터 캐시 메모리(16)에 대해 직접적으로 어드레스 하지 않으므로, 버스(13)의 어드레스는 '가상' 어드레스라 불리며 이것은 가상 캐시 메모리 블록(14)에 의해 메모리(16, 18)의 적절한 실제 어드레스를 결정하는데 사용된다. 또한 기록 요청인 경우에, DSP(12)는 데이터 캐시 메모리(16)로 연결된 데이터 버스(20)에, 기록되어야 할 실제 데이터를 제공한다.
상기 가상 캐시 메모리(14)는 DSP(12)로부터 버스(13)를 통해 상기 가상 어드레스를 받고 이것을 데이터 캐시 메모리(16)의 캐시 라인에 해당하는, 이미 존재하는 데이터 캐시 어드레스로 할당하거나 또는 새로운 데이터 캐시 어드레스에 할당한다. 이 할당에 대한 상세한 사항들은 후술한다. 여기서 만약 DSP로부터 판독 요청이 접수되었다면, 상기 가상 캐시 메모리 블록(14)은 요청된 상기 오디오 샘플 데이터가 온칩 데이터 캐시(16)으로부터 직접 읽혀질 수 있는지, 아니면 외부 샘플 메모리(18)에 대한 억세스가 필요한지를 결정한다. 만약 외부 샘플 메모리(18)에 대한 억세스가 필요하다고 판단되면, 가상 캐시 메모리(14)는 입력된 가상 어드레스와 하나 또는 다수 개의 베이스 레지스터[이것은 옵션이다]들과 샘플 폭(width)으로부터 샘플 메모리 어드레스를 계산한다. 그 후 가상 캐시 메모리(14)는 외부 어드레스 버스 라인(17)을 통해 샘플 메모리 어드레스를 샘플 메모리(18)에 제공하고 샘플 메모리를 데이터 캐시 라인에 기록 사이클로 기동(initiate)시킨다. 이 때 샘플 메모리(18)로부터 판독된 데이터가 데이터 라인(19)를 통해 할당된 데이터 캐시 메모리 라인에 이전되는데, 상기 할당된 데이터 캐시 메모리 라인은 데이터 버스(15)에 입력된 데이터 캐시 어드레스에 의해 지정된다. 만약 요청된 데이터가 이미 할당된 캐시 라인에 저장되어 있다면, 샘플 메모리(18)에 접근할 필요가 없으며, 요청된 데이터는 다음 합성 프레임에서 데이터 버스(20)을 통해 DSP(12)로 이전되어 사용이 가능해 진다. DSP(12)에 의해 기록 요청이 발생할 경우, DSP(12)로 부터 데이터 버스(20)을 통해 제공된 오디오 샘플은 데이터 캐시(16)의 할당된 데이터 캐시 라인으로 저장되는데, 상기 데이터 캐시 라인은 가상 캐시 메모리(14)로부터 데이터 캐시 메모리(16)로 버스(15)를 통해 제공된 데이터 캐시 어드레스로 지정된 것이다. 데이터 캐시 메모리(16)로부터 샘플 메모리(18)로 기록하는 과정은 추후 설명한다.
도 2를 참조하면, 상기 데이터 캐시 메모리 블록(16)은 바람직하게는 캐시 라인 폭이 256 비트이며, 상기 샘플 메모리로 가거나, 또는 그로부터 오는 데이터 버스(19)에 대한 버스 폭은 32 비트인데 이것은 표준 PCI 버스를 통하여 응용프로그램을 공유하는 PC 메모리의 전형적인 형태이다. 그러나, 하나의 캐시 라인이 적어도 하나의 오디오 샘플을 저장할 수 있는 한, 어떤 크기의 캐시 라인이나 버스 폭도 이에 적용 가능하다. 상기 바람직한 256 비트 캐시 라인에서는 하나의 캐시 라인이 32개의 8 비트 오디오 샘플이나[캐시 라인 21로 표현], 16개의 16 비트 오디오 샘플[캐시 라인 22로 표현], 또는 8개의 32 비트 오디오 샘플[캐시 라인 23으로 표현]을 가질 수 있다. 상기 DSP로부터 상기 가상 캐시 메모리로 샘플 폭 선정이 제어된다. 상기 데이터 캐시 메모리(16)는, 도시된 바와 같이 단일 포트 SRAM(single-port SRAM)으로 구현될 수 있다. 또한 이에 대한 대안으로, 빠른 PC 버스들과 통신해야 될 경우에는, 최적화된 성능을 위해 듀얼 포트 램(dual-port RAM)으로도 구현가능하다.
상기 데이터 캐시 메모리(16)는 버스(15)를 통해 상기 가상 캐시 메모리 블록으로부터 어드레스를 받고 PCI 데이터 버스(19)를 통해 오디오 샘플 메모리로부터 온 샘플 데이터를 판독하거나 또는 샘플 메모리를 오디오 샘플 메모리로 기록하며 마찬가지로 데이터 버스(20)를 통해 DSP로부터 온, 또는 DSP에 대해 데이터를 읽거나 기록한다. 버스(19, 20)의 선정은 멀티플렉서(24)를 통해 가상 캐시 메모리 블록에 의해 제어된다. PCI 버스(19)와의 통신에서는 제어 입력(30)이 주어진 멀티플렉서(31)로, 8개의 32비트 이전(transfer)으로 이루어진 버스트 모드(burst mode)를 사용하여 총 256 비트 캐시 라인이 판독되거나 또는 기록된다. 상기와 같은 이전을 구현하는 방법은 당업자에게는 잘 알려진 기술이며 PCI 버스 스펙(specification)에도 충분히 설명되어져 있다. 데이터 버스(20)를 통하여 DSP와 통신하는 경우에는, 상기 오디오 샘플 이전은 개별적인 오디오 샘플 베이스 즉, 8, 16, 32비트 폭으로 진행된다. 이러한 이전은 제어신호 26과 제어신호 28을 사용하여 상기 가상 캐시 메모리 블록에 의해 제어된다. 특히, 데이터 캐시(16)에 기록할 때는, 두 가지의 구현예가 가능하다. 즉 캐시 라인의 정확한 자리에 상기 오디오 샘플을 저장하기 위해 판독/수정/기록 사이클이 사용되거나, 또는 몇 개의 기록 가능 신호(write enable signals)를 데이터 캐시 메모리에 보내 저장된 캐시 라인의 필요한 부분만을 수정 가능하도록 하는 것이다.
도 3을 참조하면, 상기 가상 캐시 메모리 블록(14)은 DSP-캐시 인터페이스(33)룰 포함한다. 상기 인터페이스(33)는 신호 입력 13및 35에서 37을 받는데, 이들은 각각 가상 어드레스, 현재(current) 프로세싱 슬롯 번호, 현재 슬롯에 대한 현재 접근 요청 번호(current access request number) 및 현재 슬롯에 대한 현재 판독/기록 요청 번호를 나타낸다. 이들 입력 각각은 대응하는 DSP로부터의 출력에 연결되어 있다. 상기 인터페이스(33)는 또한 가상 캐시 어드레스 테이블(43)과 가상 캐시 데이터 라인 테이블(47)에 연결된 신호 출력 39, 41,45를 가진다. 접근이 요청될 경우, 상기 인터페이스(33)는 상기 가상 캐시 어드레스 테이블(43)을 어드레싱하는 가상 캐시 어드레스를 신호 출력(39)에 제공하면서 출력(41)을 통해 어드레스 테이블(43)의 데이터 입력에 가상 어드레스를 제공한다. 판독이나 기록 과정중 데이터에 억세스하는 경우, 상기 인터페이스(33)는 대응하는 저장된 데이터 캐시 어드레스를 찾아내기 위해 현재 DSP 가상 캐시 어드레스를 상기 가상 캐시 데이터 라인 테이블(47)에 제공한다.
상기 가상 캐시 메모리 블록(14)은 또한 가상 캐시 어드레스 테이블(43)을 포함한다. 이 테이블의 크기는 한 프레임에서 수행될 수 있는 최대 샘플 메모리 억세스 수에 대응한다. 이 테이블은 각 가능한 억세스에 대해, 현재 가상 어드레스(VADDR), 유효 비트(valid bit,V) 및 상기 가상 어드레스가 실제로 억세스를 요청하는지를 지시하는 요청 비트(request bit, R)를 가진다. 기술적인 문제로 인해, 상기 가상 캐시 어드레스 테이블(43)은 바람직하게는 두 개의 디바이스로 이루어지는데, 즉, 상기 유효 비트(V) 및 VADDR을 가지는 RAM(random access memory)과 상기 요청 비트(R)을 가지는 레지스터 뱅크(register bank)가 그것들이다. 구현예에서 VADDR은 샘플 메모리 어드레스로서 어드레스 라인(17)에 보내진다. 동등 비교기(equality comparator, 49)는 인터페이스(33)으로부터 입력된 가상 어드레스(41)와 상기 가상 캐시 어드레스 테이블(43)에 저장되었다가 라인(17)로 출력된 VADDR을 비교한다. 이 비교는 마스크화된(masked) 하위 5비트와 함께 수행되며, 캐시 관리기(71)에 대해 요청된 데이터가 데이터 캐시의 데이터 라인에 이미 존재하는지를 알려준다.
우선순위 인코더(priority encoder,51)는 가상 캐시 어드레스 테이블(43)의 레지스터 뱅크로부터 병렬적으로 모든 요청 비트(R)를 받는다. 이 우선순위 인코더는 어떤 가상 캐시 어드레스(VCADDR)가 서비스를 요청하는지를 결정한다(R=1). 상기 우선순위 인코더(51)는 상기 가상 캐시 어드레스(VCADDR)을 출력하여 증가/감소 디바이스(increment/decrement device, 55)에 입력하고 이 증가/감소 디바이스(55)는 캐시 관리기(71)로부터 온 제어 신호(*)에 따라 VCADDR-1, VCADDR 또는 VCADDR+1 중 하나를 출력한다. 이 출력(57)은 교대로 상기 가상 캐시 어드레스 테이블(43) 및 상기 캐시 데이터 라인 테이블(47) 모두에 억세스한다. 따라서, 주어진 가상 캐시 어드레스(VCADDR)로부터 그 전이나 그 다음의 가상 캐시 어드레스까지 판독하는 것이 가능하다. 그 전이나 또는 그 다음의 가상 캐시 어드레스로부터 읽혀진 가상 어드레스들은 하위 마스크화된 5비트와 함께, 각각 두 개의 레지스터 59와 60에 저장된다. 두 동등 비교기(61,62)들은 이 가상 어드레스들이 동일한 데이터 캐시 라인을 참조하는지를 결정하여 캐시 관리기(71)에게 통보하기 위해, 하위 마스크화 된 5비트를 가진 이 가상 어드레스들을, 캐시 어드레스 테이블(43)로부터 입력된, 대응하는 현재 가상 어드레스와 비교한다.
상기 가상 캐시 메모리 블록(14)은 또한, 가상 캐시 데이터 라인 테이블(47)을 포함한다. 이 테이블은 표준적인 RAM으로 구현될 수 있는데, 상기 가상 캐시 어드레스 테이블(43)과 동일한 크기를 가진다. 이것은 각 엑티브 엔트리(active entry)에 대해, 데이터 캐시의 대응하는 캐시 라인의 어드레스(DCADDR)를 가진다. 비어 있는(free) 데이터 캐시 라인을 할당하기 위해, 두 레지스터 뱅크들(65, 66) 및 우선 순위 인코더(67)가 사용된다. 현재의 프레임과 그 전 프레임-1에 대해, 각 ″사용중인(in-use)″ 레지스터 뱅크(65, 66)들은 테이블(43, 47)의 저장 장소들의 숫자와 동일한 크기를 가진다. 이 레지스터 뱅크들의 각 비트들은 대응하는 데이터 캐시 라인이 이미 사용중임을 표시한다. 상기 우선 순위 인코더(67)는 어떤 것이 0으로 세트[비어 있거나 또는 사용중이 아닌]된 최초의 레지스터 비트인지를 지시하며, 따라서 상기 우선 순위 인코더의 출력은 대응하는 가상 어드레스에 할당 가능한 최초의 사용 가능한 데이터 캐시 어드레스(DCADDR)이다.
캐시 관리기 블록(71)은 상기 가상 캐시 어드레스 테이블(43)으로부터의 요청을 고려한 모든 연산 시퀀스들에 사용된다. 상기 캐시 관리기(71)는 도 3의 블록 (14)의 여러 다양한 구성요소들(43, 49, 61,62)로부터 정보들을 받은 후, 순차적으로 제어 신호를 발생시킨다. 상기 캐시 관리기(71)는 공지된 기술로, 마이크로프로그램, PLA나 또는 게이트로 디코드된 진리표(truth table)등으로 구현된다. 상기 가상 메모리 블록(14)의 연산 수행 과정은 추후 상세히 설명할 예정이다.
도 4를 참조하면, 도 3의 DSP 캐시 인터페이스(33)는 가상 캐시 구성 테이블(virtual cache configuration table, 75), 선입-선출(FIFO) 메모리(91), 가산기(81, 100)와 멀티플렉서(87)로 구성되어진다. 상기 가상 캐시 구성 테이블(75)은 DSP로부터의 프로세싱 슬롯 수와 크기면에서 동일하다. 이것은 입력 라인(35)로, DSP로부터의 현재 슬롯 번호를 입력받는다. 각 슬롯들에 대해, 가상 캐시 구성 테이블(75)은 사용되어야 할 최초 가상 캐시 어드레스(1st Vcache)를 필드 77에서 나타내며, 필드 79에는 한 슬롯 안에서 수행되어야 할 연속적인 판독 및 기록 연산(R/W)을 나타낸다. 연속적인 연산(R/W)을 나타내기 위한 필드(79)의 개별 비트의 갯수는 한 슬롯내에서 수행될 수 있는 메모리 억세스의 최대 횟수와 동일하다[예를 들어 도시된 실시예에서는 4회]. 상기 가상 캐시 구성 테이블(75)은 주어진 합성/프로세싱 구성에 대해 한 번 DSP에 의해 로드된다. 만약 응용 프로그램이 고정된 구조(fixed configuration)를 사용한다면, 상기 테이블(75)은 ROM으로 구현될 수 있다.
샘플 메모리 억세스를 요청하는 경우, 상기 DSP는 입력(35)에 슬롯 번호를 제공하는 것 외에도, 억세스를 위하여 FIFO 메모리(91)로 접속된 입력(13)에 상기 가상 어드레스(VADDR)를 제공하며, 입력(36)에는 그 슬롯내에서의 억세스 요청 번호를 제공한다. 가산기(81)는 라인(83)을 통하여 FIFO 메모리(91)에 현재 가상 캐시 어드레스(VCADDR)을 제공하기 위해, 상기 억세스 요청 번호와 상기 구성 테이블(75)의 필드(77)로부터 라인(78)을 통해 입력된 슬롯의 최초 가상 캐시 어드레스(1st Vcache)를 합한다. 상기 구성 테이블(75)의 필드(79)에 있는 상기 개별 판독/기록 억세스 비트(R/W)는 멀티플렉서(87)에 의해 선정되어 라인(85)으로 출력되는데, 이 때 입력(36)으로부터의 상기 억세스 요청 번호가 선정 제어 신호로 사용된다. 상기 멀티플렉서(87)는 따라서, 출력(89)을 통해 FIFO 메모리(91)로 이 특별한 억세스가 기록명령인지 또는 판독명령인지를 지시하는 비트를 제공한다.
상기 FIFO 메모리(91)는 각각 현재 가상 캐시 어드레스(VCADDR), 억세스를 위한 현재 어드레스(VADDR), 이것이 이 슬롯에 대한 최초 요청인지를 지시하는 비트(1st RQST)와 요청된 억세스 형태를 지시하는 판독/기록 비트(R/W)를 저장하는 필드(93, 95, 97, 99)를 가진다. 상기 FIFO 메모리(91)는 DSP로부터의 모든 억세스 요청을 파일링하고 한 슬롯에 대한 최대 억세스 계수(maximum access count)의 두 배에 해당하는 크기를 가진다. 상기 가상 캐시 어드레스(VCADDR)와 상기 가상 어드레스(VADDR)는, 대응하는 필드(97, 99)의 요청 비트들과 함께 FIFO 메모리(91)에 의해 출력(39, 41)으로 제공되는데 이는 도 3의 상기 가상 캐시 어드레스 테이블에 로드하기 위해서이다.
데이터에 대한 억세스를 요청하는 경우, DSP는, 또한 입력(37)에 현재 슬롯에 대한 현재 판독/기록 요청 번호를 제공하는데, 이것은 가산기(100)에 의해, 라인(78)을 통해 상기 구성 테이블(75)로부터 입력된 상기 최초 가상 캐시 어드레스(1st Vcache)와 더해지며, 이는 도 3의 데이터 라인 테이블(47)에 라인(45)을 통하여 현재 DSP 가상 캐시 어드레스를 제공하기 위함이다.
본 디바이스의 작동은 다음의 실시예를 통해 가장 잘 이해할 수 있다. 맨 처음 이해해야 할 부분은 모든 데이터 이전(transfer)은 하나의 DSP 프레임 지연(delay)동안 발생한다는 것이다. 즉, DSP가 프렘임 F에서 억세스를 요청했다면, 데이터의 이전은 프레임 F+1에서 일어난다. 이것은 샘플 메모리로부터 요청한 데이터를 얻을 수 있도록 상기 가상 캐시 메모리 블록(14)에 풀 프레임(full frame)을 제공한다. 이것은 특히 여러 에이전트가 동시다발로 서비스를 요청할 수 있는 버스인 PCI나 다른 버스를 통해 샘플 메모리가 억세스 될 때마다 매우 중요하한 상황이 된다.
〈판독 실시예〉
DSP 슬롯 #3가 어드레스 1000H[H는 16진수를 뜻함]에 있는 연속적인 두 샘플에 억세스하기를 원한다고 가정하자. 이것은 선형 보간법(linear interpolation)을 사용하는 합성에서는 자주 발생하는 일이다[선형 보간법이란 두 연속적인 샘플들 사이의 미지의 샘플에 대한 근사값을 결정하는 가장 쉬운 방법이다. 좀 더 정확한 방법으로는 컨벌루션(convolution)이 있다. 이 두 방법 모두는 당업자에게 잘 알려진 방법이며 ″ Musical Applications of Microprocessors″(by Hal Chamberlain, Hayden Book Company, 1985)에 상세히 기술되어 있다].
도 4를 참조하면, 슬롯 #3은 최초 Vcache 어드레스[예를 들어 10이라 하자]를 필드(77)로부터 제공하는 상기 구성 테이블(75)에 억세스한다. 필드(79)에 있는 처음의 두 개별 비트들은 판독 연산임을 지시하기 위해 0이 될 것이다. 슬롯 중(during the slot)에 FIFO 메모리에 두 개의 기록이 실시된다.
First write : Vcache address = 10 ,
Virtual address = 1000H ,
first request = 1 ,
R/W = 0
Second write: Vcache address = 11 ,
Virtual address = 1001H ,
first request = 0 ,
R/W = 0
다음 슬롯(#4)중에, 상기 FIFO 메모리(91)는 그것이 빌(empty) 때까지, 또는 필드(97)의 제1요청 비트가 세트될 때까지 판독될 것이다[이것은 슬롯 #4중에 DSP가 FIFO를 현재 채운다는 의미다]. FIFO를 판독한 후, 도 3의 Vcache 어드레스 테이블(43)의 내용은 다음처럼 된다.
Address 10: Virtual address 1000H, VALID = 0,RQST = 1
Address 11: Virtual address 1001H, VALID = 0,RQST = 1
여기서 도 3의 캐시 관리기 제어 로직 연산을 상세히 설명한다. RQST 비트가 세트되었으므로 상기 우선순위 인코더(51)는 서비스를 요청하는 Vcache 어드레스 10 을 지시할 것이다. 캐시 관리기(71)는 VALID 비트를 체크하면서 종전의 Vcache 어드레스(9)와 그 다음 Vcache 어드레스(11)를 살핀다. 이 비트들이 세트되어 있지 않다면, 캐시 관리기는 Vcache 데이터 라인 테이블(47)에 상기 우선순위 인코더(51)에 의해 주어진 최초의 사용 가능한 데이터 캐시 어드레스를 기록함으로써, 새로운 캐시 데이터 라인을 할당한다. 그 후 캐시 관리기는 샘플링 메모리 억세스 버스트 사이클(sampling memory access burst cycle)을 수행하는데, 이것은 어드레스 3에 있는(도 2) 데이터 캐시 메모리(16)를 캐시 라인[1000H 부터 101FH까지의 바이트 어드레스]으로 채운다. 그 후에 캐시 관리기는 VALID 비트를 세트하고 RQST를 Vcache 어드레스 10로 리셋(reset)시킨다. Vcache 어드레스 10로부터의 RQST 비트가 리셋되면, 상기 우선순위 인코더는 Vcache 어드레스 11이 서비스를 요청함을 지시한다. 종전 Vcache 어드레스 10을 살피던 캐시 관리기(71)는 VALID 비트가 세트 되었음을 발견한다. 또한 캐시 관리기는 Vcache 어드레스 10이 마스크화된 하위 5비트와 함께 Vcache 어드레스 11과 동일한 가상 어드레스를 가지고 있음을 발견한다[R-1 스토리지(59)와 동등 비교기(61)를 사용하여]. 결과적으로 캐시 관리기는 Vcache 어드레스 10처럼 Vcache 어드레스 11에 동일한 데이터 캐시 어드레스를 할당하는데, 이는 Vcache 데이터 라인 테이블(47)의 어드레스 10으로부터 데이터 캐시 어드레스 3을 읽어 임시 레지스터 R에 두었다가 R을 다시 어드레스 11의 Vcache 데이터 라인 테이블(47)에 되쓰는 방법을 통해서이다. 그 후 캐시 관리기(71)는 VALID 비트를 셋팅하고 Vcache 어드레스 11에 대한 RQST 비트를 리셋(reset)한다.
또 다른 RQST가 진행중인 것이 없다면 캐시 관리기(71)는 다음 프레임까지 유휴상태(idle state)에 들어간다.
다음 프레임 슬롯#3 에서 DSP는 종전 프레임에서 요청했던 데이터를 판독할 수 있게 된다. 상기 슬롯 #3은 최초 Vcache 어드레스 10를 제공하는 Vcache 구성 테이블(75, 도 4의)에 억세스한다. 가산기(81)에 의해 상기 최초 Vcache 어드레스에 더해지는 최초 억세스 0은 DSP Vcache 어드레스 10을 제공하는데, 이것은 Vcache 데이터 라인 테이블(47)을 통해 데이터 캐시 어드레스 3을 지시한다. 상기 데이터 캐시는 DSP에 정확한 데이터를 제공하기 위해 어드레스 3에서 판독된다. 비슷한 방식으로 두 번째 억세스 1도 동일한 데이터 캐시 라인을 판독한다.
만약 상기 가상 어드레스들이 변하지 않는다면, 후속되는 프레임에 대한, 데이터 캐시로부터의 판독은 항상 일어날 것이다. 이제 두 가지 다른 상황에 대해 상세히 설명한다.
- 가상 어드레스들은 증가한다.
- 가상 어드레스들은 캐시 라인 경계(boundary)를 건너간다(cross).
가상 어드레스들은 증가하는 경우(이제 1001H와 1002H): 먼저 FIFO의 판독연산부터 시작한다. Vcache 어드레스 테이블(43)의 어드레스 10에 저장된 상기 가상 어드레스(VADDR)는[현재 1000H] 입력되는 하위 마스크화된 5 비트를 가진 가상 어드레스[1001H]와 비교기(49)에 의해 비교된다. 따라서, 그것들은 서로 동일함이 발견되면 VALID 비트가 세트되고 RQST는 아무것도 세트하지 않는다. 전술한 바와 같이 데이터 캐시 메모리(16)로부터 추가의 판독작업이 발생한다. 동일한 방식이 Vcache 어드레스 테이블(43)의 어드레스 11에 적용된다.
가상 어드레스들이 캐시 라인 경계(boundary)를 건너가는 경우(이제 101FH 와 1020H): FIFO 판독 연산부터 시작하면, Vcache 어드레스 테이블(43)의 어드레스 10에 저장된 상기 가상 어드레스(VADDR)는[현재 1000H] 입력되는 하위 마스크화된 5비트를 가진 가상 어드레스[101FH]와 비교기(49)에 의해 비교한다. 그 다음 그것들이 동일하다고 밝혀지면, 전술한 바와 같이 데이터 캐시 메모리(16)로부터 최초 판독이 이루어진다. Vcache 어드레스 테이블(43)의 어드레스 11에 저장된 상기 가상 어드레스는[현재 1001H] 들어오는 하위 마스크화된 5 비트를 가진 가상 어드레스[1020H]와 비교기(49)에 의해 비교한다. 그것들은 서로 상이함이 밝혀진다. 따라서, 입력되는 가상 어드레스[1020H]는 어드레스 11에 있는 Vcache 어드레스 테이블(43)에 저장되고, 유효 비트는 리셋되며 요청 비트는 세트된다. 캐시 관리기(71)로부터의 RQST 비트 프로세싱은 전술한 바와 같이 그 후 새로운 캐시 데이터 라인을 할당한다.
데이터 캐시 라인 할당 및 할당 제외의 원리(Data cache line allocation and de-allocation principle)
프로세싱 프레임내에서 사용되지 않는 데이터 캐시 라인은 할당 제외되었다고 한다. 이는 새로운 할당을 위해 비어 있는 상태를 말한다. 그렇게 만들기 위해, 두 개의 ″사용중인″ 레지스터 뱅크(65, 66)가 사용되는데, 각 레지스터 뱅크는 데이터 캐시 라인의 총 갯수의 크기를 갖고 있다. 각 프레임이 시작될 때, ″사용중인″ 레지스터 ″프레임(65)″은 ″사용중인″ ″프레임-1(66)″에 이전되고 ″사용중인″ 레지스터 ″프레임(65)″은 소거된다. 프레임 내에서, 데이터 캐시 라인이 억세스 될 때마다, ″사용중인″ 레지스터 ″프레임(65)″으로부터 나온 대응하는 비트는 세트된다. 따라서, 프레임의 끝날 때, ″사용중인″ 레지스터 프레임(65)은 모든 사용된 캐시 라인에 대응하는 비트 세트를 가지고 있고, 결과적으로 사용중인 레지스터 프레임-1은 풀 프레임내에서 유효하다. 사용중인 프레임-1 레지스터(66)에 연결된 우선순위 인코더(67)는 최초 비트가 0임을 지시하는데, 이는 최초의 사용가능한 데이터 캐시 라인이다.
샘플 메모리에 데이터를 기록
DSP(12)로부터 샘플 메모리(18)에 대한 데이터 기록 요청은 데이터 캐시 메모리(16)의 데이터 캐시 라인에 직접 기록된다. 가상 어드레스가 캐시 라인 경계를 넘어갈 때[예를 들면 101FH에서 1020H로] 전체 데이터 캐시 라인이 샘플 메모리(18)에 기록된다. 이것은 Vcache 어드레스 테이블(43)에 저장된 가상 어드레스가 라인(41)에 들어오는 마스크화된 하위 5비트를 가진 가상 어드레스와 매치되지 않을 때, FIFO 판독 시간에 비교기(49)에 의해 발견된다.
가상 어드레스를 샘플 메모리 어드레스로 전환
PC 환경에서는, DSP 가상 어드레스와 상이한 샘플 메모리 어드레스를 계산하는 것이 바람직한다. 이를 통해, DSP 프로그램을 변화시키지 않고 PC 메모리를 간단히 재할당(reallocation)할 수 있다. 또한 이것은 인터리브드된 다중채널 오디오 포맷들(interleaved multichannel audio formats)을, DSP입장에서 볼 때 여러개의 모노포닉 오디오 스트림(monophonic audio stream)으로 처리할 수 있게 해 준다.
전술한 바와 같이 라인(17)의 샘플 메모리 어드레스 출력(도 3)은 라인(13)을 통해 DSP로부터 제공된 가상 주소(VADDR)와 동일하다. 좀 더 진보된 형태는 샘플 메모리 어드레스(SMA)를 다음과 같이 계산하는 것이다.
SMA = BASE + ((VA*NCHAN) + CHAN) * BYTESPERCHANNEL
여기서 VA는 가상 어드레스, SMA는 샘플 메모리 어드레스, NCHAN은 인터리브드된 채널의 갯수, CHAN은 현재의 채널, BYTESPERCHANNEL은 한 채널에 한 샘플을 코딩하는 바이트의 갯수이고 BASE는 레지스터를 말한다. 낭비적인 곱셈 연산을 피하기 위해서 NCHAN과 BYTESPERCHANNEL은 2승(powers of two)으로 제한되어야 하며, 그러면 곱셈 연산은 간단히 좌측 쉬프트들(left shifts)이 된다.
좀 더 정교한 레벨은 VA 내용에 따라 선정된 여러 개의 BASE 레지스터를 가지는 것이다. 이것은 PC 메모리를 세크멘트시키고(segmented) 이를 통해 PC 메모리 공간을 좀 더 최적화시킨다.

Claims (6)

  1. 디지털 오디오 샘플 데이터를 저장한 샘플 메모리를 사용하는 디지털 사운드 생성 디바이스에서,
    디지털 신호 프로세서(DSP)와,
    상기 DSP와 상기 샘플 메모리간의 데이터 경로에 있는 데이터 캐시 메모리와,
    상기 DSP와 상기 샘플 메모리 및 상기 데이터 캐시 메모리 사이의 어드레스 경로에 있는 가상 캐시 메모리 수단을 포함하는 것으로서,
    상기 데이터 캐시 메모리는 그 캐시 라인내에 상기 DSP에 의한 사용을 위해 상기 샘플 메모리로부터 판독된 오디오 샘플 데이터를 저장하며 상기 샘플 메모리에 기록될, 상기 DSP에 의해 처리된 오디오 샘플 데이터를 또한 저장하며,
    상기 가상 캐시 메모리 수단은 상기 샘플 메모리에 억세스를 요청하는 상기 DSP로부터 가상 어드레스를 수신하고, 상기 데이터 캐시 메모리의 상기 가상 어드레스에 대응하는 캐시 라인을 할당하고, 상기 샘플 메모리와 상기 할당된 캐시 라인들 사이의 오디오 샘플 데이터의 전송을 위해 상기 샘플 메모리를 어드레스하고, 상기 DSP와 상기 캐시 라인들 사이의 오디오 샘플 데이터의 전송을 위해 상기 대응하는 할당된 캐시 라인들에 있는 상기 데이터 캐시 메모리를 어드레스하는 것을
    특징으로 하는 디지털 사운드 생성 디바이스.
  2. 제1항에 있어서, 상기 데이터 캐시 메모리의 상기 캐시 라인들은 상기 샘플 메모리로 전송되거나 또는 그로부터 전송되어 오는 오디오 샘플 데이터의 블록 크기와 매칭되는 비트 크기를 갖는 것을 특징으로 하는 디지털 사운드 생성 디바이스.
  3. 제1항에 있어서, 상기 데이터 캐시 메모리의 상기 캐시 라인들은 상기 샘플 메모리로부터 전송되는 오디오 샘플의 다중 블록들을 저장할 수 있는 비트 크기를 갖는 것을 특징으로 하는 디지털 사운드 생성 디바이스.
  4. 제1항에 있어서, 상기 가상 캐시 메모리 수단은,
    적어도 현 프로세싱 슬롯 번호, 억세스 요청 번호 및 상기 DSP로부터 온 가상 어드레스를 입력받으면서, 상기 각 슬롯 번호에 대한 지정된 최초 가상 캐시 어드레스를 저장하는 구성 테이블과, 현재 가상 캐시 어드레스를 얻기 위해, 상기 입력된 슬롯 번호에 의해 상기 구성 테이블로부터 억세스된 상기 최초 가상 캐시 어드레스와 상기 입력된 억세스 요청 번호를 더하는 가산기와, 상기 가상 캐시 어드레스, 상기 가상 어드레스 및 상기 DSP로부터 받은 판독/기록 비트를 저장하는 선입-선출(FIFO) 메모리를 가지는 인터페이스와,
    각 가상 캐시 어드레스에 대해, 상기 FIFO 메모리로부터 받은 가상 어드레스와, 어드레스 테이블에 저장된 가상 어드레스가 상기 가상 캐시 어드레스에 대해 유효한 현재 어드레스인지를 지시하는 유효 비트와, 상기 DSP에 의한 현재 억세스 요청에 해당하는 가상 캐시 어드레스가 무엇인지를 지정하는 요청 비트를 저장하는 상기 어드레스 테이블과,
    상기 어드레스 테이블로부터 그 내부의 상기 현재 가상 캐시 어드레스에 저장된 가상 주소를 받고, 또한 상기 FIFO 메모리로부터 상기 가상 주소를 받는 제1 비교기와, -여기서 상기 가상 주소들이 동일하다면 이는 그 가상주소에 해당하는 오디오 샘플 데이터가 이미 상기 데이터 캐시 메모리에 저장되었음을 나타냄-
    상기 가상 캐시 어드레스들 모두에 대해 상기 어드레스 테이블로부터 상기 요청 비트들을 입력받고, 상기 요청 비트가 세트된 가상 캐시 어드레스를 출력하는 제1 우선순위 인코더와,
    상기 데이터 캐시 메모리에 억세스하기 위해, 각 가상 캐시 어드레스에 대해대응하는 데이터 캐시 어드레스를 저장하는 데이터 라인 테이블을
    포함한 것을 특징으로 하는 디지털 사운드 생성 디바이스.
  5. 제4항에 있어서, 상기 가상 캐시 메모리 수단은,
    상기 가상 캐시 어드레스에 추가하여, 증가/감소된 어드레스들을 공급하기 위하여 상기 제1 우선순위 인코더와 상기 데이터 라인 테이블 사이에 연결된 수단과, -상기 증가/감소된 어드레스들은 상기 어드레스 테이블에 억세스하여 그로부터 대응하는 가상 주소들을 판독함-
    상기 어드레스 테이블로부터 상기 증가/감소된 어드레스들에 대응하는 상기 가상 어드레스들을 입력받는 레지스터들과,
    각각 상기 레지스터들로부터 대응하는 가상 어드레스들을 입력받고, 또한 상기 가상 캐시 어드레스에 대응하는 가상 어드레스를 상기 어드레스 테이블로부터 입력받아 상기 증가/감소 어드레스들이 상기 가상 캐시 어드레스에 대응하는지를 지시하는 비교 결과를 출력하는 제2 및 제3 비교기를 추가로 포함하고, 상기 증가/감소된 어드레스들을 공급하기 위한 상기 수단은 양(positive)의 비교 결과에 따라 상기 데이터 라인 테이블에 또한 억세스하는 것임을 특징으로 하는 디지털 사운드 생성 디바이스.
  6. 제4항에 있어서, 상기 가상 캐시 메모리 수단은,
    직렬로 상기 데이터 라인 테이블의 데이터 출력에 연결되며, 각각 현 프로세싱 타임 프레임에서와 그 전 프로세싱 타임 프레임에서 상기 데이터 라인 테이블에 저장된 데이터 캐시 어드레스들을 지정하는 비트들을 저장한 제1및 제2의 사용중인(in-use) 레지스터 뱅크들과,
    상기 제2의 사용중인 레지스터 뱅크의 출력과 상기 데이터 라인 테이블의 데이터 입력에 연결되며, 가상 캐시 어드레스에 할당하기 위해 최초의 사용가능한 데이터 캐시 어드레스를 상기 데이터 라인 테이블에 제공하는 우선순위 인코더를 추가로 포함한 것을 특징으로 하는 디지털 사운드 생성 디바이스.
KR1020007004879A 1998-09-04 1999-08-24 가상 캐시 메모리를 장착한 사운드 생성 집적회로 KR20010031810A (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US9/148,437 1998-09-04
US09/148,437 US5918302A (en) 1998-09-04 1998-09-04 Digital sound-producing integrated circuit with virtual cache
PCT/US1999/019128 WO2000014721A1 (en) 1998-09-04 1999-08-24 Sound-producing integrated circuit with virtual cache

Publications (1)

Publication Number Publication Date
KR20010031810A true KR20010031810A (ko) 2001-04-16

Family

ID=22525762

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020007004879A KR20010031810A (ko) 1998-09-04 1999-08-24 가상 캐시 메모리를 장착한 사운드 생성 집적회로

Country Status (10)

Country Link
US (1) US5918302A (ko)
EP (1) EP1046152A4 (ko)
JP (1) JP2002524805A (ko)
KR (1) KR20010031810A (ko)
CN (1) CN1277710A (ko)
CA (1) CA2305523A1 (ko)
MY (1) MY133734A (ko)
NO (1) NO20002192L (ko)
TW (1) TW457471B (ko)
WO (1) WO2000014721A1 (ko)

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6138207A (en) * 1997-11-15 2000-10-24 Creative Technology Ltd. Interpolation looping of audio samples in cache connected to system bus with prioritization and modification of bus transfers in accordance with loop ends and minimum block sizes
US6275899B1 (en) * 1998-11-13 2001-08-14 Creative Technology, Ltd. Method and circuit for implementing digital delay lines using delay caches
US7526350B2 (en) * 2003-08-06 2009-04-28 Creative Technology Ltd Method and device to process digital media streams
US7107401B1 (en) 2003-12-19 2006-09-12 Creative Technology Ltd Method and circuit to combine cache and delay line memory
US8093485B2 (en) * 2004-12-17 2012-01-10 Lsi Corporation Method and system for prefetching sound data in a sound processing system
US7807914B2 (en) * 2007-03-22 2010-10-05 Qualcomm Incorporated Waveform fetch unit for processing audio files
JP5130809B2 (ja) * 2007-07-13 2013-01-30 ヤマハ株式会社 楽曲を制作するための装置およびプログラム
JP4475323B2 (ja) * 2007-12-14 2010-06-09 カシオ計算機株式会社 楽音発生装置、及びプログラム
US8183452B2 (en) * 2010-03-23 2012-05-22 Yamaha Corporation Tone generation apparatus
WO2012038829A2 (en) * 2010-09-23 2012-03-29 Marvell Israel (M.I.S.L.) Ltd. Low latency first-in-first-out (fifo) buffer

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5111727A (en) * 1990-01-05 1992-05-12 E-Mu Systems, Inc. Digital sampling instrument for digital audio data
US5342990A (en) * 1990-01-05 1994-08-30 E-Mu Systems, Inc. Digital sampling instrument employing cache-memory
US5613147A (en) * 1993-01-08 1997-03-18 Yamaha Corporation Signal processor having a delay ram for generating sound effects
JP3235409B2 (ja) * 1995-06-07 2001-12-04 ヤマハ株式会社 ミュージックシステム、音源および楽音合成方法
US5753841A (en) * 1995-08-17 1998-05-19 Advanced Micro Devices, Inc. PC audio system with wavetable cache

Also Published As

Publication number Publication date
EP1046152A4 (en) 2003-04-23
US5918302A (en) 1999-06-29
JP2002524805A (ja) 2002-08-06
CN1277710A (zh) 2000-12-20
NO20002192D0 (no) 2000-04-27
CA2305523A1 (en) 2000-03-16
TW457471B (en) 2001-10-01
WO2000014721A1 (en) 2000-03-16
MY133734A (en) 2007-11-30
EP1046152A1 (en) 2000-10-25
NO20002192L (no) 2000-07-03

Similar Documents

Publication Publication Date Title
US6100461A (en) Wavetable cache using simplified looping
JP2838645B2 (ja) 動的ボイス割当をおこなうオープンアーキテクチャー構成のミュージックシンセサイザー
US6051772A (en) Method and apparatus for emulating a frequency modulation device
US5689080A (en) Computer system and method for performing wavetable music synthesis which stores wavetable data in system memory which minimizes audio infidelity due to wavetable data access latency
US5717154A (en) Computer system and method for performing wavetable music synthesis which stores wavetable data in system memory employing a high priority I/O bus request mechanism for improved audio fidelity
US5918302A (en) Digital sound-producing integrated circuit with virtual cache
US8791349B2 (en) Flash memory based stored sample electronic music synthesizer
US5763801A (en) Computer system and method for performing wavetable music synthesis which stores wavetable data in system memory
US5753841A (en) PC audio system with wavetable cache
US5847304A (en) PC audio system with frequency compensated wavetable data
JPH07181969A (ja) コードセグメント置換装置及びそれを用いたリアルタイム信号処理システム並びにオーディオ処理システム
US5809342A (en) Computer system and method for generating delay-based audio effects in a wavetable music synthesizer which stores wavetable data in system memory
JP2850707B2 (ja) 楽音制御装置
US5657476A (en) Signal processor with delay line management logic
JP3163984B2 (ja) 楽音発生装置
EP0995187B1 (en) Tone generation device and method
JP4036233B2 (ja) 楽音発生装置および楽音発生方法、並びに該方法に係るプログラムを記憶した記憶媒体
JP3855711B2 (ja) 音波形データ用ディジタル信号処理装置
CA2295669A1 (en) Musical sound generating device and method, providing medium, and data recording medium
KR100384685B1 (ko) 주파수보상웨이브테이블데이터를구비한pc오디오시스템
JP2001509610A (ja) 減結合の命令実行及び音声データシーケンスを有する音声効果プロセッサ
JP3852634B2 (ja) 楽音発生装置および楽音発生方法、並びに該方法に係るプログラムを記憶した記憶媒体
WO2024021096A1 (zh) 一种数据共享的方法及设备
JP3855710B2 (ja) 音波形データ用ディジタル信号処理装置
US20100217922A1 (en) Access module, storage module, musical sound generating system and data writing module

Legal Events

Date Code Title Description
WITN Application deemed withdrawn, e.g. because no request for examination was filed or no examination fee was paid