KR20170080670A - 메모리 액세스 유닛 - Google Patents

메모리 액세스 유닛 Download PDF

Info

Publication number
KR20170080670A
KR20170080670A KR1020177015198A KR20177015198A KR20170080670A KR 20170080670 A KR20170080670 A KR 20170080670A KR 1020177015198 A KR1020177015198 A KR 1020177015198A KR 20177015198 A KR20177015198 A KR 20177015198A KR 20170080670 A KR20170080670 A KR 20170080670A
Authority
KR
South Korea
Prior art keywords
memory
sample
address
bus
samples
Prior art date
Application number
KR1020177015198A
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 KR20170080670A publication Critical patent/KR20170080670A/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/0207Addressing or allocation; Relocation with multidimensional access, e.g. row/column, matrix
    • GPHYSICS
    • G01MEASURING; TESTING
    • G01SRADIO DIRECTION-FINDING; RADIO NAVIGATION; DETERMINING DISTANCE OR VELOCITY BY USE OF RADIO WAVES; LOCATING OR PRESENCE-DETECTING BY USE OF THE REFLECTION OR RERADIATION OF RADIO WAVES; ANALOGOUS ARRANGEMENTS USING OTHER WAVES
    • G01S13/00Systems using the reflection or reradiation of radio waves, e.g. radar systems; Analogous systems using reflection or reradiation of waves whose nature or wavelength is irrelevant or unspecified
    • G01S13/02Systems using reflection of radio waves, e.g. primary radar systems; Analogous systems
    • G01S13/06Systems determining position data of a target
    • G01S13/08Systems for measuring distance only
    • G01S13/10Systems for measuring distance only using transmission of interrupted, pulse modulated waves
    • G01S13/26Systems for measuring distance only using transmission of interrupted, pulse modulated waves wherein the transmitted pulses use a frequency- or phase-modulated carrier wave
    • G01S13/28Systems for measuring distance only using transmission of interrupted, pulse modulated waves wherein the transmitted pulses use a frequency- or phase-modulated carrier wave with time compression of received pulses
    • GPHYSICS
    • G01MEASURING; TESTING
    • G01SRADIO DIRECTION-FINDING; RADIO NAVIGATION; DETERMINING DISTANCE OR VELOCITY BY USE OF RADIO WAVES; LOCATING OR PRESENCE-DETECTING BY USE OF THE REFLECTION OR RERADIATION OF RADIO WAVES; ANALOGOUS ARRANGEMENTS USING OTHER WAVES
    • G01S13/00Systems using the reflection or reradiation of radio waves, e.g. radar systems; Analogous systems using reflection or reradiation of waves whose nature or wavelength is irrelevant or unspecified
    • G01S13/02Systems using reflection of radio waves, e.g. primary radar systems; Analogous systems
    • G01S13/50Systems of measurement based on relative movement of target
    • G01S13/52Discriminating between fixed and moving objects or between objects moving at different speeds
    • G01S13/522Discriminating between fixed and moving objects or between objects moving at different speeds using transmissions of interrupted pulse modulated waves
    • G01S13/524Discriminating between fixed and moving objects or between objects moving at different speeds using transmissions of interrupted pulse modulated waves based upon the phase or frequency shift resulting from movement of objects, with reference to the transmitted signals, e.g. coherent MTi
    • G01S13/5246Discriminating between fixed and moving objects or between objects moving at different speeds using transmissions of interrupted pulse modulated waves based upon the phase or frequency shift resulting from movement of objects, with reference to the transmitted signals, e.g. coherent MTi post processors for coherent MTI discriminators, e.g. residue cancellers, CFAR after Doppler filters
    • GPHYSICS
    • G01MEASURING; TESTING
    • G01SRADIO DIRECTION-FINDING; RADIO NAVIGATION; DETERMINING DISTANCE OR VELOCITY BY USE OF RADIO WAVES; LOCATING OR PRESENCE-DETECTING BY USE OF THE REFLECTION OR RERADIATION OF RADIO WAVES; ANALOGOUS ARRANGEMENTS USING OTHER WAVES
    • G01S13/00Systems using the reflection or reradiation of radio waves, e.g. radar systems; Analogous systems using reflection or reradiation of waves whose nature or wavelength is irrelevant or unspecified
    • G01S13/87Combinations of radar systems, e.g. primary radar and secondary radar
    • 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
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1605Handling requests for interconnection or transfer for access to memory bus based on arbitration
    • G06F13/1647Handling requests for interconnection or transfer for access to memory bus based on arbitration with interleaved bank access
    • GPHYSICS
    • G01MEASURING; TESTING
    • G01SRADIO DIRECTION-FINDING; RADIO NAVIGATION; DETERMINING DISTANCE OR VELOCITY BY USE OF RADIO WAVES; LOCATING OR PRESENCE-DETECTING BY USE OF THE REFLECTION OR RERADIATION OF RADIO WAVES; ANALOGOUS ARRANGEMENTS USING OTHER WAVES
    • G01S13/00Systems using the reflection or reradiation of radio waves, e.g. radar systems; Analogous systems using reflection or reradiation of waves whose nature or wavelength is irrelevant or unspecified
    • G01S13/02Systems using reflection of radio waves, e.g. primary radar systems; Analogous systems
    • G01S13/50Systems of measurement based on relative movement of target
    • G01S13/52Discriminating between fixed and moving objects or between objects moving at different speeds
    • G01S13/522Discriminating between fixed and moving objects or between objects moving at different speeds using transmissions of interrupted pulse modulated waves
    • G01S13/524Discriminating between fixed and moving objects or between objects moving at different speeds using transmissions of interrupted pulse modulated waves based upon the phase or frequency shift resulting from movement of objects, with reference to the transmitted signals, e.g. coherent MTi
    • G01S13/53Discriminating between fixed and moving objects or between objects moving at different speeds using transmissions of interrupted pulse modulated waves based upon the phase or frequency shift resulting from movement of objects, with reference to the transmitted signals, e.g. coherent MTi performing filtering on a single spectral line and associated with one or more range gates with a phase detector or a frequency mixer to extract the Doppler information, e.g. pulse Doppler radar
    • GPHYSICS
    • G01MEASURING; TESTING
    • G01SRADIO DIRECTION-FINDING; RADIO NAVIGATION; DETERMINING DISTANCE OR VELOCITY BY USE OF RADIO WAVES; LOCATING OR PRESENCE-DETECTING BY USE OF THE REFLECTION OR RERADIATION OF RADIO WAVES; ANALOGOUS ARRANGEMENTS USING OTHER WAVES
    • G01S13/00Systems using the reflection or reradiation of radio waves, e.g. radar systems; Analogous systems using reflection or reradiation of waves whose nature or wavelength is irrelevant or unspecified
    • G01S13/88Radar or analogous systems specially adapted for specific applications
    • G01S13/93Radar or analogous systems specially adapted for specific applications for anti-collision purposes
    • G01S13/931Radar or analogous systems specially adapted for specific applications for anti-collision purposes of land vehicles
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement

Abstract

