KR102335798B1 - 다수의 클라이언트 데이터를 처리하는 저장 장치 및 방법 - Google Patents

다수의 클라이언트 데이터를 처리하는 저장 장치 및 방법 Download PDF

Info

Publication number
KR102335798B1
KR102335798B1 KR1020150021198A KR20150021198A KR102335798B1 KR 102335798 B1 KR102335798 B1 KR 102335798B1 KR 1020150021198 A KR1020150021198 A KR 1020150021198A KR 20150021198 A KR20150021198 A KR 20150021198A KR 102335798 B1 KR102335798 B1 KR 102335798B1
Authority
KR
South Korea
Prior art keywords
client
data
client data
memory
storage unit
Prior art date
Application number
KR1020150021198A
Other languages
English (en)
Other versions
KR20160098925A (ko
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 삼성전자주식회사
Priority to KR1020150021198A priority Critical patent/KR102335798B1/ko
Priority to US15/002,008 priority patent/US10031884B2/en
Publication of KR20160098925A publication Critical patent/KR20160098925A/ko
Application granted granted Critical
Publication of KR102335798B1 publication Critical patent/KR102335798B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • G06F15/163Interprocessor communication
    • G06F15/167Interprocessor communication using a common memory, e.g. mailbox
    • 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/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0813Multiuser, multiprocessor or multiprocessing cache systems with a network or matrix configuration

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Mathematical Physics (AREA)
  • Software Systems (AREA)
  • Multi Processors (AREA)
  • Information Transfer Systems (AREA)

Abstract

본 발명은 다수의 클라이언트 데이터를 처리하는 저장 장치 및 방법에 대한 것으로서, 본 발명의 실시 예에 따른 저장 장치는 상기 다수의 클라이언트 데이터를 저장하기 위한 클라이언트별 메모리를 포함하는 제1 저장부와, 다수의 클라이언트가 공유하는 메모리 뱅크를 포함하는 제2 저장부와, 외부 메모리 또는 프로세서에 내장된 메모리를 포함하는 제3 저장부를 포함하며, 상기 제1 내지 제3 저장부는 계층적인 구조로 연결된다.

Description

다수의 클라이언트 데이터를 처리하는 저장 장치 및 방법{STORAGE APPARATUS AND METHOD FOR PROCESSING A PLURALITY OF CLIENT DATA}
본 발명은 다수의 클라이언트 데이터를 처리하는 저장 장치 및 방법에 대한 것이다.
통신 시스템에서 송신기, 수신기 또는 송수신기(또는 단말기)와 같이 서로 다른 종류의 다수의 클라이언트 데이터들의 처리가 요구되는 데이터 처리 방식에서는 각 클라이언트별로 전송이 필요한 데이터의 양이 다르고 발생 시점도 독립적이므로 데이터를 생성하는 클라이언트별로 개별적인 메모리에 저장하는 것이 보통이며 메모리의 크기도 균일하지 않게 된다. 이렇게 클라이언트별로 특화된 메모리 구성은 일부 작은 메모리에 의해 전반적인 면적 효율을 저하시키게 된다. 또한 프로세서에서 한 번에 처리할 데이터의 양에 비례하여 메모리 크기가 증가하는 문제가 있고, 동작시나리오에 따라 클라이언트별 데이터의 양이 달라지더라도 메모리를 융통성있게 재분배할 수 없어 전체적으로 더욱 큰 메모리를 배치하여 설계해야 하는 부담이 있다.
본 발명은 통신 시스템의 송수신 장치에서 데이터를 수집하고 전송하기 위한 효율적인 방법과 장치를 제공한다.
또한 본 발명은 통신 시스템에서 메모리의 면적을 줄일 수 있는 다단계의 메모리를 이용하는 데이터 저장 방법 및 장치를 제공한다.
본 발명의 실시 예에 따라 다수의 클라이언트 데이터를 처리하는 저장 장치는 상기 다수의 클라이언트 데이터를 저장하기 위한 클라이언트별 메모리를 포함하는 제1 저장부와, 다수의 클라이언트가 공유하는 메모리 뱅크를 포함하는 제2 저장부와, 외부 메모리 또는 프로세서에 내장된 메모리를 포함하는 제3 저장부를 포함하며, 상기 제1 내지 제3 저장부는 계층적인 구조로 연결된다.
본 발명의 실시 예에서 상기 저장 장치는 데이터의 수집과 전송을 제1 내지 제 3단의 계층적 구조를 가지는 메모리 및 부가장치로 구현될 수 있다. 상기 저장 장치는 제1 내지 제3 단의 계층적 메모리를 포함하며, 상기 계층적 메모리의 제1 단은 각 client로부터 생성되는 데이터를 유실 없이 저장하기 위한 client별 FIFO이며, 제2 단은 모든 client가 공유하는 memory bank이며, 제3 단은 최종적으로 외부메모리나 특정 프로세서 서브시스템에 내장된 메모리이다. 이외에 각 client의 데이터가 공유 memory bank에 저장되고 최종적으로 외부 메모리에 전송되는 규칙에 대한 정보를 저장하는 configuration register, 그리고 인터럽트 생성기를 포함하여 구현될 수 있다.
따라서 본 발명의 실시 예에서는 다단계 메모리의 저장 장치 구조 및 이를 엑세스하는 방식을 제시하며, 이러한 구성을 통해 작은 메모리의 사용을 줄이고 대량의 데이터는 일정 규모 이상의 메모리를 사용함으로써 전체적인 면적 효율이 향상시킨다. 또한 시나리오에 따라 클리이언트별 데이터 생성량이 달라질 때 각 client에 할당된 메모리의 양을 재할당하여 전제척인 메모리의 면적을 감소시킬 수 있다.
도 1a는 일반적인 슬레이브 버스 인터페이스 구조를 나타낸 도면,
도 1b는 일반적인 DMA 버스 인터페이스 구조를 나타낸 도면,
도 2는 특정 클라이언트에서 생성되는 일반적인 데이터 패턴을 예시한 도면,
도 3은 본 발명의 실시 예에 따른 저장 장치의 구성 예를 나타낸 도면,
도 4는 본 발명의 실시 예에 따른 저장 장치에서 제2 단 저장 장치에 해당되는 burst memory의 일 구성 예를 나타낸 도면,
도 5는 본 발명의 실시 예에 따른 저장 장치에서 버스트 메모리의 억세스 패턴의 일 예를 나타낸 도면,
도 6은 본 발명의 실시 예에 따라 1 bit를 구현하는 데 드는 면적(단위: gate count)을 memory의 size별로 나타낸 도면,
도 7은 본 발명의 실시 예에 따라 클라이언트와 data mover 간의 인터페이스의 일 예를 나타낸 도면,
도 8은 본 발명의 실시 예에 따른 저장 장치에서 클라이언트 데이터 전송의 일 예를 나타낸 도면,
도 9는 본 발명의 실시 예에 따라 저장 장치에서 final destination memory에 저장된 클라이언트 데이터의 일 예를 나타낸 도면.
하기에서 본 발명의 실시 예들을 설명함에 있어 관련된 공지 기능 또는 구성에 대한 구체적인 설명이 본 발명의 요지를 불필요하게 흐릴 수 있다고 판단되는 경우에는 그 상세한 설명을 생략할 것이다.
먼저 통신 시스템에서 송신기, 수신기, 또는 송수신기는 소프트웨어 기반으로 동작하는 적어도 하나의 프로세서와, 정해진 동작을 수행하도록 설계된 적어도 하나의 하드웨어 블록을 포함하여 구현될 수 있다. 여기서 각 하드웨어 블록과 프로세서(또는 프로세서의 서브시스템) 간에는 정보 교환이 이루어진다. 각 하드웨어 블록에서 데이터 연산에 따라 얻어진 결과값 중 일부는 다시 프로세서 서브 시스템에 전송되어 처리될 수 있으며, 프로세서 서브 시스템에 전송되어 처리되는 데이터는 하드웨어 블록의 특성에 따라 다양한 유형의 데이터가 존재하게 된다. 이러한 데이터는 주기적으로 생성된 후에 적절한 시간 내에 프로세서 서브시스템으로 전송되어야 하는데, 보정(calibration)을 위한 송수신 I(Inphase)/Q(Quadrature) 데이터, 셀 탐색(cell searcher)의 처리 결과, 수신기의 채널 추정값, 등화기(equalizer)의 적응 필터 가중치(adaptive filter weight), 채널 디코딩(channel decoding) 결과 등의 데이터 등을 예로 들 수 있다. 각 클라이언트가 동시에 동작하는 하드웨어 블록일 경우 일반적인 방식에서는 도 1a 및 도 1b에 도시된 것처럼 각 클라이언트가 생성하는 데이터를 클라이언트별로 개별적인 메모리에 저장한다. 도 1a는 일반적인 슬레이브 버스 인터페이스 구조를 나타낸 것이고, 도 1b는 일반적인 DMA 버스 인터페이스 구조를 나타낸 것이다. Processor는 slave interface를 통해 데이터를 읽어가거나(도 1a 참조) processor memory의 일부에 전용 경로를 만들어 전송할 수 있다.(도 1b 참조). 도 1a 및 도 1b의 구조에서 각 메모리는 flipflop 이나 SRAM과 같은 on-chip memory로 구현되는데, 다음과 같은 문제점을 가진다.
하나의 client memory는 소프트웨어가 한 번에 처리하는 데이터의 양 (이하 1 transaction)을 저장한다. Flipflop는 1 bit당 면적이 가장 높고, SRAM memory도 상대적으로 bit 당 면적이 높으므로, 각각의 transaction size에 의해 silicon 면적이 크게 증가한다. 각 client별로 생성하는 데이터의 양이 달라 각 메모리의 크기에도 편차가 생기며, 일부 매우 작은 메모리를 사용할 수 밖에 없게 된다. SRAM은 실제 정보를 저장하는 cell matrix 외에 address를 decoding하고 access하고자 하는 cell을 지정하고 output을 읽기 위한 제어 로직을 포함한다. Cell matrix은 저장하는 bit 수에 비례해서 증가하지만 상기 제어 로직은 이보다 완만하게 증가하므로 memory의 용량이 작을수록 bit 당 차지하는 silicon의 면적이 늘어나게 되어 메모리의 면적 효율이 낮아진다. 상기와 같은 구현은 각 메모리가 특정 클라이언트에 고정적으로 매핑되므로 동작 상황에 따라 메모리를 효율적으로 재할당하여 사용할 수 없다. 다양한 동작 시나리오에서 각 하드웨어 블록이 생성하는 데이터의 양이 달라지며, 각 클라이언트별 메모리는 모든 시나리오에서 가장 많은 데이터 요구량을 기준으로 만들어져야 하는 점을 고려하면, 이로 인해 전체적인 메모리의 면적이 증가하게 된다.
본 발명의 실시 예에서는 각 클라이언트에서 전송되는 데이터의 트래픽 특성을 이용하여 메모리의 면적을 줄일 수 있는 다단계의 메모리를 이용하여 구현될 수 있는 저장 장치를 제안한다. 여기서 클라이언트별 데이터는 상기 저장 장치를 이용하는 단말기 등에서 처리되는 서로 다른 종류의 데이터로 이해될 수 있다. 본 발명의 실시 예에서 제안하는 저장 장치의 구조에서는 처리가 시급하지 않은 데이터를 보다 구현 비용이 적은 메모리에 저장하게 되고, 또한 면적 효율이 떨어지는 작은 용량의 메모리를 줄이고, 일정 용량 이상의 메모리를 사용하게 되어 메모리의 전체적인 면적 효율을 향상시킬 수 있다.
또한 시나리오에 따라 클리이언트별 메모리 생성량이 달라지면 configuration register의 내용만 바꾸어 쉽게 각 client에 할당된 메모리의 양을 변경할 수 있다. 이를 통해 전체적인 메모리의 면적을 감소시킬 수 있다. 그리고 본 발명의 실시 예에서는 메모리를 다단계로 구성하고, 저장 장치의 면적 효율을 높이기 위해 각 클라이언트에서 생성되는 데이터의 트래픽 특성을 이용할 수 있다.
도 2는 특정 클라이언트에서 생성되는 일반적인 데이터 패턴을 예시한 도면이다. 도 2를 참조하면, 클라이언트는 일정 분량의 데이터를 전송한 후에 인터럽트를 발생시켜 프로세서에 처리를 요구한다. 프로세서는 1개의 transaction에 해당하는 데이터를 모아 이를 한 번에 처리하지만, 실제 데이터는 여러 개의 작은 burst로 나뉘어 생성된다. 따라서 client별로 1개 burst만을 중간 메모리에 우선 저장하고, 1개 transaction 전체는 상대적으로 구현비용이 낮은 최종 destination 메모리에 저장한다. 상기 Destination memory는 외부 DRAM이거나, 또는 같은 SRAM이라도 개별 instance의 사이즈가 커서 bit 당 면적이 작다.
도 3은 본 발명의 실시 예에 따른 저장 장치의 구성 예를 나타낸 도면이다.
도 3을 참조하면, Data Mover는 N개의 client(예컨대, 서로 다른 종류의 클라이언트 데이터)로부터 데이터 및/또는 제어 정보를 전달 받아 그 중 데이터를 각 client별로 할당된 제1 단 저장 장치인 input FIFO에 우선 저장한다. 각 client별 input FIFO의 데이터는 formatting을 거쳐 제2 단 저장 장치인 burst memory에 저장된다. 상기 formatting은 각 client의 data width가 burst memory 내의 memory bank width WB보다 작을 경우 여러 데이터를 모은 후 다시 WB의 크기로 맞추어 메모리를 효율적으로 사용하기 위함이다.
도 3에서 Burst memory는 각 client별로 1개의 burst를 저장하므로 저장할 데이터의 양이 1개의 transaction 전체를 저장하는 것에 비해 크게 줄어든다. 1개의 burst 저장이 완료되면 그 다음 burst가 발생하여 기존 데이터가 overwrite되기 전에 이를 제3 단 저장 장치로 전송하게 된다. 만일 두 burst 사이에 시간 간격이 매우 좁아서 제3 단 저장 장치로 전송할 시간이 부족한 경우엔 제2 단 저장 장치에 해당 client에 대해 2개 burst 분량을 저장하여 double buffering으로 해결할 수 있다.
도 3에서 Configuration register에는 각 client의 데이터가 burst memory에서 차지하는 시작 주소와 최종 저장될 destination memory의 주소, de-formating하는 방식 등 각 client별로 데이터를 처리하는 규칙이 저장된다. 출력 FIFO는 burst memory에서 읽은 데이터를 임시 저장하며, de-formating을 거쳐 eXDMAC를 통해 제3 단 저장 장치로 전송된다. 각 client는 Data Mover에 전달하는 제어 정보를 통해 특정 burst에서의 interrupt를 발생을 요청할 수 있으며, 이를 처리하기 위한 interrupt 생성기가 포함될 수 있다.
도 3에서 제3 단 저장장치는 데이터가 전송되는 최종 destination으로서 프로세서 서브시스템에서 엑세스 가능한 주소 공간이다. 상기 제3 단 저장 장치는 예를 들어 칩 외부의 DRAM이거나 칩 내부의 특정 프로세서의 대용량 데이터 메모리이며, DMA 장치를 통해 데이터를 전송한다. 프로세서에서의 데이터 처리를 위해 각 client 별로 1개 transaction을 저장하며, 제3 단 저장 장치는 제1 단이나 제2 단 저장 장치에 비해 bit 당 구현 비용이 상대적으로 낮으므로 전반적인 구현 비용이 감소하게 된다. 만일 프로세서의 처리가 느려서 1개의 transaction의 처리가 끝나기 전에 그 다음 transaction의 데이터가 전송되면서 데이터가 overwrite될 우려가 있다면 제3 단 저장 장치에 2개의 transaction을 저장할 공간을 확보하여 double buffering을 수행할 수 있다.
도 4는 본 발명의 실시 예에 따른 저장 장치에서 제2 단 저장 장치에 해당되는 burst memory의 일 구성 예를 나타낸 것이다.
도 4를 참조하면, N개의 입력 포트를 input cross bar를 거쳐 M개의 memory bank에 연결하며, 여기서 N<M 이다. 각 memory bank는 WB bit의 폭을 가진다. 각 입력 포트는 매 순간 특정한 bank에 연결되도록 제어된다. 출력 포트는 매 순간 M개의 bank 중 하나를 선택하여 출력한다.
하나의 client에는 burst memory의 어느 영역이든 할당이 가능하며 client별 시작 주소를 configuration register에 설정한다. 이 설정을 송수신기가 동작 중에 변경함으로써 동작 시나리오에 따른 재설정이 가능하다. 따라서 burst memory의 전체 크기는 모든 client들의 1개 burst 분량이 최대가 되는 시나리오를 기준으로 설계할 수 있고, 다른 시나리오에서는 configuration register를 통해 동적으로 client간에 재분배할 수 있다. 이는 각 client별로 최대 burst size로 공간을 확보하는 것에 비해 구현 면적을 줄일 수 있다.
도 5는 본 발명의 실시 예에 따른 저장 장치에서 버스트 메모리의 억세스 패턴의 일 예를 나타낸 도면이다.
도 5를 참조하면, 예를 들어 하나의 client가 burst memory를 access할 때는 가로로 striping하는 pattern으로 순차적으로 모든 bank를 access한다. 한 client가 특정 bank을 M cycle마다 1번씩만 access하게 되므로 cross bar에서 두 개 이상의 client가 한 순간에 2개의 memory를 access하지 않도록 scheduling하면 최대 M개의 client가 서로 충돌 없이 동시에 burst memory에 접근할 수 있다. Burst memory의 내용을 읽어 내는 것도 1개의 client 이므로 write하는 client N은 M보다 작다.
아래 <표 1>은 본 발명의 실시 예에 따라 cross bar의 클라이언트별 할당의 일 예를 나타낸 것으로서, 이는 예컨대, client의 개수가 8인 경우에 대해 시간에 따른 bank 할당의 예를 나타낸 것이다.
<표 1>
Figure 112015014729856-pat00001
상기 <표 1>과 같이 연속된 8개의 clock cycle을 8개의 time slot으로 정의하여 round-robin 방식으로 할당하면 간단히 충돌 없는 scheduling이 가능하다. 이때 특정 client가 데이터 전송을 개시하고자 할 때 할당된 time slot까지 기다리는데 최대 7 clock이 소요될 수 있으므로 이를 저장해 둘 수 있는 input buffer가 client별로 필요하다. 제1 단 저장 장치인 Client별 input buffer는 client로부터 불규칙적으로 발생하는 데이터를 유실 없이 저장했다가 연속된 cycle로 burst memory로 전송하는 역할을 수행한다.
도 6은 본 발명의 실시 예에 따라 예를 들어 특정 공정에서 1 bit를 구현하는 데 드는 면적(단위: gate count)을 memory의 size별로 나타낸 도면이다.
도 6을 참조하면, 가장 작은 memory의 경우 3.83 gate/bit이 메모리가 커질수록 감소하여 0.20 gate/bit에 수렴하므로 최대 19배의 차이가 나는 것을 볼 수 있다. 또한 memory의 크기가 일정 수준으로만 커져도 0.2~0.3 gate/bit 수준으로 급격히 감소함을 볼 수 있다. 따라서 크기가 분포가 다양한 memory bank를 구현하는 것에 비해 일정 규모의 균일한 memory를 구현하는 것이 silicon 면적 감소 측면에서 유리하다. 본 발명에서 제안하는 방식에 의해 각 client별로 발생하는 데이터의 양과 무관하게 균일한 사이즈의 memory bank로 전체 storage를 구성할 수 있다.
또한 각 client는 final destination memory에 전송할 데이터 외에 부가 정보를 전송하여 전송에 필요한 사항을 전달하도록 구성할 수 있다.
도 7은 본 발명의 실시 예에 따라 클라이언트와 data mover 간의 인터페이스의 일 예를 나타낸 도면으로서, 도 7의 예는 Wi bit의 데이터 외에 2 bit의 제어 정보와 1 bit의 인터럽트 요청 신호를 전달하는 예를 나타낸 것이다. 여기서 상기 제어 정보는 예를 들어 아래 <표 2>와 같은 의미를 가진다.
<표 2>
Figure 112015014729856-pat00002
도 8은 본 발명의 실시 예에 따른 저장 장치에서 클라이언트 데이터 전송의 일 예를 나타낸 도면으로서, 도 8의 예는 상기 <표 2>의 제어 정보를 이용하여 클라이언트 데이터를 전송하는 예를 나타낸 것이다.
도 8을 참조하면, Client는 대기 상태에서 ControlInfo를 'b00으로 유지한다. 첫 전송을 시작할 때 ControlInfo[0]를 1로 전송하고 이 때 final destination memory에서 데이터 저장을 시작할 첫 주소 (head address)를 전송한다. 이후 ClientData에 유효한 데이터를 전송할 때 ControlInfo[1]을 1로 전송하여 ClientData가 valid함을 Data Mover에 알린다. 1개의 burst 전송이 완료된 이후에는 ControlInfo를 'b11로 전송한다. Data Mover에서는 burst의 마지막임을 확인한 후 eXDMAC를 가동하여 외부 메모리로의 전송을 시작하게 된다. 특정 burst의 마지막에 InterruptReq를 1로 전송하면 Data Mover에서는 해당 burst의 전송이 완료된 후 interrupt를 발생시켜 프로세서 서브시스템에 해당 client의 데이터 전송이 완료되었음을 통지한다.
도 9는 본 발명의 실시 예에 따라 저장 장치에서 final destination memory에 저장된 클라이언트 데이터의 일 예를 나타낸 도면이다.
도 9를 참조하면, Configuration register에는 각 client별로 2개의 base address(BA0, BA1)을 지정할 수 있으며, 두 BA가 다르면 double buffering을 수행할 수 있다. 실제 각 burst는 base address에 각 client가 전송한 head address (HA0, HA1, ...)을 더한 위치부터 데이터를 저장하는데, 이때 Data Mover는 부가적인 정보를 저장하여 processor가 데이터를 처리하는 것을 용이하게 할 수 있다. 도 9의 예에서는 첫 번째 address에 magic number의 영역을 만들고 client별로 interrupt가 생성될 때마다 1씩 증가된 값을 사용함을 가정하였다. 프로세서는 상기 interrupt 처리를 하는 대신에 상기 magic number의 update 여부를 확인함으로써 모든 데이터의 전송이 완료되었는지를 판단함으로써 처리 시간을 단축시킬 수 있다.
상기한 본 발명의 실시 예에 의하면, 다수의 하드웨어 블록들이 생성하는 데이터를 특정 메모리로 전송해야 하는 통신 시스템에서, 모든 client들의 데이터를 효율적으로 처리할 수 있는 공유된 다단계 메모리 구조의 저장 장치 및 방법을 제공할 수 있다.
상기 저장 장치의 다단계 메모리 구조에서 제1 단(또는 앞 단)은 독립적으로 동작하는 각 client 데이터를 저장하기 위해 client별로 작은 flipflop이나 메모리로 구현될 수 있다. 그리고 상기 저장 장치를 이용하면, 기록을 개시할 수 있을 때까지의 대기 시간에 데이터를 유실하지 않고 저장할 수 있다.
또한 상기한 다단계 메모리 구조에서 제2 단(또는 중간 간)은 client별로 집중적으로 발생하는 1개 또는 2개의 burst만을 저장하되 구현 비용을 낮추기 위해 모든 client가 공유하는 여러 개의 bank로 구성되는 메모리로 구현될 수 있으며, 상기 제1 단(또는 앞 단)의 모든 client별 저장 장치로부터 데이터를 동시에 읽어 상기 memory bank에 동시에 기록하고 하는 작업과 다음 단으로 전송하기 위해 이미 저장된 데이터를 읽어내는 작업을 수행할 때 충돌을 회피할 수 있다. 따라서 본 발명의 실시 예에 의하면, 각 client별 데이터가 공유 memory bank에 저장되는 위치와 분량을 소프트웨어적인 설정으로 변경하여 동적으로 client별 memory 할당을 가변할 수 있게 운용할 수 있다.
또한 상기한 다단계 메모리 구조에서 제3 단(또는 마지막 단)은 프로세서의 처리 단위인 transaction 단위로 저장하되 각 client별로 1개~2개 transaction 분량을 가장 구현 비용이 낮은 메모리인 외부 메모리나 대용량 on-chip 메모리고 구현될 수 있으며, 최종 메모리의 특정 위치에 각 client의 데이터를 저장하는 방식에 있어 두 개 이상의 base address를 이용하여 double buffering이 가능하게 할 수 있다. 또한 특정 위치에 부가적인 정보를 자동으로 전송하여 프로세서의 데이터 처리를 용이하게 할 수 있다.

Claims (20)

  1. 다수의 클라이언트 데이터를 처리하는 저장 장치에 있어서,
    버스트들로 나뉘어 생성된 상기 다수의 클라이언트 데이터를 다수의 클라이언트로부터 수신하고 상기 수신된 상기 다수의 클라이언트 데이터를 저장하도록 구성되는 제1 저장부;
    상기 제1 저장부로부터 상기 다수의 클라이언트 데이터를 수신하고, 상기 수신된 다수의 클라이언트 데이터를 상기 다수의 클라이언트가 공유하는 다수의 메모리 뱅크 내에 버스트 단위로 각각 저장하도록 구성되는 제2 저장부; 및
    상기 제2 저장부로부터 상기 다수의 클라이언트 데이터 각각을 수신하고 프로세서에서의 데이터 처리를 위해 상기 다수의 클라이언트 데이터 각각을 클라이언트 별로 송신 단위에 대응되는 트랜잭션 단위의 데이터로 저장하도록 구성되는 제3 저장부를 포함하며,
    상기 제1 내지 제3 저장부는 계층적인 구조로 연결된 저장 장치.
  2. 제1항에 있어서,
    상기 제1 저장부는 상기 다수의 클라이언트 각각에 대응되는 메모리들을 포함하고, 상기 메모리들은 상기 다수의 클라이언트 데이터 각각을 저장하는, 저장 장치.
  3. 제1항에 있어서,
    상기 제1 저장부는 상기 제2 저장부에 기록이 개시될 수 있을 때까지 상기 다수의 클라이언트 데이터를 저장하는, 저장 장치.
  4. 제1항에 있어서,
    상기 다수의 메모리 뱅크는 균일한 크기를 갖는, 저장 장치.
  5. 제1항에 있어서,
    상기 제2 저장부에서,
    상기 수신된 다수의 클라이언트 데이터는 동시에 상기 다수의 메모리 뱅크에 버스트 단위로 나뉘어 저장되는, 저장 장치.
  6. 제1항에 있어서,
    상기 다수의 메모리 뱅크에 저장되는 상기 다수의 클라이언트 데이터의 주소 및 상기 다수의 클라이언트 데이터의 메모리 양은 상기 프로세서에 의하여 변경될 수 있는, 저장 장치.
  7. 제1항에 있어서,
    상기 저장 장치는 상기 다수의 클라이언트 데이터가 상기 다수의 메모리 뱅크에 저장되는 규칙에 대한 정보를 저장하는 구성 레지스터를 포함하는, 저장 장치.
  8. 제1항에 있어서,
    상기 다수의 클라이언트 데이터 각각에 대한 상기 다수의 메모리 뱅크의 메모리 할당은 동적으로 변경되는, 저장 장치.
  9. 제1항에 있어서,
    상기 제3 저장부는 외부 메모리 또는 프로세서에 내장된 온칩(on-chip) 메모리를 포함하는, 저장 장치.
  10. 제1항에 있어서,
    상기 제3 저장부는 다수의 베이스 어드레스를 이용하여 더블 버퍼링을 수행하여 상기 다수의 클라이언트 데이터 각각을 저장하는, 저장 장치.
  11. 제1항에 있어서,
    상기 제3 저장부의 특정 위치에 전송된 부가적인 정보가 프로세서의 데이터 처리에 이용되는, 저장 장치.
  12. 제1항에 있어서,
    상기 제2 저장부에 저장된 상기 다수의 클라이언트 데이터 각각은 인접한 버스트들 사이의 시간 간격 동안 상기 제3 저장부에 전송되는, 저장 장치.
  13. 제1항에 있어서,
    상기 다수의 클라이언트 데이터는 클라이언트 별로 상이한 종류의 데이터를 포함하는, 저장 장치.
  14. 다수의 클라이언트 데이터를 처리하는 방법에 있어서,
    버스트들로 나뉘어 생성된 상기 다수의 클라이언트 데이터를 다수의 클라이언트로부터 수신하고 상기 수신된 상기 다수의 클라이언트 데이터를 클라이언트별 메모리들에 저장하는 동작;
    상기 클라이언트별 메모리들로부터 상기 다수의 클라이언트 데이터를 수신하고, 상기 수신된 다수의 클라이언트 데이터를 상기 다수의 클라이언트가 공유하는 다수의 메모리 뱅크 내에 버스트 단위로 각각 저장하는 동작; 및
    상기 다수의 메모리 뱅크로부터 상기 다수의 클라이언트 데이터를 수신하고 프로세서에서의 데이터 처리를 위해 상기 다수의 클라이언트 데이터 각각을 클라이언트 별로 송신 단위에 대응되는 트랜잭션 단위의 데이터로 저장하는 동작
    을 포함하는 방법.
  15. 제14항에 있어서,
    상기 다수의 클라이언트 데이터는 클라이언트 별로 상이한 종류의 데이터를 포함하는, 방법.
  16. 제14항에 있어서,
    상기 다수의 클라이언트 데이터 각각에 대한 상기 다수의 메모리 뱅크의 메모리 할당은 동적으로 변경되는, 방법.
  17. 제14항에 있어서,
    상기 클라이언트별 메모리들은 상기 다수의 클라이언트 각각에 대응되는 메모리들을 포함하는, 방법.
  18. 제14항에 있어서,
    상기 다수의 클라이언트 데이터를 클라이언트별 메모리들에 저장하는 동작은 상기 다수의 메모리 뱅크 내에 기록이 개시될 수 있을 때까지 상기 다수의 클라이언트 데이터를 저장하는 동작을 포함하는, 방법.
  19. 제14항에 있어서,
    상기 다수의 메모리 뱅크는 균일한 크기를 갖는, 방법.
  20. 저장 장치 내의 다수의 클라이언트 데이터를 처리하는 칩셋에 있어서, 상기 칩셋은,
    버스트들로 나뉘어 생성된 상기 다수의 클라이언트 데이터를 다수의 클라이언트로부터 수신하고 상기 수신된 상기 다수의 클라이언트 데이터를 클라이언트별 메모리들에 저장하고,
    상기 클라이언트별 메모리들로부터 상기 다수의 클라이언트 데이터를 수신하고, 상기 수신된 다수의 클라이언트 데이터를 상기 다수의 클라이언트가 공유하는 다수의 메모리 뱅크 내에 버스트 단위로 나누어 각각 저장하고,
    상기 다수의 메모리 뱅크로부터 상기 다수의 클라이언트 데이터를 수신하고 프로세서에서의 데이터 처리를 위해 상기 다수의 클라이언트 데이터 각각을 클라이언트 별로 송신 단위에 대응되는 트랜잭션 단위의 데이터로 저장
    하도록 구성되는, 칩셋.


KR1020150021198A 2015-02-11 2015-02-11 다수의 클라이언트 데이터를 처리하는 저장 장치 및 방법 KR102335798B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020150021198A KR102335798B1 (ko) 2015-02-11 2015-02-11 다수의 클라이언트 데이터를 처리하는 저장 장치 및 방법
US15/002,008 US10031884B2 (en) 2015-02-11 2016-01-20 Storage apparatus and method for processing plurality of pieces of client data

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020150021198A KR102335798B1 (ko) 2015-02-11 2015-02-11 다수의 클라이언트 데이터를 처리하는 저장 장치 및 방법

Publications (2)

Publication Number Publication Date
KR20160098925A KR20160098925A (ko) 2016-08-19
KR102335798B1 true KR102335798B1 (ko) 2021-12-07

Family

ID=56874974

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020150021198A KR102335798B1 (ko) 2015-02-11 2015-02-11 다수의 클라이언트 데이터를 처리하는 저장 장치 및 방법

Country Status (1)

Country Link
KR (1) KR102335798B1 (ko)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20180074197A (ko) 2016-12-23 2018-07-03 삼성전자주식회사 버스 트래픽 컨트롤 장치 및 이를 갖는 버스 시스템

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20120005419A1 (en) * 2010-07-02 2012-01-05 Futurewei Technologies, Inc. System Architecture For Integrated Hierarchical Query Processing For Key/Value Stores

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR970011890B1 (ko) * 1994-02-28 1997-07-18 삼성전자 주식회사 메인프로세서와 서브프로세서의 메모리 공유방법
KR100740635B1 (ko) * 2005-12-26 2007-07-18 엠텍비젼 주식회사 휴대형 단말기 및 휴대형 단말기에서의 공유 메모리 제어방법
KR100986988B1 (ko) * 2008-10-22 2010-10-11 전자부품연구원 인터페이스 장치 및 방법

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20120005419A1 (en) * 2010-07-02 2012-01-05 Futurewei Technologies, Inc. System Architecture For Integrated Hierarchical Query Processing For Key/Value Stores

Also Published As

Publication number Publication date
KR20160098925A (ko) 2016-08-19

Similar Documents

Publication Publication Date Title
US10515030B2 (en) Method and device for improved advanced microcontroller bus architecture (AMBA) and advanced extensible interface (AXI) operations
US7543114B2 (en) System and controller with reduced bus utilization time
US20140013061A1 (en) System And Method To Reduce Memory Access Latencies Using Selective Replication Across Multiple Memory Ports
CN100576811C (zh) 总线装置、总线系统和信息传输方法
CN101848135B (zh) 芯片的统计数据的管理方法和装置
CN106326140A (zh) 数据拷贝方法、直接内存访问控制器及计算机系统
US20170068640A1 (en) Network memory
CN109388590A (zh) 提升多通道dma访问性能的动态缓存块管理方法和装置
EP3077914B1 (en) System and method for managing and supporting virtual host bus adaptor (vhba) over infiniband (ib) and for supporting efficient buffer usage with a single external memory interface
CN102314400B (zh) 一种分散聚合式dma方法及装置
CN106775477B (zh) Ssd主控数据传输管理装置及方法
CN116724287A (zh) 一种内存控制方法及内存控制装置
US10031884B2 (en) Storage apparatus and method for processing plurality of pieces of client data
US20170024146A1 (en) Memory controller, information processing device, and control method
US10061513B2 (en) Packet processing system, method and device utilizing memory sharing
KR102338872B1 (ko) 다수의 클라이언트 데이터를 처리하는 저장 장치 및 방법
KR102335798B1 (ko) 다수의 클라이언트 데이터를 처리하는 저장 장치 및 방법
CN108984148B (zh) 一种基于同步fifo存储器的数据存储的方法及存储器
US20030200374A1 (en) Microcomputer system having upper bus and lower bus and controlling data access in network
CN109992198B (zh) 神经网络的数据传输方法及相关产品
CN100422978C (zh) 具有多个互相通信的数字信号处理器的集成电路
CN106057226B (zh) 双端口存储系统的存取控制方法
US9582215B2 (en) Packet processing system, method and device utilizing memory sharing
US9612950B2 (en) Control path subsystem, method and device utilizing memory sharing
US6847990B2 (en) Data transfer unit with support for multiple coherency granules

Legal Events

Date Code Title Description
A201 Request for examination
E701 Decision to grant or registration of patent right
GRNT Written decision to grant