d-차원 어레이 내 샘플들의, m개의 데이터 버스(27; 77) 중 하나와 k*m개의 메모리(221, ..., 22k; 721, ..., 72k *m) 간의 전송을 처리하기 위한 메모리 액세스 유닛(24; 741, ..., 74m)으로, m≥1 및 k≥2인 메모리 액세스 유닛을 기재한다. 상기 메모리 액세스 유닛은, k개의 주소 계산기(281, ..., 28k; 791, ..., 79k *m)를 포함하고, 각각의 주소 계산기는, 버스 주소(A_B)를 수신하고, 각각의 오프셋을 가산하여 샘플 버스 주소(A_B')를 생성하고, 상기 샘플 버스 주소로부터 주소지정법(addressing scheme)에 따라, 주소지정법에 따라 상기 버스 주소로부터 상기 차원들 중 하나를 따라 상기 각각의 d 차원 내 주소(A_1, ..., A_d)를 생성하도록 구성된다. 상기 메모리 액세스 유닛은 또한 k개의 샘플 수집기들(291, ..., 29k; 801, ..., 80k *m)을 포함하고, 각각의 샘플 수집기는, 상기 k*m개의 메모리 중 하나에 대한 메모리 선택(CS)을 생성함으로써, 버스 데이터 워드 내 기설정 위치와 상기 k*m개의 메모리 중 상기 하나의 메모리 사이에서 상기 샘플을 전송하도록 작동 가능하다. 각각의 샘플 수집기(291, ..., 29k; 801, ..., 80k *m)는, 상기 k*m개의 메모리 중에서 각자 다른 하나를 선택하도록 상기 각각의 d 차원 내 주소(A_1, ..., A_d)에 따라 각각의 메모리 선택(CS)을 계산함으로써, 상기 샘플 수집기들이 상기 k*m개의 메모리 중에서 k개에 동시에 액세스하도록 구성된다. 메모리 콘트롤러는, d-차원 어레이 내 샘플들의, m개의 데이터 버스(771, ..., 77m)와 k*m개의 메모리(711, ..., 71k*m) 간의 전송을 처리하기 위한 m개의 메모리 액세스 유닛(741, ..., 74m)을 포함할 수 있다.

Description

메모리 액세스 유닛{MEMORY ACCESS UNIT}
본 발명은 메모리 액세스 유닛 및 하나 이상의 메모리 액세스 유닛을 포함하는 메모리 콘트롤러에 관한 것이다.
위험한 상황을 탐지하기 위한 다양한 형태의 센서를 구비한 자동차들이 점점 더 늘어나고 있다. 이러한 센서들은 대량의 데이터를 다차원으로 생성한다. 샘플은, 가속 장치들이 효율적으로 처리할 수 있도록 메모리에 순차적으로 저장하는 것이 이상적이다. 그러나 때론 샘플을 하나 이상의 차원으로 처리해야 할 필요가 있다.
처리 단계들 중간중간에 샘플들의 순서를 재구성(re-order)하는 것이 하나의 해결 방법이다. 그러나 이 경우 연산 과부화와 메모리 요건이 늘어난다.
또 다른 해결 방법은, 메모리가 직교 차원들(orthogonal dimensions)로 읽혀질 수 있도록 하는 메모리를 사용하는 것이다. WO 2009/003115 A1에 이러한 메모리의 일 예가 기재되어 있다.
본 발명은, 고정된 크기의 데이터 워드들(이하, "샘플들")의 전달을 처리하기 위한 메모리 액세스 유닛을 제공하고자 한다.
본 발명의 제1 측면에 따르면, d-차원 어레이 내 샘플들의, m개의 데이터 버스 중 하나와 k*m개의 메모리 간의 전송을 처리하기 위한 메모리 액세스 유닛이 제공되는데, 여기서 m≥1 및 k≥2이다. 상기 메모리 액세스 유닛은 k개의 주소 계산기와 k개의 샘플 수집기를 포함한다. 각각의 주소 계산기는, 버스 주소를 수신하고, 각각의 오프셋을 가산하여 샘플에 대한 버스 주소를 생성하고, 주소지정법에 따라 상기 샘플 버스 주소로부터, 각각의 샘플에 액세스하기 위한 각각의 주소를 상기 각각의 d 차원을 따라 생성하도록 구성된다. 각각의 샘플 수집기는, 상기 k*m개의 메모리 중 하나에 대한 메모리 선택을 생성함으로써, 버스 데이터 워드 내 기설정 위치와 상기 k*m개의 메모리 중 상기 하나의 메모리 사이에서 상기 샘플을 전송하도록 작동 가능하다. 각각의 샘플 수집기는, 상기 k*m개의 메모리 중에서 각자 다른 하나를 선택하도록 상기 각각의 d 차원 내 주소에 따라 각각의 메모리 선택을 계산함으로써, 각각의 샘플 수집기가 상기 k*m개의 메모리 중에서 k개에 동시에 액세스하도록 구성된다. 단일 버스에서, = 1, 및 k*m = k이다. 각각의 샘플 수집기는 상기 k*m개의 메모리 중 상기 하나와의 사이에서 각각의 샘플을 전송하도록 작동 가능하다.
따라서, 샘플들은 차원의 순서대로 샘플들의 순서를 재구성할 필요 없이 어느 차원에 대해서도 샘플 액세스(Read 또는 Write)가 가능하다.
샘플 데이터 폭과 샘플 저장부 데이터 폭은 동일할 수 있다. 샘플 데이터 폭은 샘플 저장부 데이터 폭의 정수배(가령 2배)일 수 있다. 샘플 데이터 폭은 가령, 32 비트로 구성된 4 바이트, 또는 64 비트로 구성된 8 바이트로 설정되어 있거나 설정 가능하다. 저장부 데이터 폭은 가령, 32 비트로 구성된 4 바이트로 설정될 수 있다. 그러나, 다른 저장부 데이터 폭도 사용 가능하다. 데이터 버스 폭은 128 비트로 구성된 16 바이트, 또는 256 비트로 구성된 32 바이트일 수 있다.
상기 메모리 액세스 유닛은 상기 각각의 d 차원 내 샘플들의 개수 및/또는 샘플 데이터 폭을 변경 가능한 방식으로 설정하기 위한 한 세트의 레지스터들을 더 포함할 수 있다.
상기 차원에 있어서 숫자 d는, 2 또는 3로 설정되어 있거나 설정 가능하다.
각각의 샘플 수집기는, 상기 각각의 d 차원 내 주소들의 합계에 따라 상기 메모리 선택을 계산하도록 구성될 수 있다.
각각의 샘플 수집기는, 아래 등식을 사용해 메모리 선택(CS)을 계산하도록 구성될 수 있다:
CS = [(A_1 + A_2 + ... A_d)] % k
각각의 주소 계산기는 인덱스를 생성하도록 구성될 수 있다. 이는, 샘플 데이터 폭이 샘플 저장부 데이터 폭보다 클 때 사용 가능하다.
각각의 샘플 수집기는 아래 등식을 사용해 메모리 선택(CS)을 계산하도록 구성될 수 있다:
CS = [I_S + (w_s/w_m) * (A_1 + A_2 + ... + A_d)] % k
여기서, w_s는 샘플 데이터 폭이고 w_m은 메모리 데이터 폭이다.
각각의 주소 계산기는, 각각의 차원 내의, 선형-증가하는 워드 주소, 샘플 크기 및 샘플들의 개수에 따라 상기 각각의 주소들을 계산하도록 구성될 수 있다.
각각의 주소 계산기는 버스 주소를 수신하고 각각의 오프셋을 바탕으로 상기 버스 주소를 조정하도록 구성될 수 있다. 따라서, 상기 주소 계산기들은 각각의 해당 주소 세트들을 생성함으로써, 다른 메모리 선택들을 생성할 수 있다.
상기 메모리 액세스 유닛은 상기 주소 계산기들과 샘플 수집기들과 결합된 버스 인터페이스를 더 포함할 수 있다. 상기 버스 인터페이스는 버스 주소를 상기 각각의 주소 계산기로 전달하도록 구성될 수 있다.
상기 메모리 액세스 유닛은 하드웨어 로직으로 실행하는 것이 바람직하다.
상기 메모리 액세스 유닛은, d 차원 어레이 내 샘플들의, 데이터 버스와 k*m개의 메모리 사이에서의 전송을 처리하는데 적합할 수 있는데, 여기서 k*m개의 메모리는 m개의 데이터 버스에 의해 공유된다.
본 발명의 제2 측면에 따르면, 적어도 하나의 메모리 액세스 유닛을 포함하는 메모리 콘트롤러가 제공된다.
상기 메모리 콘트롤러는 적어도 2개의 메모리 액세스 유닛을 포함할 수 있다. 상기 적어도 2개의 메모리 액세스 유닛은 하나의 공통된(또는 "글로벌") 세트의 레지스터들에 액세스할 수 있다.
상기 메모리 콘트롤러는, d 차원 어레이 내 샘플들의, m개의 데이터 버스와 k*m개의 메모리 사이에서의 전송을 처리하기 위한, m개의 메모리 액세스 유닛을 포함할 수 있다.
본 발명의 제3 측면에 따르면, 메모리 콘트롤러와 k*m개의 메모리를 포함하는 메모리 시스템이 제공되는데, 각각의 k*m 메모리 세트는 상기 m개의 메모리 액세스 유닛에 작동 가능한 방식으로 연결된다.
데이터 버스는 하나뿐일 수 있다. 즉, m = 1. 데이터 버스가 하나 이상일 수 있다. 즉 m≥2. 데이터 버스가 2개 내지 10개, 또는 그 이상일 수 있다. 즉, 10 ≥ m ≥ 2 또는 m > 10.
본 발명의 제4 측면에 따르면, 메모리 액세스 유닛 또는 메모리 콘트롤러를 포함하는 집적 회로가 제공된다.
상기 집적 회로는 마이크로 콘트롤러일 수 있다. 상기 집적 회로는 주문형 반도체 ASIC (application specific integrated circuit)일 수 있다. 상기 집적 회로는 시스템 온 칩(system on a chip, SoC)일 수 있다. 상기 집적 회로는 하드웨어 가속 장치일 수 있다. 상기 집적 회로는 그래픽 프로세싱 유닛(graphical processing unit, GPU)일 수 있다. 상기 집적 회로는 디지털 신호 프로세서(digital signal processor, DSP)일 수 있다.
본 발명의 제5 측면에 따르면, 메모리 액세스 유닛 또는 메모리 콘트롤러를 포함하는 컴퓨팅 장치를 포함하는 모터 차량이 제공된다.
상기 모터 차량은 오토바이, 자동차(종종 "차"라고도 함), 미니버스, 버스, 트럭 또는 로리(lorry)일 수 있다. 상기 모터 차량은 내연 기관 및/또는 하나 이상의 전기 모터로 구동될 수 있다.
본 발명의 제6 측면에 따르면, d-차원 어레이 내 샘플들의, m개의 데이터 버스 중 하나와 k*m개의 메모리 간의 전송 방법이 제공된다. 상기 방법은 k개의 샘플 각각에 대하여, 버스 주소를 수신하고, 각각의 오프셋을 가산하여 샘플의 버스 주소를 생성하는 단계; 상기 차원들 중 하나를 따라 샘플들에 액세스하기 위한, 상기 각각의 d 차원 내 주소를, 상기 샘플 버스 주소로부터 주소지정법에 따라 생성하는 단계; 및 상기 k*m개의 메모리 중 하나에 대한 메모리 선택을 생성함으로써, 버스 데이터 워드 내 기설정 위치와 상기 k*m개의 메모리 중 상기 하나의 메모리 사이에서 상기 샘플을 전송하는 단계를 포함하고, 상기 메모리 선택 생성 단계는 상기 d 차원 내 주소들 각각에 따라 메모리 선택을 계산함으로써, 상기 k*m개의 메모리 중 k개 메모리에(또는 k개 메모리로부터), k개의 샘플이 동시에 Write 또는 Read 되도록 하는 것을 포함한다.
상기 방법은 유닛(또는 모듈)에 의해 수행됨으로써 상기 유닛 및 그 외 유닛들이 상기 k*m개의 메모리에 동시에 액세스하도록 할 수 있다.
상기 방법은 하드웨어-실행 방법인 것이 바람직하다. 상기 유닛(또는 모듈)은 로직 유닛(또는 "로직 모듈")일 수 있다.
본 발명의 제7 측면에 따르면, 하나 이상의 프로세서로 실행 시, 상기 하나 이상의 프로세서가 상기 방법을 수행하도록 하는 명령어를 포함하는 컴퓨터 프로그램이 제공된다.
본 발명의 제8 측면에 따르면, 상기 컴퓨터 프로그램을 운반(carry) 또는 저장하는 컴퓨터 독출 가능 매체(비일시적일 수 있음)가 제공된다.
본 발명의 실시예들에 따르면, 고정된 크기의 데이터 워드들의 전달을 처리할 수 있게 된다.
이하, 첨부된 도면을 참조로 본 발명의 특정 실시 예들을 설명한다.
도 1은 본 발명을 이해하는데 유용한, 메모리를 포함하는 메모리 시스템의 개략적인 블록도이다;
도 2는 도 1에 도시된 메모리에 저장할 수 있는 샘플들의 간단한 2차원 어레이를 도시한 것이다;
도 3은 도 2에 도시된 샘플들이 선형 증가하는 주소들에 어떻게 저장되는지 도시한 것이다;
도 4는 데이터 버스의 전폭(full width)을 사용하여 샘플들이 1차원을 따라 어떻게 액세스될 수 있는지 도시한 것이다;
도 5는 데이터 버스의 전폭을 사용하지 않는 2차원을 따라 샘플들이 어떻게 액세스될 수 있는지 도시한 것이다;
도 6은 본 발명에 따른, 메모리와 메모리 액세스 유닛을 포함하는 메모리 시스템의 개략적인 블록도이다;
도 6a는 구성 레지스터들을 도시한 것이다;
도 7은 도 6에 도시된 메모리에 저장할 수 있는 샘플들의 간단한 2차원 어레이를 도시한 것이다;
도 8은 도 6에 도시된 메모리 액세스 유닛을 사용하여, 데이터 버스의 전폭을 사용하여 1차원을 따라 샘플들이 어떻게 액세스될 수 있는 도시한 것이다;
도 9는 도 6에 도시된 메모리 액세스 유닛을 사용하여, 데이터 버스의 전폭을 사용하여 2차원을 따라 샘플들이 어떻게 액세스될 수 있는 도시한 것이다;
도 10은 도 6에 도시된 메모리 액세스 유닛에 의해 수행된 방법의 프로세스 흐름도이다;
도 11은 샘플들의 3차원 어레이를 도시한 것이다;
도 12는 레이더 샘플 처리 파이프라인(pipeline)의 개략적인 블록도이다;
도 13a는 구성 레지스터를 위한 제1 파라미터 세트, 및 샘플 데이터 폭이 메모리 데이터 폭과 동일한, 메모리 시스템 내 제1 주소 세트 및 칩 선택들을 도시한 것이다;
도 13b는 제1, 제2, 제3 및 제4 샘플 저장부의 컨텐츠를 도시한 것이다;
도 13c, 도 13d 및 도 13e는 제1, 제2, 제3 및 제4 샘플 수집기가, 도 13b에 도시된 제1, 제2, 제3 및 제4 샘플 저장부에 액세스할 때의 동작을 도시한 것이다;
도 14a는 구성 레지스터를 위한 제2 파라미터 세트, 및 샘플 데이터 폭이 메모리 데이터 폭의 2배인, 메모리 시스템 내 제2 주소 세트 및 칩 선택들을 도시한 것이다;
도 14b는 제1, 제2, 제3 및 제4 샘플 저장부의 컨텐츠를 도시한 것이다;
도 14c, 도 14d 및 도 14e는 제1, 제2, 제3 및 제4 샘플 수집기가, 도 14b에 도시된 제1, 제2, 제3 및 제4 샘플 저장부에 액세스할 때의 동작을 도시한 것이다;
도 15는 버스 주소를 도시한 것이다;
도 16은 샘플 폭이 메모리 데이터 폭과 동일한 경우, 범위 주소 맵을 위한 차원 주소들을 도시한 것이다;
도 17은 샘플 데이터 폭이 메모리 데이터 폭의 2배인 경우, 범위 주소 맵을 위한 차원 주소들을 도시한 것이다;
도 18은 샘플 데이터 폭이 메모리 데이터 폭과 동일한 경우, 펄스 주소 맵을 위한 차원 주소들을 도시한 것이다;
도 19는 샘플 데이터 폭이 메모리 데이터 폭의 2배인 경우, 펄스 주소 맵을 위한 차원 주소들을 도시한 것이다;
도 20은 샘플 데이터 폭이 메모리 데이터 폭과 동일한 경우, 채널 주소 맵을 위한 차원 주소들을 도시한 것이다;
도 21은 샘플 데이터 폭이 메모리 데이터 폭의 2배인 경우, 채널 주소 맵을 위한 차원 주소들을 도시한 것이다;
도 22는 본 발명에 따른, 메모리 및 메모리 액세스 유닛 어레이를 포함하는 메모리 시스템의 개략적인 블록도이다;
도 22a는 구성 레지스터를 도시한 것이다;
도 23는 주소 계산기의 개략적인 블록도이다;
도 24는 샘플 수집기의 개략적인 블록도이다;
도 25는 샘플 저장 모듈의 개략적인 블록도이다;
도 26은 버스 인터페이스의 개략적인 블록도이다;
도 27은 버스 타이밍 차트(timing chart)이다;
도 28은 메모리 시스템을 포함하는 자동차를 도시한 것이다.
이하 설명에서, 모든 상수, 변수 및 레지스터는 달리 명시되지 않은 한, 정수의 형태를 갖는다.
메모리 시스템(1)
도 1은 본 발명을 이해하는데 유용한 메모리 시스템(1)의 개략적인 블록도이다.
도 1을 참조하면, 메모리 시스템(1)은 n개의 랜덤 액세스 메모리(RAM) 모듈 (21, ..., 2n)(여기서, n은 1보다 큰 정수)로 구성된 어레이 형태의 메모리(2)를 포함한다. 메모리 모듈(21, ..., 2n)은 메모리 매크로(memory macros)의 형태일 수 있다. 메모리 시스템(1)은 또한, 주소 버스(6)와 데이터 버스(7)로 구성된 버스(5)와, 메모리(2)를 상호 연결하는 버스 배선(bus wiring, 3); 및 메모리 액세스 회로(memory access circuit, 4)를 포함한다.
메모리 액세스 회로(4)는 주소 계산기(8)("주소 복호기"라고도 함), 데이터 멀티플렉서(9) 및 버스 인터페이스(10)를 포함한다.
각각의 메모리 모듈(21, ..., 2n)은 메모리 데이터 폭(w_m)을 갖는다. 본 실시예에서는, 메모리 데이터 폭(w_m)이 128 비트이다. 본 예에서는, 데이터 버스(7)의 폭은 128 비트이다.
주소 계산기(8)는 칩 선택 신호(Chip Select signal : CS)를 사용하여 RAM 모듈(21, ..., 2n) 중에서 하나의 RAM 모듈(21, ..., 2n)을 선택하고, 칩 선택 및 메모리 주소 버스(11)를 통한 메모리 주소(A_M)를 사용하여, 액세스할 메모리(2) 부분을 명시한다. 주소 계산기(8)는, 버스 인터페이스(10)를 통해 주소 버스(6) 상에 수신된 버스 주소(A_B)를 사용하여, 칩 선택(CS)과 메모리 주소(A_M)를 계산한다.
Write(쓰기) 전송의 경우, 버스 데이터(D_B)는 메모리 데이터 버스(121, ..., 12k) 상에 놓인다. 해당 주소(A_M)에서 칩 선택(CS)을 사용하여 RAM 모듈(21, ..., 2n) 중 하나를 선택한 후, 데이터가 저장된다. 버스 인터페이스는 버스 데이터(D_B)의 일부 저장만 요청할 수 있다.
Read(읽기) 전송의 경우, 선택된 RAM 모듈(21, ..., 2n)은 메모리 데이터(D_M)를 버스 인터페이스(10)로 전송할 수 있다. 버스 인터페이스(10)는 메모리 데이터(D_M)의 일부 전달만을 요청할 수 있다.
도 2 내지 도 5를 참조하면, 데이터는 고정된 크기 단위(13)(여기서는 "워드들" 또는 "샘플들"이라고 함)로 전송된다. 각각의 메모리(21, ..., 2n)는 샘플 크기의 정수배인 폭(w_m)을 갖는다. 이 경우, 폭(w_m)은 128 비트이고, 각각의 샘플(13)은 길이가 4 바이트(byte)로 32 비트를 포함한다. 따라서, 버스의 전폭(full width)를 사용하고자 할 경우, 샘플들(13)은 메모리를 따라 인접한 위치에 저장(또는 Write)되어야 한다.
도 2는 x 및 y 차원을 갖는 2차원 어레이에 배열된 4 × 4 샘플들(13)을 포함하는 간단한 2차원 사진(또는 "이미지")(14)을 도시한 것이다.
도 3은 선형 증가하는 주소들(A-M)에서, 각각 0 및 1과 동일한 칩 선택으로 주소지정이 가능한 메모리(2), 즉 제1 및 제2 메모리 모듈(21, 22)(도 2)에 사진(14)(도 2)이 어떻게 저장될 수 있는지를 도시한 것이다.
사진(14)(도 2)은 양차원으로 처리가 가능하다. 즉, x 차원 혹은 y 차원에 따른 처리가 가능하다. 본 예에서, 샘플들(13)은, 주기(cycle)당 4개의 샘플(13)을 운반할 수 있는 데이터 버스(7)(도 1)로 전송될 수 있다.
도 4와 도 5는 각각 x 차원과 y 차원에 따라 샘플들(13)에 액세스함으로써 데이터가 전송될 때의 버스 전송 성능을 도시한다.
도 4에 도시된 바와 같이, x 차원을 따라 사진(14)에 액세스함으로써 샘플들(13)이 Read 되면, 데이터 버스(7)의 전폭이 활용될 수 있다. 그러나, 도 5에 도시된 바와 같이, y 차원을 따라 사진(14)에 액세스함으로써 샘플들(13)이 Read 되면, 한 번, 즉, 한 주기(cycle)당 하나의 샘플(13)만 전송될 수 있다.
따라서, 샘플들(13)이 y 차원을 따라 Read 되면, 성능은 4배 저하된다.
데이터 전송이 버스트(burst)로 이루어지면, 성능은 더더욱 저하될 수 있다. 버스 시스템들은 긴 지연 속도(latency)를 가질 수 있다. 액세스 요청이 이루어지면, 데이터가 전송될 때까지 몇 주기를 기다려야 할 수 있다. 따라서, 현대의 버스 시스템들은 각각의 요청에 대해, 다수의 데이터 워드들을 순차적으로 전송한다(이것을 "버스트"라고 함). 그러나, 버스트가 발생하려면, 각각의 데이터 워드의 주소가 건너뜀(jump) 없이 선형 증가해야 한다. 따라서, y 방향으로 샘플들을 전송하는데는 이를 사용할 수 없기에, 성능은 더더욱 저하된다.
하나의 버스 워드에 하나 이상의 샘플이 전송되면, 샘플 순서가 저장 순서와 부합하지 않는 한 버스의 전폭을 사용할 수 없다. 그러나, 가령 이미지 처리나 레이더 애플리케이션, 및 다차원 고속푸리에변환(Fast Fourier transform, FFT) 처리 등에서처럼 다차원 데이터 액세스 또는 전위(transpositions)가 발생하는 애플리케이션에서는, 하나 이상의 차원을 따라 샘플들을 Read 해야 하는 경우가 종종 있다. 레이더 등 일부 애플리케이션은 자동차 애플리케이션이다. 본 발명에 따르면, 메모리 액세스 유닛 및 메모리 액세스 방법은 샘플의 순서를 재구성할 필요 없이 및/또는 버스 활용도 향상에 도움이 되도록, 샘플들이 다른 차원을 따라 Read 되도록 할 수 있다.
메모리 시스템(21)
도 6은 본 발명에 따른, 재구성 가능한, 다차원적으로 액세스 가능한 메모리 시스템(21)의 개략적인 블록도이다.
도 6를 참조하면, 메모리 시스템(21)은 k개의 샘플 저장 모듈(221, ..., 22k)(여기서, k은 1보다 큰 정수)로 구성된 어레이 형태의 메모리(22)를 포함한다. 각각의 샘플 저장 모듈(221, ..., 22k)은 RAM 매크로나 다른 RAM 모듈의 형태이다. 메모리 시스템(21)은 주소 버스(26)와 데이터 버스(27)로 구성된 버스(25), 및 메모리(22)를 상호 연결하는 버스 배선(bus wiring, 23); 및 메모리 액세스 유닛(24)을 포함한다.
메모리 액세스 유닛(24)은 k개의 주소 계산기 모듈(281, ..., 28k)로 구성된 어레이, k개의 샘플 수집기 모듈(291, ..., 29k)로 구성된 어레이, 공통 버스 인터페이스(30), 및 한 세트의 구성 레지스터들(31)을 포함한다.
각각의 메모리 모듈(221, ..., 22n)은 메모리 데이터 폭(w_m)을 갖는다. 메모리 데이터 폭(w_m)과 최소 샘플 폭은 동일하다. 본 예에서, 데이터 버스(27)의 폭은 128 비트이다. 그러나, 데이터 버스(27)의 폭은 이보다 더 좁을 수도 있고, 가령, 256 비트 등, 더 넓을 수도 있다.
또한 도 6a를 참조하면, 구성 레지스터들(31)은, 각각의 차원(i)에 저장할 수 있는 샘플의 개수(S_i)를 명시하는 한 세트의 레지스터들(311, 312, ..., 31d)(여기서, d는 1 보다 큰 양의 정수)을 포함하는데, 여기서 i={1, 2, ..., d}이고, 레지스터(31s)는 샘플 데이터 폭(w_s)을 명시한다. 메모리 데이터 폭(w_m)은, 샘플 데이터 폭(w_s)과 동일하거나 그 정수배이다. 구성 레지스터들(31)은 메모리 시스템(21)이 사용되기 전에 사용자에 의해 설정된다.
다시 도 6을 참조하면, 주소 계산기 모듈(281, ..., 28k)은 버스 주소(A_B)를 수신하고, 버스 데이터 워드 내 샘플의 위치(Nr)에 대응되는 해당 오프셋(offset)을 추가하여 해당 샘플에 대한 버스 주소(A_B')을 획득하고, 주소 복호법(address decoding scheme)에 따라 샘플 버스 주소(A_B')를 한 세트의 샘플 주소들(A_1 ..., A_d) 및 샘플 인덱스(I_S)로 변환한다. 하나의 샘플에 대한 버스 주소(A_B')는 아래 식을 사용해 계산한다:
A_B' = A_B + (Nr-1)*w_m (1)
여기서, Nr = 1, 2, ..., k, 및 메모리 데이터 폭(w_m).
이하, 레이더 신호 처리에서 3차원 액세스를 위한 주소 복호법의 일 예를 설명한다. 그러나, 이 외에도, 어떤 적합한 주소 복호법이라도 사용 가능하다. 차원 주소(A_L)는 액세스 차원에 따른 선형 주소이다.
도 7은 x 및 y 차원을 갖는 2차원 어레이에 배열된 4 × 4 샘플들(34)을 포함하는 간단한 2차원 사진(또는 "이미지", 33)을 개략적으로 도시한 것이다.
도 7 및 도 8을 참조하면, i번째 샘플 수집기(29i)(여기서 i = {1, 2, ..., k})는 버스 데이터 워드 내 고정된 비트 위치[w_m*8*i-1:w_m*8*(i-1)]에서 샘플(34)을 수집하는 역할을 담당한다.
샘플 수집기(291, ..., 29k)는 요청한 샘플(33)이 저장되어 있거나 저장될 샘플 저장부(221, ..., 22k)를 식별하고, 식별된 샘플 저장부(221, ..., 22k)를, 선택 신호(CS)를 사용하여 선택하고, 주소(A_M)에서 샘플(34)의 전송(Read 또는 Write)을 요청하고, 버스 데이터 워드(D_B) 내 할당된 위치에서 샘플(34)을 채우거나 인출(retrieve) 한다.
전용 샘플 수집기(291, ..., 29k)는 버스 데이터 워드(D_B) 내 각각의 샘플(34)을 위해 존재한다. 이하 더 자세히 설명하겠지만, 샘플 수집기(291, ..., 29k)는 칩 선택 배열(chip select arrangement)를 사용하여 메모리 액세스를 평행하게 수행함으로써, 샘플 저장부(221, ..., 22k)에 액세스 충돌이 발생하지 않도록 한다. 따라서, 대기 상태 없이 버스 데이터 전폭이 활용 가능하다.
도 8과 도 9는 x 및 y 차원 각각을 따라 샘플들(34)에 액세스함으로써 데이터가 전송될 때의 버스 전송 성능을 도시한다.
도 8에 도시된 바와 같이, x 차원을 따라 사진(33)에 액세스함으로써 샘플들(34)이 Read 되면, 데이터 버스(27)의 전폭(이 경우, 128 비트)이 활용 가능하다.
또한, 도 9에 도시된 바와 같이, y 차원을 따라 사진(33)에 액세스함으로써 샘플들(34)이 Read 되면, 데이터 버스(27)의 전폭이 사용 가능하다.
x 및 y 차원에 따른 액세스는 버스 전폭, 이 경우, 버스 데이터 워드 당 4 개의 샘플을 활용할 수 있다. 또한, A_L이 건너뜀(jump) 없이 선형 증가하기 때문에 버스트(burst)가 가능하다. 이는 성능을 더욱더 향상시킬 수 있다. 가령, 만약 버스(25)가, 10개의 파이프라인 단계를 갖는 고급형 확장 가능 인터페이스(Advanced eXtensible Interface : AXI)라면, 단일 액세스는 워드 당 10번의 주기가 필요하다. 16-비이트(beat) 버스트(burst)를 위해서는, 최초 워드를 위한 10번의 주기와 나머지 워드들을 위한 15번의 주기가 필요하다. 평균적으로, 하나의 워드는 워드 당 25/16 = 1.6 주기가 필요하다. 이는 추가적인 6배속에 의한 속도 증가이다.
따라서, 샘플들의 순서가 메모리 주소에 따라 설정되는 도 1에 도시된 메모리 시스템(1)과 비교해, 메모리 시스템(21)은 24배 빠른 비율로 y 차원을 따라 데이터를 전송할 수 있다.
다시 도 6과 도 10을 참조로, 액세스 요청이 수신되면(단계 S1), 주소 계산기 모듈(281, ..., 28k)은 버스 주소(A_B)를 다차원 데이터 어레이 내 표현(representation)으로 변환한다(단계 S2).
각각의 샘플(34)은 어레이 내에서 자신의 차원 주소(A_1, A_2, ..., A_d)와 샘플 인덱스(I_S)로 주소가 지정된다. 샘플 인덱스(I_S)는, 샘플 폭(w_s)이 샘플 저장 폭(w_m)보다 큰 경우 사용된다.
버스 데이터 워드(D_B)가 하나 이상의 샘플을 포함하기 때문에, 버스 액세스 필드는 어떤 차원을 따라 액세스가 요청되는지 나타낸다. 가능한 버스 주소 계산법이 몇 가지 있는데, 이들은 부호화 액세스 방향, 선형 주소(A_L) 및 인덱스를 식별한다.
버스 데이터 워드(D_B)가 하나 이상의 샘플을 포함하기 때문에, 버스 액세스 필드는 어떤 차원을 따라 액세스가 요청되는지 나타낸다. 가능한 버스 주소 계산법이 몇 가지 있는데, 이들은 부호화 액세스 방향, 선형 주소(A_L) 및 인덱스를 식별한다.
각각의 샘플 수집기(291, ..., 29k)는 아래의 등식 2 내지 5를 사용하여 연산을 수행한다 (단계 S3 내지 S6):
-샘플 주소(A_S)를 연산하기 위한 등식:
A_S = (A_d* (S_d-1*S_d-2*...*S_1) +
A_d-1* (S_d-2*S_d-3*...*S_1) +
... +
A_1) * (w_s/w_m) (2)
-물리적 워드 주소(A_P)를 연산하기 위한 등식:
A_P = A_S + I_S (3)
-선택된 메모리(CS)를 연산하기 위한 등식:
CS = [I_S + (w_s/w_m) * (A_1 + A_2 + ... + A_d)] % k (4)
-메모리 내 주소(A_M)를 연산하기 위한 등식:
A_M = A_P / k (5)
여기서, + 는 덧셈, - 은 뺄셈, /은 정수 나눗셈 (소수는 버림), %는 정수 나눗셈의 나머지(예: 모듈로(modulo))이고, * 은 정수 곱셈이다.
각각의 샘플 수집기(291, ..., 29k)는 해당 샘플 저장부(221, ..., 22k)에 액세스한다 (단계 S7). 버스 인터페이스는 전송 요청에 응답한다 (단계 S8).
선택된 메모리(CS)는 모든 차원에서 인접하는 샘플들에 따라 다르다. j(j = {1, ..., k}) 차원을 따라 액세스가 발생하면, 샘플 주소(A_j)만이 등식 4에서 변경된다. 다른 샘플 주소들(A_i) (i = {1, ..., k}, i<>j)은 일정하게 유지된다. 그러나, 변경되는 항과 관련해서는, 액세스된 차원에서 인접하는 주소들에 따라 항이 다르다. 따라서, 샘플 저장부들에 대한 평행 액세스가 가능하다.
그러나, 이러한 배열에도 예외가 있다. 즉, 트랜잭션(transaction)이 액세스 차원 경계를 넘을 때이다. 이런 경우, 선택된 메모리(CS)에서는 하나 이상의 항이 변경된다. 선택된 크기에 따라, 대기 상태가 필요할 수 있다. 각각의 차원 크기(S_1, S_2, ..., S_d)가 w_m*k/w_s의 배수이면, 대기 상태가 발생하지 않는다. 다수의 버스 인터페이스를 가지며 대기 상태를 사용하는 메모리 액세스 시스템에 대해서는 아래에서 설명하기로 한다.
메모리 시스템(21)을 레이더 애플리케이션에 적용하는 경우
도 11을 참조하면, 레이더 애플리케이션에서는, 안테나 벡터(미도시)로부터의 다수의 시간 응답들이 메모리에 저장되어, 결과적으로 샘플들(36)의 3차원 어레이(35)(여기서는 "데이터 큐브" 또는 간단히 "큐브"라고도 함)를 형성한다. 이 어레이(35)는 가령, 범위 차원(range dimension)을 따라 512개의 샘플, 도플러 차원(Doppler dimension)을 따라 64개의 샘플, 그리고 채널 차원(channel dimension)을 따라 8개의 샘플을 가질 수 있다.
레이더 및 그 외 애플리케이션에서는, 차원을 변경하려면 메모리에서 샘플들의 순서를 재구성해야 한다("코너 턴(corner turns)"을 수행한다고도 함). 코너 턴은 많은 처리 시간이 소요될 수 있다.
도 12를 참조하면, 샘플들(36)이 저장되는 파이프라인을 사용하여, 메모리(22)에서 레이더 펄스 처리 시스템(41)을 데이터 큐브(35)(도 11)로서 실행할 수 있다. 샘플들(36)은 펄스 압축 블록(50)으로 공급되고, 출력 값(output)은 메모리(22)에 저장된다. 그런 다음, 샘플들(36)은 Read 되어 도플러 필터링 블록(Doppler filtering block, 51)으로 공급되고, 출력 값은 메모리(22)에 저장된다. 샘플들은 Read 되어, 이전 데이터 큐브로부터 수신한 가중치와 함께 시공간 적응적 처리 섹션(52)으로 공급되는데, 이 시공간 적응적 처리 섹션(52)은 빔포밍 블록(53), 및 다음 큐브를 위해 저장할 가중치를 생성하는 적응적 가중치 연산 블록(adaptive weight computation block, 54)를 포함하고, 이렇게 공급된 샘플들은 저장된다. 변환된 샘플들(36)은 Read 되어 일정한 오경보율(constant false alarm rate, CFAR) 탐지 블록으로 공급되고, 여기서 검출 결과(56)가 출력된다.
다차원 메모리 시스템(21)은, 주어진 차원에서의 버스 응답에 맞는 샘플들(35)의 연결(concatenation)을 저장한 후 Read 하는데 사용될 수 있다. 따라서, 데이터 재구성를 피할 수 있다.
주소 계산 및 샘플 저장부 선택을 보여주는 간단한 예들
도 13a를 참조하면, 간단한 예에 대한, 구성 레지스터를 위한 한 세트의 파라미터들(61) 및 주소의 글로벌 할당(global assignment of address) 및 칩 선택들(62)이 도시되어 있는데, 여기서 샘플 데이터 폭(w_s)은 메모리 데이터 폭(w_m)과 동일하다.
버스 워드 당 최대 샘플 수는 4개이고, 차원의 총 개수(d)는 3, 메모리 데이터 폭(w_m)은 4 바이트, 샘플 데이터 폭(w_s)은 4 바이트이다. 제1, 제2 및 제3 차원(S_1, S_2, S_3)에는, 각각 4개, 5개 및 2개의 샘플들이 있다.
도 13a에 도시된 바와 같이, 차원 주소(A_1, A_2, A_3), 샘플 주소(A_S), 샘플 인덱스(I_S), 물리적 워드 주소(A_P), 샘플 저장부 선택(CS), 및 메모리 내 주소(A_M)의 값들이 일람표를 구성한다.
도 13b를 참조하면, 제1, 제2, 제3 및 제4 샘플 저장부(221, 222, 223, 224)의 컨텐츠가 도시되어 있다. 어레이(35) 내 샘플 주소들은 둥근 괄호 안에 표시되어 있고, 샘플 인덱스들은 사각 괄호 안에 표시되어 있다.
도 13c, 도 13d 및 도 13e는, 3개 차원 중 각각을 따라 샘플 저장부(221, 222, 223, 224)에 액세스할 때의 샘플 수집기(291, 292, 293, 294)의 동작을 도시한 것이다. 도 13c, 도 13d 및 도 13e는, 각각의 샘플 수집기(291, 292, 293, 294)에 대한 선형 액세스 주소(A_L), 차원 주소(A_1, A_2, A_3), 샘플 인덱스(I_S), 물리적 주소(A_P), 샘플 저장부 선택(CS), 및 메모리 주소(A_M)를 보여준다.
도 13c는 제1 차원을 따라 샘플 저장부(221, 222, 223, 224)에 액세스하는 경우, 즉, 범위 샘플들을 도시하고 있다. 이 경우, 한 번에 하나씩만 차원 주소가 변하기 때문에 대기 상태가 필요하지 않다.
도 13d는 제2 차원을 따라 샘플 저장부(221, 222, 223, 224)에 액세스하는 경우, 즉, 펄스 샘플들을 도시한 것이다. 이 경우, 한 번에 하나 이상의 차원 주소가 변하긴 하지만, CS 충돌이 없기 때문에, 대기 상태가 필요하지 않다.
도 13e는 제3 차원을 따라 샘플 저장부(221, 222, 223, 224)에 액세스하는 경우, 즉, 채널 샘플들을 도시하고 있다. 이 경우, 대기 상태가 필요하다.
도 14a를 참조하면, 간단한 예에 대한, 구성 레지스터에 대한 한 세트의 파라미터들(61) 및 주소의 글로벌 할당(global assignment of address) 및 칩 선택(62)이 도시되어 있는데, 여기서 샘플 데이터 폭(w_s)은 메모리 데이터 폭(w_m)의 두 배이다.
도 14b는 제1, 제2, 제3 및 제4 샘플 저장부(221, 222, 223, 224)의 컨텐츠를 보여주는 것이고, 도 14c, 도 14d 및 도 14e는, 3개 차원 중 각각을 따라 샘플 저장부(221, 222, 223, 224)에 액세스할 때의 샘플 수집기(291, 292, 293, 294)의 동작을 도시한 것이다.
레이더 장치들을 위한 버스 주소 복호법
다시 도 6을 참조하면, 주소 계산기(291, ..., 28k)는 주소 복호법을 사용하여 버스 주소(A_B)로부터 차원 주소(A_1, ..., A_d)를 생성한다.
이하, 도 15를 참조하여 주소 복호법을 설명한다.
도 15는 베이스 필드(64), 차원 액세스 모드(DIM) 필드(65), 및 선형 주소(A_L, 66)를 포함하는 버스 주소(A_B', 63)(즉, 주어진 샘플에 대한 위치 조정 이후의 버스 주소(A_B))를 보여주고 있다. 고정 파라미터들로서, 메모리 데이터 폭(w_m)은 4 바이트이고 차원의 개수는 3이다.
범위 주소지정 모드 (Range addressing mode)
범위 주소지정 모드는 DIM을 0, 즉 2b00에 설정함으로써 선택할 수 있다. 제1, 제2 및 제3 차원 주소(A_1, A_2 및 A3)는 아래와 같이 계산된다:
A_1 = (A_L/(w_s))%S_1 (6-R-1)
A_2 = (A_L/(S_1*w_s))%S_2 (6-R-2)
A_3 = (A_L/(S_2*S_1*w_s))%S_3 (6-R-3)
범위 주소지정 모드는 또한 샘플 폭이 메모리 폭과 같도록 설정하고, 즉, w_s = w_m, 차원 크기(S_1, ..., S_d)가 최대 물리적 메모리 크기와 같도록 설정함으로써 전통적인 방식으로 메모리에 액세스하는데 사용될 수 있다.
펄스 주소지정 모드
펄드 주소지정 모드는 DIM을 1, 즉 2b01로 설정함으로써 선택될 수 있다. 제1, 제2 및 제3 차원 주소(A_1, A_2 및 A_3)는 아래와 같이 계산한다:
A_1 = (A_L/(S_2*w_s)%S_1 (6-P-1)
A_2 = (A_L/(w_s))%S_2 (6-P-2)
A_3 = (A_L/(S_2*S_1*w_s))%S_3 (6-P-3)
채널 주소지정 모드
채널 주소지정 모드는 DIM을 2, 즉, 2b10으로 설정함으로써 선택할 수 있다. 제1, 제2 및 제3 차원 주소(A_1, A_2 및 A_3)는 아래와 같이 계산한다:
A_1 = (A_L/(S_3*w_s)%S_1 (6-C-1)
A_2 = (A_L/(S_3*S_1*w_s))%S_2 (6-C-2)
A_3 = (A_L/(w_s))%S_3 (6-C-3)
샘플 인덱스
샘플 인덱스(I_S)는 아래 식을 사용하여 계산한다:
I_S = A_L/w_m % (w_s/w_m) (7)
도 16 내지 도 21은 등식 2, 3, 6-R-1, 6-R-2, 6-R-3, 6-P-1, 6-P-2, 6-P-3, 6-C-1, 6-C-2, 6-C-3 및 7을 사용하여 계산한 차원 주소(A_1, A_2 및 A_3) 및 물리적 주소(A_P)의 예들을 보여주고 있다.
도 16 및 도 17을 참조하면, S_1 = 4, S_2 = 2, S_3 = 3 일 때, 등식 6-R-1, 6-R-2, 6-R-3을 사용하여 계산한 범위 주소 맵에 대한 차원 주소(A_1, A_2 및 A_3)가 도시되어 있다.
도 18 및 도 19를 참조하면, S_1=4, S_2=2, S_3=3일 때, 등식들, 6-P-1, 6-P-2, 6-P-3을 사용하여 계산한 펄스 주소 맵에 대한 차원 주소(A_I, A_2 및 A_3)의 값들이 도시되어 있다.
도 20 및 도 21을 참조하면, S_1=4, S_2=2, S_3=3일 때, 등식들, 6-C-1, 6-C-2, 6-C-3을 사용하여 계산한 채널 주소 맵에 대한 차원 주소(A_I, A_2 및 A_3)의 값들이 도시되어 있다.
메모리 시스템(71)
도 6을 참조하면, 메모리 시스템(21)은 버스가 하나만 있는 인터페이스를 포함한다. 그러나, 샘플 저장부로부터 수신한 준비(RDY) 피드백을 샘플 수집기에 제공함으로써 m개의 버스(여기서, m은 1보다 큰 양의 정수)에 의해 메모리에 액세스 가능하다. 가령, 샘플을 처리하는데 복수의 디지털 신호 프로세서(DSPs)가 필요할 만큼 충분한 샘플들이 메모리에 있을 수 있다. 메모리는 복수의 부분들로 나뉠 수 있고, 각각의 DSP가 메모리 내 각각의 부분을 처리할 수 있다. 각각의 DSP는 메모리에 액세스하기 위한 각각의 버스를 사용한다. 이를 통해, DSP들은 데이터를 평행하게 처리할 수 있다. 가령, 8개의 DSP가 사용됨으로써, 8개의 버스(즉, m = 8)가 필요할 수 있다. 각각의 버스에는 버스 마스터(bus master)(미도시)가 제공된다.
RDY 피드백은 또한 CS 선택에서의 충돌을 처리하는데 사용할 수 있다. 하나 이상의 샘플 수집기가 동일한 샘플 저장부에 액세스하면, 중재부(arbiter)가 충돌을 해결할 수 있다.
m개의 버스 인터페이스를 지원하기 위해, 동일한 개수의 메모리 세그먼트가 존재한다. 최상의 경우, m개의 마스터가 충돌없이 각각의 세그먼트에 액세스할 수 있다.
도 22를 참조하면, 메모리 시스템(71)은 (k*m)개의 샘플 저장부 모듈들(721, ..., 72k*m)(여기서, k는 2보다 큰 정수)로 구성된 어레이 형태의 메모리(72)를 포함한다. 메모리 시스템(71)은 메모리(72)와 m개의 버스(751, ..., 75m)를 상호 연결하는, 버스 배선(73)과 m개의 메모리 액세스 유닛(741, ..., 74m)을 포함하는데, 여기서 각각의 버스(751, ..., 75m)는 주소 버스(76), 데이터 버스(77) 및 RDY 신호(78)로 구성된다.
각각의 메모리 액세스 유닛(741, ..., 74m)는 k개의 계산기 모듈(791, ..., 79k)로 구성된 어레이, k개의 샘플 수집기 모듈(801, ..., 80k)로 구성된 어레이, 및 공통 버스 인터페이스(81)를 포함한다. 메모리 시스템(71)은 한 세트의 구성 레지스터들(82)을 구비한다.
각각의 메모리 모듈(721, ..., 72n)은 메모리 데이터 폭(w_m)을 갖는다. 본 예에서, 메모리 데이터 폭(w_m)은 32 비트이고, 각각의 데이터 버스(77)는 폭이 128 비트이다.
도 22a를 참조하면, 구성 레지스터들(82)은 샘플들(S_i)의 개수를 명시하는 한 세트의 레지스터들(821, 822, ..., 81d)(여기서, d는 1보다 큰 양의 정수), 및 샘플 데이터 폭(w_s)을 명시하는 레지스터(82s)를 포함하는데, 여기서, i는 {1, 2, ..., d}이다. 샘플 데이터 폭(w_s)은 메모리 데이터 폭(w_m)과 동일하거나 그의 정수배이다. 구성 레지스터들(82)은 메모리 시스템(71)이 사용되기 전에 사용자에 의해 설정된다.
도 23을 참조하면, 주소 계산기(281, ...28k, 791, ...,79k)가 더 상세히 도시되어 있다.
주소 계산기(281, ...28k, 791, ...,79k)는 가산부(28a, 79a) 및 주소 계산기 산술 논리 연산부(28b, 79b)를 포함한다.
가산부(28a, 79a)는 상기 등식(1)을 사용하여 버스 데이터 워드에서 샘플의 위치(Nr = 1, 2, ..., k)에 매칭되도록 버스 주소(A_B)를 조정한다.
주소 계산기 산술 논리 연산부(28b, 79b)는 샘플 버스 주소(A_B')를 차원 주소(A_1, ..., A_d)와 샘플 인덱스(I_S)로 변환한다. 다른 주소 복호법도 사용 가능하다.
도 24를 참조하면, 샘플 수집기(291, ..., 29k, 801, ..., 80k)가 더 상세히 도시되어 있다.
샘플 수집기(291, ..., 29k, 801, ..., 80k)는 샘플 계산기 산술 논리 연산부(80a) 및 멀티플렉서(80b)를 포함한다.
m개의 버스 인터페이스로부터의 충돌 없이 평행 액세스들을 지원하기 위해, 샘플 저장부 선택 신호(CS)는 메모리를 m개의 세그먼트들로 분할하는데, 여기서 m은 1보다 큰 양의 정수이다. 각각의 세그먼트는 S_M개의 단어들을 포함한다.
세그먼트 내에서, 샘플 수집기(801, ..., 80k)는 아래 등식을 사용하여 샘플 저장부 선택 신호(CS)(다중 버스)(이하, 간단히 CS라고 함)를 계산한다:
CS(다중 버스) = (A_P / S_M) * K + CS (단일 버스) (4')
여기서, CS(단일)은 상기 등식(4)을 사용하여 계산할 수 있다.
샘플 수집기(801, ..., 80k)는 아래 등식(4')을 사용하여 메모리 내 주소(A_M)를 계산한다:
A_M = (A_P % S_M) /k (5')
D_B는 전송 방향(Read/Write)에 따른 양방향성을 갖는다.
RDY는 다중 마스터들이 존재하고 및/또는 다중 샘플 수집기들이 동일한 RAM 모듈에 액세스하는 경우 버스가 대기해야 한다는 것을 나타낸다.
도 25를 참조하면, 샘플 저장부 모듈(221, ..., 22k *m, 721, ..., 72k *m)이 더 상세히 도시되어 있다.
샘플 저장부 모듈(221, ..., 22k *m, 721, ..., 72k *m)은 RAM 매크로(22a, 72a), 멀티플렉서(22b, 72b), 중재부(22c, 72c) 및 비교기(22d(1), ..., 22d(k*m), 72d(1), ..., 72d(k*m)를 포함한다.
각각의 샘플 저장부(721, ..., 72k *m)는 그 숫자(Nr)에 매칭되는 CS 요청에만 반응하는데, 여기서 Nr = {1, ..., k*m}이다. 중재부(72c)는 가령, 라운드-로빈(round-robin) 등 적합한 방식에 따라, 모든 활성화된 CS 요청들 중에서 하나의 요청을 선택한다. 다른 모든 샘플 수집기(801, ..., 80k)는 RDY 신호를 사용하여 일시 중지된다.
RAM(72a)는 방향(Read 또는 Write)에 따라 데이터 워드 전송을 처리한다.
도 26을 참조하면, 버스 인터페이스(81)가 더 상세히 도시되어 있다.
버스 인터페이스(81)는 연결 블록(concatenate block, 81a)과 k-입력 논리곱(AND) 게이트(81b)를 포함한다.
각각의 샘플 수집기(801, ..., 80k)는 버스 워드 내 고정된 샘플 위치를 처리한다. 버스 인터페이스(81)는 각각의 샘플 수집기(801, ..., 80k)로부터의 데이터(D_M)를 연결하여 아래와 같은 버스 데이터를 출력한다:
D_B = {D_M(k), ..., D_M(1)} (7)
k-입력 논리곱(AND) 게이트(81b)는 샘플 수집기(801, ..., 80k)로부터 RDY(1), ..., RDY(k)를 수신하고, RDY 신호를 출력한다.
도 27을 참조하면, 주소 계산에 있어 타이밍이 중요한 경우(timing-critical), 버스트(burst)-특성이 유지되는 한, 주소 계산들은 파이프라인(pipeline) 처리될 수 있다.
도 27에서는, 버스트 시작 시, 한 주기 동안만 AHB 버스를 중단하여 C_S와 A_M을 산출하는 것을 보여준다.
도 28을 참조하면, 자동차(91)가 도시되어 있다.
자동차(91)는 센서들(미도시)과 하나 이상의 메모리 시스템(21, 71)을 포함하는, 고급형 주행 보조 시스템(advanced driver assistance system(ADAS), 92)을 포함한다.
상술한 실시 예들은 다양한 변경이 가능함을 이해해야 할 것이다.

Claims (15)

  1. d-차원 어레이 내 샘플들의, m개의 데이터 버스(27; 77) 중 하나와 k*m개의 메모리(221, ..., 22k; 721, ..., 72k *m) 간의 전송을 처리하기 위한 메모리 액세스 유닛(24; 741, ..., 74m)으로, m≥1 및 k≥2이고, 상기 메모리 액세스 유닛은,
    k개의 주소 계산기(281, ..., 28k; 791, ..., 79k *m); 및
    k개의 샘플 수집기(291, ..., 29k; 801, ..., 80k *m)를 포함하고,
    각각의 주소 계산기는, 샘플 액세스를 위한 각각의 d 차원을 따라, 버스 주소(A_B)를 수신하고, 각각의 오프셋을 가산하여 샘플 버스 주소(A_B')를 생성하고, 주소지정법(addressing scheme)에 따라 상기 샘플 버스 주소로부터 각각의 주소(A_1, ..., A_d)를 생성하도록 구성되고,
    각각의 샘플 수집기는, 상기 k*m개의 메모리 중 하나에 대한 메모리 선택(CS)을 생성함으로써, 버스 데이터 워드 내 기설정 위치와 상기 k*m개의 메모리중 상기 하나의 메모리 사이에서 상기 샘플을 전송하도록 작동 가능하고,
    각각의 샘플 수집기(291, ..., 29k; 801, ..., 80k *m)는, 각각의 샘플 수집기가 상기 k*m개의 메모리 중에서 각자 다른 하나를 선택하도록 상기 각각의 d 차원 내 주소(A_1, ..., A_d)에 따라 각각의 메모리 선택(CS)을 계산함으로써, 상기 샘플 수집기들이 상기 k*m개의 메모리 중에서 k개에 동시에 액세스하도록 구성된, 메모리 액세스 유닛.
  2. 제1항에 있어서,
    상기 각각의 d 차원 내 샘플들의 개수 및/또는 샘플 폭을 변경 가능한 방식으로 설정하기 위한 한 세트의 레지스터들(311, 312, ..., 31d; 821, 822, ..., 82d)을 더 포함하는, 메모리 액세스 유닛.
  3. 제1항 또는 제2항에 있어서,
    상기 차원에 있어서 숫자 d는, 2 또는 3로 설정되어 있거나 설정 가능한, 메모리 액세스 유닛.
  4. 제1항 내지 제3항 중 어느 한 항에 있어서,
    각각의 샘플 수집기(291, ..., 29k; 801, ..., 80k *m)는, 상기 각각의 d 차원 내 주소들(A_1, ..., A_d)의 합계에 따라 상기 메모리 선택을 계산하도록 구성된, 메모리 액세스 유닛.
  5. 제1항 내지 제4항 중 어느 한 항에 있어서,
    각각의 주소 계산기(281, ..., 28k; 791, ..., 79k *m)는 인덱스(I-S)를 생성하도록 구성된, 메모리 액세스 유닛.
  6. 제1항 내지 제5항 중 어느 한 항에 있어서,
    각각의 주소 계산기(281, ..., 28k; 791, ..., 79k *m)는, 각각의 차원 내의, 선형-증가하는 워드 주소, 샘플 크기 및 샘플들의 개수에 따라 상기 각각의 주소들을 계산하도록 구성된, 메모리 액세스 유닛.
  7. 제1항 내지 제6항 중 어느 한 항에 있어서,
    상기 주소 계산기들(281, ..., 28k; 791, ..., 79k *m) 및 상기 샘플 수집기들(291, ..., 29k; 801, ..., 80k *m)에 결합된 버스 인터페이스(30; 81)를 더 포함하는, 메모리 액세스 유닛.
  8. 제1항 내지 제7항 중 어느 한 항에 있어서,
    하드웨어 로직으로 실행되는, 메모리 액세스 유닛.
  9. 메모리 콘트롤러로,
    제1항 내지 제8항 중 어느 한 항에 따른 적어도 하나의 메모리 액세스 유닛을 포함하는, 메모리 콘트롤러.
  10. 제9항에 있어서,
    d-차원 어레이 내 샘플들의, m개의 데이터 버스와 k*m개의 메모리 간의 전송을 처리하기 위한 m개의 메모리 액세스 유닛을 포함하는, 메모리 콘트롤러.
  11. 메모리 시스템으로,
    제9항 또는 제10항에 따른 메모리 콘트롤러; 및
    k*m개의 메모리를 포함하고, k*m개의 메모리 세트 각각은 상기 m개의 메모리 액세스 유닛에 작동 가능한 방식으로 연결된, 메모리 시스템.
  12. 집적 회로로,
    제1항 내지 제8항 중 어느 한 항에 따른 메모리 액세스 유닛 또는 제9항 또는 제10항에 따른 메모리 콘트롤러를 포함하는, 집적 회로.
  13. 제12항에 있어서,
    마이크로 콘트롤러인 집적 회로.
  14. 모터 차량으로,
    제1항 내지 제8항 중 어느 한 항에 따른 메모리 액세스 유닛 또는 제9항 또는 제10항에 따른 메모리 콘트롤러를 포함하는 컴퓨팅 장치를 포함하는, 모터 차량.
  15. d-차원 어레이 내 샘플들의, m개의 데이터 버스(27; 77) 중 하나와 k*m개의 메모리(221, ..., 22k; 721, ..., 72k *m) 간의 전송 방법으로, m≥1 및 k≥2이고, 상기 방법은,
    k개의 샘플 각각에 대하여,
    버스 주소(A_M)를 수신하고, 각각의 오프셋을 가산하여 샘플 버스 주소(A_B')를 생성하는 단계;
    상기 차원들 중 하나를 따라 샘플들에 액세스하기 위한, 상기 각각의 d 차원 내 주소(A_1, ..., A_d)를, 상기 샘플 버스 주소(A_B')로부터 주소지정법(addressing scheme)에 따라 생성하는 단계; 및
    상기 k*m개의 메모리 중 하나에 대한 메모리 선택(CS)을 생성함으로써, 버스 데이터 워드 내 기설정 위치와 상기 k*m개의 메모리 중 상기 하나의 메모리 사이에서 상기 샘플을 전송하는 단계를 포함하되, 상기 메모리 선택 생성은 상기 주소들(A_1, ..., A_d)에 따라 메모리 선택을 계산하여,
    상기 k*m개의 메모리 중 k개의 메모리에(또는 k개의 메모리로부터), k개의 샘플이 동시에 Write 또는 Read 되도록 하는 것을 포함하는, 방법.
KR1020177015198A 2014-11-05 2015-10-15 메모리 액세스 유닛 KR20170080670A (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
EP14191961.3 2014-11-05
EP14191961.3A EP3018587B1 (en) 2014-11-05 2014-11-05 Memory access unit
PCT/EP2015/073870 WO2016071091A1 (en) 2014-11-05 2015-10-15 Memory access unit

Publications (1)

Publication Number Publication Date
KR20170080670A true KR20170080670A (ko) 2017-07-10

Family

ID=51862200

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020177015198A KR20170080670A (ko) 2014-11-05 2015-10-15 메모리 액세스 유닛

Country Status (7)

Country Link
US (1) US10592406B2 (ko)
EP (1) EP3018587B1 (ko)
JP (1) JP6626105B2 (ko)
KR (1) KR20170080670A (ko)
CN (1) CN107111547B (ko)
TW (1) TW201636846A (ko)
WO (1) WO2016071091A1 (ko)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
FR3055715B1 (fr) * 2016-09-08 2018-10-05 Upmem Methodes et dispositifs pour contourner le cache interne d'un controleur memoire dram evolue
US11210221B2 (en) * 2019-12-10 2021-12-28 Pony Ai Inc. Memory architecture for efficient spatial-temporal data storage and access
US20230291511A1 (en) * 2022-03-10 2023-09-14 Ramesh Annavajjala Method and Apparatus for Multi-Dimensional Complex-Valued Sample Encoding and Decoding

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS58128078A (ja) * 1982-01-27 1983-07-30 Dainippon Screen Mfg Co Ltd メモリ装置の構成方法
JPS63244245A (ja) * 1987-03-31 1988-10-11 Toshiba Corp 並列アクセス可能な多次元メモリ装置
US5765181A (en) * 1993-12-10 1998-06-09 Cray Research, Inc. System and method of addressing distributed memory within a massively parallel processing system
US5684981A (en) * 1995-01-18 1997-11-04 Hewlett-Packard Company Memory organization and method for multiple variable digital data transformation
US6604166B1 (en) * 1998-12-30 2003-08-05 Silicon Automation Systems Limited Memory architecture for parallel data access along any given dimension of an n-dimensional rectangular data array
US8120989B2 (en) * 2007-06-25 2012-02-21 Qualcomm Incorporated Concurrent multiple-dimension word-addressable memory architecture
US8438320B2 (en) * 2007-06-25 2013-05-07 Sonics, Inc. Various methods and apparatus for address tiling and channel interleaving throughout the integrated system
US7877524B1 (en) * 2007-11-23 2011-01-25 Pmc-Sierra Us, Inc. Logical address direct memory access with multiple concurrent physical ports and internal switching
EP2299449A1 (en) * 2008-06-30 2011-03-23 Fujitsu Semiconductor Limited Memory device and memory controller for controlling the same
US9003165B2 (en) * 2008-12-09 2015-04-07 Shlomo Selim Rakib Address generation unit using end point patterns to scan multi-dimensional data structures
KR101553651B1 (ko) * 2009-10-13 2015-09-17 삼성전자 주식회사 다중 뱅크 메모리 액세스 장치
US8473669B2 (en) * 2009-12-07 2013-06-25 Sandisk Technologies Inc. Method and system for concurrent background and foreground operations in a non-volatile memory array
US20110296078A1 (en) * 2010-06-01 2011-12-01 Qualcomm Incorporated Memory pool interface methods and apparatuses
US9116790B2 (en) * 2011-08-04 2015-08-25 Arm Limited Methods of and apparatus for storing data in memory in data processing systems
JP5739779B2 (ja) * 2011-09-26 2015-06-24 ルネサスエレクトロニクス株式会社 Simdプロセッサ及びコントロールプロセッサ並びにプロセッサ要素
US20140307055A1 (en) * 2013-04-15 2014-10-16 Microsoft Corporation Intensity-modulated light pattern for active stereo
US9772864B2 (en) * 2013-04-16 2017-09-26 Arm Limited Methods of and apparatus for multidimensional indexing in microprocessor systems

Also Published As

Publication number Publication date
JP6626105B2 (ja) 2019-12-25
EP3018587B1 (en) 2018-08-29
CN107111547A (zh) 2017-08-29
JP2017539003A (ja) 2017-12-28
US10592406B2 (en) 2020-03-17
TW201636846A (zh) 2016-10-16
CN107111547B (zh) 2020-11-17
US20170329702A1 (en) 2017-11-16
EP3018587A1 (en) 2016-05-11
WO2016071091A1 (en) 2016-05-12

Similar Documents

Publication Publication Date Title
CN107657581B (zh) 一种卷积神经网络cnn硬件加速器及加速方法
CN104237852B (zh) 用于处理雷达信号的方法、装置和系统
KR101687081B1 (ko) 단채널 컨볼루션 레이어를 위한 처리 방법 및 장치, 및 다채널 컨볼루션 레이어를 위한 처리 방법 및 장치
CN107301455B (zh) 用于卷积神经网络的混合立方体存储系统及加速计算方法
KR101906662B1 (ko) 레이더 신호를 프로세싱하는 방법 및 디바이스
KR20170080670A (ko) 메모리 액세스 유닛
US20230041850A1 (en) Adaptive matrix multiplication accelerator for machine learning and deep learning applications
US20230385369A1 (en) Fft engine having combined bit-reversal and memory transpose operations
US20080189479A1 (en) Device, system and method for controlling memory operations
CN104820659A (zh) 一种面向粗粒度可重构系统的多模式动态可配高速访存接口
CN111124995A (zh) 通过人工智能处理器处理一维复数数组的方法和设备
US8825729B1 (en) Power and bandwidth efficient FFT for DDR memory
CN110888824B (zh) 多级存储器层级结构
CN111143766A (zh) 人工智能处理器处理二维复数矩阵的方法和设备
US20180267729A1 (en) Semiconductor device
CN101751356A (zh) 用于改进直接存储器存取传送效率的方法、系统和装置
JP4112813B2 (ja) バスシステム及びそのコマンドの伝達方法
KR20050081498A (ko) 다층 버스 시스템에서의 메모리 뱅크 인터리빙 방법 및장치
IT202000016393A1 (it) Circuito di elaborazione di segnale digitale e corrispondente procedimento di funzionamento
Sun et al. Efficient and flexible 2-d data controller for sar imaging system
Dou et al. FPGA SAR processor with window memory accesses
Ali et al. A bandwidth in-sensitive low stall sparse matrix vector multiplication architecture on reconfigurable fpga platform
CN112163187B (zh) 一种超长点数高性能fft计算装置
US20220100575A1 (en) Method and apparatus for a configurable hardware accelerator
CN117493746B (zh) 一种基于现场可编程门阵列的多维快速傅里叶变换系统