KR20230092227A - 멀티코어 프로세서 및 스토리지 장치 - Google Patents

멀티코어 프로세서 및 스토리지 장치 Download PDF

Info

Publication number
KR20230092227A
KR20230092227A KR1020210181443A KR20210181443A KR20230092227A KR 20230092227 A KR20230092227 A KR 20230092227A KR 1020210181443 A KR1020210181443 A KR 1020210181443A KR 20210181443 A KR20210181443 A KR 20210181443A KR 20230092227 A KR20230092227 A KR 20230092227A
Authority
KR
South Korea
Prior art keywords
memory
core
address
cores
memory area
Prior art date
Application number
KR1020210181443A
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 삼성전자주식회사
Priority to KR1020210181443A priority Critical patent/KR20230092227A/ko
Priority to US17/936,995 priority patent/US12019581B2/en
Priority to EP22212830.8A priority patent/EP4198746A3/en
Priority to CN202211629266.3A priority patent/CN116266146A/zh
Publication of KR20230092227A publication Critical patent/KR20230092227A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/546Message passing systems or structures, e.g. queues
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/80Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
    • 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/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • 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/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • 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/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • 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/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/0284Multiple user address space allocation, e.g. using different base addresses
    • 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/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/0292User address space allocation, e.g. contiguous or non contiguous base addressing using tables or multilevel address translation means
    • 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
    • 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/10Address translation
    • G06F12/1027Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
    • G06F12/1045Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] associated with a data cache
    • G06F12/1054Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] associated with a data cache the data cache being concurrently physically addressed
    • 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/1642Handling requests for interconnection or transfer for access to memory bus based on arbitration with request queuing
    • 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/1652Handling requests for interconnection or transfer for access to memory bus based on arbitration in a multiprocessor architecture
    • G06F13/1663Access to shared memory
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • G06F9/5044Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering hardware capabilities
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/544Buffers; Shared memory; Pipes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/68Details of translation look-aside buffer [TLB]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7201Logical to physical mapping or translation of blocks or pages
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7204Capacity control, e.g. partitioning, end-of-life degradation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7208Multiple device management, e.g. distributing data over multiple flash devices
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

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)
  • Software Systems (AREA)
  • Computing Systems (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Multi Processors (AREA)

Abstract

멀티코어 프로세서는, 복수의 코어들; 상기 복수의 코어들 간 메시지 전달을 위해 복수의 메모리 영역들을 포함하는 메시지 큐를 갖는 공유 메모리; 상기 복수의 코어들 중 대응하는 코어로부터 상기 복수의 메모리 영역들 중 기준 메모리 영역에 대응하는 정해진 범위의 어드레스들을 수신할 때마다, 상기 정해진 범위의 어드레스들에 상기 기준 메모리 영역의 액세스 카운트에 따라 결정되는 오프셋을 적용함으로써 상기 복수의 메모리 영역들이 순차적으로 액세스될 수 있도록 제어하는 복수의 어드레스 할당부들; 및 상기 복수의 코어들, 공유 메모리, 및 복수의 어드레스 할당부들을 연결하는 버스를 포함한다.

Description

멀티코어 프로세서 및 스토리지 장치 {MULTICORE PROCESSOR AND STORAGE DEVICE}
본 발명은 멀티코어 프로세서, 및 상기 멀티코어 프로세서를 포함하는 스토리지 장치에 관한 것이다.
최근 들어, 싱글코어 프로세서의 성능 향상의 한계 때문에 멀티코어 프로세서의 중요성이 부각되고 있다. 과거에는 프로세서의 성능 향상을 위하여 클럭 스피드를 통한 성능 향상에 관한 연구가 활발하였다. 그러나, 최근에는 프로세서에 포함되는 프로세싱 코어의 개수를 늘려서 성능을 향상시키는 멀티코어 프로세서에 관한 연구가 활발하게 진행되고 있다.
멀티코어 프로세서 장치는 인터 프로세서 통신(IPC: Inter Processor Communication)을 수행하기 위하여 공유 메모리를 포함한다. 즉, 하나의 코어는 다른 코어에 의해 처리될 데이터를 공유 메모리에 저장한다. 다른 코어는 공유 메모리에 저장된 데이터를 획득하여, 해당 데이터를 처리한다.
본 발명은 멀티코어 프로세서, 및 멀티코어 프로세서를 포함하는 스토리지 장치와 관련되는 구성들 및 동작들을 제공하고자 한다.
본 발명은 코어들이 공유 메모리에 신속하게 액세스함으로써 코어들 간 IPC를 신속하게 수행할 수 있도록 하는 멀티코어 프로세서를 제공하고자 한다.
본 발명의 실시 예에 따른 멀티코어 프로세서는, 복수의 코어들; 상기 복수의 코어들 간 메시지 전달을 위해 복수의 메모리 영역들을 포함하는 메시지 큐를 갖는 공유 메모리; 상기 복수의 코어들 중 대응하는 코어로부터 상기 복수의 메모리 영역들 중 기준 메모리 영역에 대응하는 정해진 범위의 어드레스들을 수신할 때마다, 상기 정해진 범위의 어드레스들에 상기 기준 메모리 영역의 액세스 카운트에 따라 결정되는 오프셋을 적용함으로써 상기 복수의 메모리 영역들이 순차적으로 액세스될 수 있도록 제어하는 복수의 어드레스 할당부들; 및 상기 복수의 코어들, 공유 메모리, 및 복수의 어드레스 할당부들을 연결하는 버스를 포함한다.
본 발명의 실시 예에 따른 멀티코어 프로세서는, IPC(Inter-Processor Communication)를 수행하는 제1 및 제2 코어; 상기 제1 및 제2 코어에 의해 공유되는 공유 메모리; 및 상기 제1 코어가 상기 공유 메모리에 액세스하기 위한 어드레스 연산을 수행하는 제1 어드레스 할당부를 포함하고, 상기 제1 코어는 상기 공유 메모리에 복수의 메모리 영역들을 포함하는 제1 메시지 큐를 요청하고, 상기 공유 메모리에 상기 제1 메시지 큐가 할당되면 상기 복수의 메모리 영역들 중 기준 메모리 영역에 대한 저장 명령을 복수의 메시지들에 대해 반복 수행하고, 상기 제1 어드레스 할당부는 상기 기준 메모리 영역에 대한 상기 제1 코어의 액세스 카운트에 기초하여 상기 복수의 메시지들이 상기 복수의 메모리 영역들에 순차적으로 저장될 수 있도록 상기 어드레스 연산을 수행한다.
본 발명의 실시 예에 따른 스토리지 장치는, 데이터를 저장하는 메모리 장치; 및 상기 메모리 장치를 제어하는 스토리지 컨트롤러를 포함하고, 상기 스토리지 컨트롤러는 복수의 코어들; 상기 복수의 코어들 간 메시지 전달을 위해 복수의 메시지 큐들을 갖는 공유 메모리; 및 상기 복수의 코어들이 상기 공유 메모리에 액세스할 수 있도록 어드레스 연산을 수행하는 복수의 어드레스 할당부들을 포함하고, 상기 복수의 어드레스 할당부들 중 하나는 상기 복수의 코어들 중 대응하는 코어로부터 상기 메시지 큐들 중 하나의 기준 메모리 영역에 대한 어드레스들이 수신되면, 상기 기준 메모리 영역의 액세스 카운트에 기초하여 상기 하나의 메시지 큐가 갖는 복수의 메모리 영역들에 순차적으로 액세스될 수 있도록 상기 어드레스 연산을 수행한다.
본 발명은 멀티코어 프로세서, 및 멀티코어 프로세서를 포함하는 스토리지 장치와 관련되는 구성들 및 동작들을 제공하고자 한다.
본 발명의 실시 예에 따르면, 멀티코어 프로세서에서 코어가 공유 메모리에 액세스할 때마다 수행되는 어드레스 연산을 코어와 별도로 제공되는 어드레스 할당부가 대신 수행할 수 있다. 따라서, 코어의 연산 부담이 감소하고 코어들이 공유 메모리에 신속하게 액세스할 수 있다.
본 발명의 실시 예에 따르면, 코어들 간 IPC가 신속하게 수행될 수 있으므로 멀티코어 프로세서의 성능이 향상되고, 멀티코어 프로세서를 포함하는 스토리지 장치의 데이터 처리 속도가 향상될 수 있다.
본 발명이 해결하려는 과제들은 이상에서 언급한 과제로 제한되지 않으며, 언급되지 않은 또 다른 과제들은 아래의 기재로부터 당업자에게 명확하게 이해될 수 있을 것이다.
도 1은 본 발명의 실시 예에 따른 멀티코어 프로세서를 나타내는 블록도이다.
도 2 및 도 3은 본 발명의 실시 예에 따른 멀티코어 프로세서의 인터 프로세서 통신(IPC: Inter Processor Communication) 동작을 설명하기 위한 블록도이다.
도 4는 본 발명의 실시 예에 따른 어드레스 할당부의 구조를 상세히 나타내는 블록도이다.
도 5는 본 발명의 실시 예에 따른 어드레스 할당부의 동작을 설명하기 위한 블록도이다.
도 6은 본 발명의 실시 예에 따른 멀티코어 프로세서의 IPC 동작 방법을 설명하기 위한 흐름도이다.
도 7 및 도 8은 본 발명의 실시 예에 따른 어드레스 할당부를 이용하여 복수의 코어들 간에 메시지를 주고받는 동작을 설명하기 위한 블록도이다.
도 9는 본 발명의 예시적인 실시 예에 따른 호스트-스토리지 시스템을 나타내는 블록도이다.
도 10은 본 발명의 실시 예에 따라 스토리지 컨트롤러에 포함될 수 있는 CPU의 구조를 상세히 나타내는 블록도이다.
도 11은 본 발명의 실시 예에 따른 스토리지 장치가 적용된 시스템을 도시한 도면이다.
이하, 첨부된 도면을 참조하여 본 발명의 바람직한 실시 예를 설명하기로 한다.
도 1은 본 발명의 실시 예에 따른 멀티코어 프로세서를 나타내는 블록도이다.
본 발명의 실시 예에 따른 멀티코어 프로세서는 둘 이상의 코어들을 포함할 수 있다. 도 1의 예에서, 멀티코어 프로세서(100)는 복수의 코어들(111, 112), 복수의 어드레스 할당부들(121, 122) 및 공유 메모리(130)를 포함할 수 있다. 복수의 코어들(111, 112), 복수의 어드레스 할당부들(121, 122) 및 공유 메모리(130)는 버스를 통해 서로 통신 가능하도록 연결될 수 있다.
복수의 코어들(111, 112)은 작업을 분할하여 수행할 수 있다. 이 경우, 복수의 코어들(111, 112)은 독립적으로 동작할 수 있다. 복수의 코어들(111, 112)이 하나의 작업을 함께 수행하기 위해서, 일련의 규칙에 따라 서로 데이터를 교환할 수 있다. 예를 들어, 제1 코어(111)는 제2 코어(112)가 어떤 동작을 수행할 것을 요청하기 위해 제2 코어(112)로 메시지를 제공할 수 있다. 복수의 코어들(111, 112) 간에 데이터를 송신 또는 수신하는 것은 인터 프로세서 통신(IPC: Inter Processor Communication)으로 지칭될 수 있다.
복수의 코어들(111, 112) 각각은 레지스터를 포함할 수 있다. 예를 들어, 복수의 코어들(111, 112) 각각의 레지스터에는 IPC에 의해 송신될 데이터 또는 IPC에 의해 수신된 데이터가 저장될 수 있다.
한편, 복수의 코어들(111 - 11n)은 동일한 종류의 코어일 수 있다. 즉, 도 1의 멀티코어 프로세서(100)는 대칭형 프로세서(SMP: Symmetric Multi-Processor) 구조일 수 있다. 예를 들어, 복수의 코어들(111, 112)은 ARM(Advanced RISC Machine) 코어들일 수 있으며, 복수의 코어들(111, 112) 각각은 할당된 작업을 인스트럭션 단위로 처리할 수 있다. 그러나, 본 발명은 이에 제한되지 않으며, 복수의 코어들(111, 112)은 서로 다른 종류의 프로세서일 수도 있다.
공유 메모리(130)는 복수의 코어들(111, 112)에 의해 공유될 수 있으며, 복수의 코어들(111, 112) 간의 데이터 전달을 지원할 수 있다. 예를 들어, 제1 코어(111)가 공유 메모리(130)에 데이터를 저장하면, 제2 코어(112)가 저장된 데이터를 공유 메모리(130)로부터 획득하고, 획득된 데이터를 처리할 수 있다.
복수의 코어들(111, 112) 각각은 메시지 큐 방식으로 다른 코어로 메시지를 전달할 수 있다. 예를 들어, 제1 코어(111)는 제2 코어(112)로 메시지를 전달하기 위해, 공유 메모리(130)에서 복수의 메모리 영역들을 포함하는 메시지 큐를 할당받을 수 있다. 그리고, 제1 코어(111)는 상기 복수의 메모리 영역들에 복수의 메시지들을 저장할 수 있다. 제2 코어(112)는 상기 복수의 메모리 영역들에 순차적으로 액세스함으로써 복수의 메시지들을 획득하고, 상기 메시지들을 처리할 수 있다.
복수의 메모리 영역들은 서로 다른 범위의 어드레스들을 가질 수 있다. 제1 및 제2 코어(111, 112)가 서로 다른 범위의 어드레스들을 갖는 복수의 메모리 영역들에 순차적으로 액세스하기 위해 매번 어드레스 연산을 수행해야 한다면, 제1 및 제2 코어(111, 112) 간 메시지 전달을 위한 연산 부담(overhead)이 증가할 수 있다. 연산 부담의 증가는, 멀티코어 프로세서(100)의 성능 저하를 야기할 수 있다.
본 발명의 실시 예에 따르면, 멀티코어 프로세서(100)는 복수의 코어들(111, 112) 각각의 어드레스 연산을 위한 복수의 어드레스 할당부들(121, 122)을 포함할 수 있다. 만약 제1 코어(111)가 상기 복수의 메모리 영역들 중 기준 메모리 영역에 대한 액세스 명령(instruction)을 반복 수행하면, 제1 어드레스 할당부(121)는 상기 복수의 메모리 영역들이 순차적으로 액세스될 수 있도록 어드레스 연산을 수행할 수 있다. 예를 들어, 제1 어드레스 할당부(121)는 상기 기준 메모리 영역의 액세스 카운트에 따라 결정되는 오프셋을 상기 기준 메모리 영역의 어드레스들에 적용함으로써 어드레스 변환을 수행함으로써 제1 코어(111)가 변환된 어드레스들이 가리키는 메모리 영역에 액세스하도록 제어할 수 있다.
본 발명의 실시 예에 따르면, 복수의 코어들(111, 112)은 동일한 메모리 영역에 액세스하는 명령을 반복 수행함으로써 복수의 메모리 영역들에 순차적으로 액세스할 수 있다. 따라서, 복수의 코어들(111, 112)의 복수의 메모리 영역들에 순차적으로 액세스하기 위해 매번 어드레스 연산을 수행해야 하는 부담이 감소될 수 있다. 예를 들어, 복수의 코어들(111, 112) 각각에서 어드레스 연산을 수행하기 위해 필요한 명령 사이클이 감소할 수 있다. 따라서, 멀티코어 프로세서(100)의 성능이 개선될 수 있다.
도 2 및 도 3은 본 발명의 실시 예에 따른 멀티코어 프로세서의 IPC 동작을 설명하기 위한 블록도이다.
도 2는 도 1을 참조하여 설명된 멀티코어 프로세서(100)에 포함되는 제1 및 제2 코어(111, 112), 제1 및 제2 어드레스 할당부(121, 122) 및 공유 메모리(130)를 도시한다. 도 2는 제1 코어(111)가 제2 코어(112)로 메시지를 전달하는 경우를 예로 들어 멀티코어 프로세서(100)의 IPC 동작을 설명한다.
공유 메모리(130)는 메시지 큐(131)를 포함할 수 있다. 메시지 큐(131)는 복수의 메모리 영역들(MR1 - MR8)을 포함할 수 있다. 예를 들어, 제1 코어(111)는 멀티코어 프로세서(100)의 초기화 시에 공유 메모리(130)에서 정해진 어드레스 범위를 갖는 메모리 영역들(MR1 - MR8)을 메시지 큐(131)로서 할당받을 수 있다.
복수의 메모리 영역들(MR1 - MR8) 각각은 서로 다른 범위의 어드레스들을 가질 수 있다. 예를 들어, 복수의 메모리 영역들(MR1 - MR8)은 서로 연속하는 범위의 어드레스들을 가질 수 있다. 그리고, 복수의 메모리 영역들(MR1 - MR8)은 서로 동일한 사이즈를 가질 수 있다.
제1 코어(111)는 제2 코어(112)로 전달하고자 하는 복수의 메시지들을 메시지 큐(131)로 제공할 수 있다. 구체적으로, 제1 코어(111)는 내부 레지스터에 저장된 메시지를 메시지 큐(131)에 저장하기 위한 저장 명령을 수행할 수 있다. 제1 코어(111)가 메시지를 메시지 큐(131)로 제공하는 동작은 푸시(push) 동작으로 지칭될 수도 있다.
제1 코어(111)로부터 푸시되는 메시지들은 메시지 큐(131)의 메모리 영역들(MR1 - MR8)에 순차적으로 저장할 수 있다. 즉, 메시지가 푸시될 때마다 메시지가 저장되는 메모리 영역의 어드레스들은 달라질 수 있다. 제1 코어(111)가 메시지를 푸시할 때마다 저장 명령을 수행하기 위한 어드레스를 변경해야 한다면 제1 코어(111)의 연산 부담이 증가할 수 있다. 예를 들어, 메시지 푸시를 위한 소스 코드를 컴파일하면, 제1 코어(111)에서 실제로 실행되어야 하는 명령들에는 어드레스 연산을 위한 위한 명령이 추가될 수 있으며, 결과적으로 명령 사이클의 수가 증가할 수 있다.
본 발명의 실시 예에 따르면, 제1 코어(111)는 메시지들을 푸시하기 위해 기준 메모리 영역에 대한 저장 명령을 반복 제공하고, 제1 어드레스 할당부(121)가 저장 명령의 반복 제공 횟수에 따라 메시지들이 복수의 메모리 영역들(MR1 - MR8)에 순차적으로 저장될 수 있도록 하는 어드레스 연산을 수행할 수 있다.
예를 들어, 기준 메모리 영역은 제1 메모리 영역(MR1)일 수 있으며, 제1 메모리 영역(MR1)은 복수의 메모리 영역들(MR1 - MR8) 중 가장 작은 값의 어드레스를 갖는 메모리 영역일 수 있다. 제1 어드레스 할당부(121)는 기준 메모리 영역에 대한 저장 명령이 제공될 때마다 기준 메모리 영역으로부터 정해진 오프셋을 갖는 메모리 영역에 액세스될 수 있도록 어드레스 연산을 수행할 수 있다.
제2 코어(112)는 공유 메모리(130)에 액세스하여 제1 코어(111)로부터 전달된 복수의 메시지들을 메시지 큐(131)로부터 획득할 수 있다. 구체적으로, 제2 코어(112)는 메시지 큐(131)에 저장된 메시지를 내부 레지스터로 로드하기 위한 로드 명령을 수행할 수 있다. 제2 코어(112)가 공유 메모리(130)에 액세스하여 메시지를 메시지 큐(131)로부터 획득하는 동작은 팝(pop) 동작으로 지칭될 수도 있다.
메시지 큐(131)의 메모리 영역들(MR1 - MR8)에 저장된 메시지들은 순차적으로 제2 코어(112)로 팝 될 수 있다. 즉, 메시지가 팝 될 때마다 메시지가 저장된 메모리 영역의 어드레스는 달라질 수 있다. 제2 코어(112)가 메시지를 팝 할 때마다 로드 명령을 수행하기 위한 어드레스를 변경해야 한다면 제2 코어(112)의 연산 부담이 증가할 수 있다.
본 발명의 실시 예에 따르면, 제2 코어(112)는 메시지들을 팝 하기 위해 기준 메모리 영역에 대한 로드 명령을 반복 제공하고, 제2 어드레스 할당부(122)가 저장 명령의 반복 제공 횟수에 따라 복수의 메모리 영역들(MR1 - MR8)로부터 메시지들을 순차적으로 획득할 수 있도록 어드레스 연산을 수행할 수 있다. 제2 어드레스 할당부(122)는 제1 어드레스 할당부(121)와 유사하게, 기준 메모리 영역에 대한 저장 명령이 제공될 때마다 기준 메모리 영역으로부터 반복 제공 횟수에 따라 정해지는 오프셋을 갖는 메모리 영역에 액세스될 수 있도록 어드레스 연산을 수행할 수 있다.
본 발명의 실시 예에 따르면, 제1 코어(111)와 제2 코어(112)가 메시지를 주고받을 때, 제1 코어(111)가 저장 명령을 제공하기 위한 연산 부담 및 제2 코어(112)가 로드 명령을 제공하기 위한 연산 부담이 감소할 수 있다. 예를 들어, 어드레스 연산을 위한 명령 사이클의 수가 감소할 수 있다. 따라서, 복수의 코어들(111, 112) 간 IPC 성능이 개선되고, 멀티코어 프로세서(100)의 데이터 처리 성능이 향상될 수 있다.
한편, 도 2는 메시지 큐(131)가 선형 큐로 구현된 경우를 예시하고 있으나, 본 발명은 이에 제한되지 않는다. 도 3은 원형 큐로 구현된 메시지 큐(132)를 예시한다.
도 3의 메시지 큐(132)는 복수의 메모리 영역들(MR1 - MR8)을 포함할 수 있다. 복수의 메모리 영역들(MR1 - MR8)은 연속하는 범위의 어드레스를 가질 수 있다. 도 3에서 음영이 도시된 영역은 메시지들이 저장되어 있는 메모리 영역을 나타낸다. 예를 들어, 메시지들이 순차적으로 푸시되어 제1 내지 제3 메모리 영역(MR1 - MR3)에 저장될 수 있다. 제1 내지 제3 메모리 영역(MR1 - MR3)에 저장된 메시지들은 순차적으로 팝 될 수 있다. 어떤 메모리 영역에 저장된 메시지가 팝 되면 해당 메시지는 상기 메모리 영역으로부터 제거될 수 있다.
메시지 큐(132)가 원형 큐인 경우, 메시지가 제8 메모리 영역(MR8)에 저장된 다음에, 다시 제1 메모리 영역(MR1)부터 순차적으로 메시지들이 저장될 수 있다.
본 발명의 실시 예에 따르면, 어드레스 할당부들(121, 122)은 코어들(111, 112)이 기준 메모리 영역에 대한 액세스 동작을 반복 수행하면, 상기 기준 메모리 영역에 대한 액세스 카운트에 기초하여 어드레스 변환을 수행할 수 있다. 따라서, 코어들(111, 112)이 복수의 메모리 영역들(MR1 - MR8)에 액세스하기 위해 매번 어드레스 연산을 수행하지 않더라도 코어들(111, 112)이 복수의 메모리 영역들(MR1 - MR8)에 순차적으로 액세스할 수 있다.
메시지 큐(132)가 원형 큐인 경우, 어드레스 할당부들(121, 122)은 액세스 카운트가 큐의 깊이(depth), 즉 메모리 영역의 개수와 동일해질 때마다 액세스 카운트를 초기화할 수 있다. 따라서, 코어들(111, 112)은 제8 메모리 영역(MR8)에 액세스한 다음에 다시 제1 메모리 영역(MR1)부터 순차적으로 액세스할 수 있다.
이하에서, 도 4 내지 도 6을 참조하여 본 발명의 실시 예에 따른 어드레스 할당부의 구조 및 동작이 상세히 설명된다.
도 4는 본 발명의 실시 예에 따른 어드레스 할당부의 구조를 상세히 나타내는 블록도이다.
도 4는 코어(110), 어드레스 할당부(120) 및 공유 메모리(130)를 도시한다. 코어(110)는 도 1을 참조하여 설명된 복수의 코어들(111, 112) 중 하나와 대응할 수 있다. 어드레스 할당부(120)는 도 1을 참조하여 설명된 복수의 어드레스 할당부들(121, 122) 중 하나와 대응할 수 있다. 공유 메모리(130)는 도 1을 참조하여 설명된 것과 대응할 수 있다.
어드레스 할당부(120)는 엔트리 인터페이스 회로(201), 사이즈 레지스터(202), 카운터 레지스터(203) 및 물리 어드레스 인터페이스 회로(204)를 포함할 수 있다.
엔트리 인터페이스 회로(201)는 코어(110)에서 실행되는 액세스 명령에 대응하는 어드레스들을 수신할 수 있다. 엔트리 인터페이스 회로(201)가 코어(110)로부터 수신하는 어드레스들은 도 2를 참조하여 설명된 기준 메모리 영역에 대응하는 정해진 범위의 어드레스들일 수 있다. 예를 들어, 코어(110)가 하나의 메시지를 푸시하기 위해서 코어(110)는 상기 정해진 범위의 어드레스들에 대해 순차적으로 저장 명령을 실행할 수 있으며, 엔트리 인터페이스 회로(201)는 상기 어드레스들을 순차적으로 수신할 수 있다.
사이즈 레지스터(202)는 메시지 큐에 포함되는 메모리 영역의 사이즈 정보를 저장할 수 있다. 그리고, 카운터 레지스터(203)는 코어(110)에서의 기준 메모리 영역의 액세스 카운트를 저장할 수 있다.
물리 어드레스 인터페이스 회로(204)는 엔트리 인터페이스 회로(201)로부터 수신된 어드레스를 코어(110)가 실제로 액세스하고자 하는 어드레스로 변환하는 어드레스 연산을 수행할 수 있다. 예를 들어, 물리 어드레스 인터페이스 회로(204)는 사이즈 레지스터(202)에 저장된 사이즈 정보 및 카운터 레지스터(203)에 저장된 액세스 카운트에 기초하여 엔트리 인터페이스 회로(201)로부터 수신된 어드레스를 변환할 수 있다.
물리 어드레스 인터페이스 회로(204)는, 어드레스 연산 결과에 따라, 공유 메모리(130)에서 기준 메모리 영역으로부터 상기 액세스 카운트에 따라 결정되는 오프셋을 갖는 메모리 영역에 액세스할 수 있다.
도 5는 본 발명의 실시 예에 따른 어드레스 할당부의 동작을 설명하기 위한 블록도이다.
도 5는 코어(110), 엔트리 인터페이스 회로(201), 사이즈 레지스터(202), 카운트 레지스터(203) 및 메시지 큐(131)를 도시한다. 코어(110), 엔트리 인트페이스 회로(201), 사이즈 레지스터(202) 및 카운트 레지스터(203)는 도 4를 참조하여 설명된 것들에 대응할 수 있다. 메시지 큐(131)는 도 2를 참조하여 설명된 것에 대응할 수 있다.
도 2 및 도 3을 참조하여 설명된 것과 같이, 공유 메모리(130)에는 코어들 간 메시지를 전달하기 위한 복수의 메모리 영역들(MR1 - MR8)을 갖는 메시지 큐(131)가 할당될 수 있다. 도 5는 메모리 영역들(MR1 - MR8) 각각의 물리 어드레스들을 예시한다. 메모리 영역들(MR1 - MR8) 각각은 32바이트(0x20)의 사이즈를 가질 수 있다. 제1 메모리 영역(MR1)은 연속하는 8개의 어드레스들(0x20160000 - 0x2016001C)을 가질 수 있다. 제2 메모리 영역(MR2)은 제1 메모리 영역(MR1)에 연속하는 8개의 어드레스들(0x20160020 - 0x2016003C)을 가질 수 있다. 제3 내지 제8 메모리 영역들(MR3 - MR8)도 마찬가지로, 서로 연속하는 어드레스들을 가질 수 있다.
복수의 메모리 영역들(MR1 - MR8) 중 가장 작은 값의 어드레스를 갖는 제1 메모리 영역(MR1)이 기준 메모리 영역이 될 수 있다. 코어(110)는 제1 메모리 영역(MR1)에 해당하는 8개의 어드레스들(0x20160000 - 0x2016001C)을 이용하여 복수의 메모리 영역들(MR1 - MR8)에 순차적으로 액세스할 수 있다.
예를 들어, 코어(110)가 메시지 큐(131)에 메시지를 두 번 저장한 후에 세 번째로 메시지를 저장할 때는 제3 메모리 영역(MR3)에 메시지가 저장되어야 할 수 있다. 코어(110)는 세 번째로 메시지를 저장하는 경우에도 기준 메모리 영역인 제1 메모리 영역(MR1)에 해당하는 8개의 어드레스들(0x20160000 - 0x2016001C)에 대한 저장 명령을 실행할 수 있다.
엔트리 인터페이스 회로(201)는 코어(110)로부터 8개의 어드레스들(0x20160000 - 0x2016001C)을 순차적으로 수신할 수 있다. 사이즈 레지스터(202)는 메모리 영역의 사이즈인 '0x20'을 저장할 수 있으며, 카운터 레지스터(203)는 기준 메모리 영역이 현재까지 액세스된 횟수인 '2'를 저장할 수 있다.
어드레스 할당부(120)는 엔트리 인터페이스 회로(201)가 수신한 어드레스를 메모리 영역의 사이즈에 액세스 횟수를 곱한 값만큼의 오프셋을 갖는 어드레스로 변환할 수 있다. 예를 들어, 코어(110)로부터 어드레스 '0x2016000C'가 수신된 경우, 어드레스 할당부(120)는 '0x20'에 2를 곱한 '0x40'을 '0x2016000C'에 더함으로써, 어드레스 '0x2016000C'를 어드레스 '0x2016004C'로 변환할 수 있다.
엔트리 인터페이스 회로(201)가 제1 메모리 영역(MR1)에 해당하는 8개의 어드레스들(0x20160000 - 0x2016001C)을 순차적으로 수신한 경우, 메시지 큐(131)에서 8개의 어드레스들 각각으로부터 '0x40'의 오프셋을 갖는 어드레스들(0x20160040 - 0x2016005C)에 해당하는 제3 메모리 영역(MR3)이 액세스될 수 있다.
도 6은 본 발명의 실시 예에 따른 멀티코어 프로세서의 IPC 동작 방법을 설명하기 위한 흐름도이다.
단계 S11에서, 어드레스 할당부(120)는 사이즈 레지스터(202)에 메모리 영역의 사이즈 정보를 세팅하고, 카운트 레지스터(203)에서 액세스 카운트를 초기화할 수 있다.
단계 S12에서, 코어(110)는 기준 메모리 영역에 액세스할 수 있다. 제1 예로, 코어(110)는 공유 메모리(130)에 메시지를 저장하기 위해, 기준 메모리 영역에 포함되는 어드레스들에 대한 저장 명령들을 순차적으로 실행할 수 있다. 제2 예로, 코어(110)는 공유 메모리(130)로부터 메시지를 획득하기 위해, 기준 메모리 영역에 포함되는 어드레스들에 대한 로드 명령들을 순차적으로 실행할 수 있다.
단계 S13에서, 어드레스 할당부(120)는 카운터 레지스터(203)의 액세스 카운트를 업데이트할 수 있다.
단계 S14에서, 코어(110)는 IPC를 완료할지 여부를 판단할 수 있다. 즉, 코어(110)는 다른 코어로 전달하고자 하는 메시지들을 모두 전달하였는지, 혹은 공유 메모리(130)의 메모리 영역들에 저장된 메시지들을 모두 획득하였는지 여부를 판단할 수 있다.
IPC를 완료하기로 결정된 경우(단계 S14에서, "YES"), 멀티코어 프로세서(100)는 IPC를 종료할 수 있다.
IPC를 완료하지 않는 경우(단계 S14에서, "NO"), 멀티코어 프로세서(100)는 단계 S12 및 단계 S13을 반복할 수 있다.
예를 들어, 단계 S12에서 코어(110)는 기준 메모리 영역에 다시 액세스할 수 있다. 어드레스 할당부(120)는 업데이트된 액세스 카운트에 기초하여, 기준 메모리 영역으로부터 오프셋을 갖는 메모리 영역에 액세스될 수 있도록 어드레스 변환을 수행할 수 있다. 그리고, 단계 S13에서 액세스 카운트를 다시 업데이트할 수 있다.
도 7 및 도 8은 본 발명의 실시 예에 따른 어드레스 할당부를 이용하여 제1 및 제2 코어(111, 112) 간에 메시지를 주고받는 동작을 설명하기 위한 블록도이다.
도 7은 멀티코어 프로세서(100)를 도시한다. 도 7의 멀티코어 프로세서(100)는 도 1을 참조하여 설명된 멀티코어 프로세서(100)와 동일한 구성들을 포함할 수 있으며, SFR(Special Function Register, 140)을 더 포함할 수 있다. SFR(140)은 복수의 코어들(111, 112)의 동작을 제어하기 위한 설정 값들을 저장하는 레지스터일 수 있다. 도 7의 예에서, SFR(140)은 복수의 코어들(111, 112)에 의해 공유될 수 있다. 그러나, 본 발명이 이에 제한되는 것은 아니다.
도 7에는 어드레스 할당부들(121, 122)을 통해 제1 코어(111)가 제2 코어(112)로 메시지를 전달하는 동작의 흐름이 도시된다.
단계 S21에서, 제1 코어(111)는 공유 메모리(130)에서 복수의 메모리 영역들을 포함하는 메시지 큐를 할당받을 수 있다. 예를 들어, 제1 코어(111)는 멀티코어 프로세서(100)의 초기화 시에 메시지 큐를 할당받을 수 있다. 그리고, 제1 코어(111)는 메시지 큐에 포함되는 기준 메모리 영역의 어드레스 정보 및 메모리 영역들의 사이즈 정보를 SFR(140)에 저장할 수 있다.
단계 S22에서, 제1 코어(111)는 제1 어드레스 할당부(121)를 통해 공유 메모리(130)의 복수의 메모리 영역들에 복수의 메시지들을 순차적으로 저장할 수 있다. 도 4 내지 도 6을 참조하여 설명된 것과 같이, 제1 코어(111)는 복수의 메시지들을 순차적으로 저장하기 위해, 기준 메모리 영역에 대한 액세스를 반복 수행할 수 있다. 제1 어드레스 할당부(121)가 상기 기준 메모리 영역으로부터, 액세스 카운트 및 메모리 영역의 사이즈에 따라 정해지는 오프셋을 갖는 메모리 영역에 메시지가 저장될 수 있도록 어드레스 변환을 수행할 수 있다. 결과적으로, 공유 메모리(130)의 복수의 메모리 영역들에 복수의 메시지들이 순차적으로 저장될 수 있다.
단계 S23에서, 제1 코어(111)는 공유 메모리(130)에 메시지들이 저장되었다는 것을 알리기 위한 인터럽트 신호를 제2 코어(112)로 제공할 수 있다.
단계 S24에서, 제2 코어(112)는 SFR(140)에 액세스함으로써 공유 메모리(130)에 할당된 메시지 큐의 기준 메모리 영역의 어드레스와 메모리 영역의 사이즈 정보를 획득할 수 있다.
단계 S25에서, 제2 코어(112)는 제2 어드레스 할당부(122)를 통해 공유 메모리(130)의 복수의 메모리 영역들로부터 복수의 메시지들을 순차적으로 획득할 수 있다.
도 4 내지 도 6을 참조하여 설명된 바와 같이, 제2 코어(112)는 복수의 메시지들을 순차적으로 획득하기 위해, 기준 메모리 영역에 대한 액세스를 반복 수행할 수 있다. 제2 어드레스 할당부(122)는 상기 기준 메모리 영역으로부터, 액세스 카운트 및 메모리 영역의 사이즈에 따라 정해지는 오프셋을 갖는 메모리 영역으로부터 메시지를 로드할 수 있도록 어드레스 변환을 수행할 수 있다. 결과적으로, 공유 메모리(130)의 복수의 메모리 영역들로부터 복수의 메시지들이 순차적으로 획득될 수 있다.
도 8은 도 7을 참조하여 설명된 것과 같은 멀티코어 프로세서(100)를 도시한다. 도 8을 참조하면, 공유 메모리(130)에는 복수의 메시지 큐들(133, 134)이 할당될 수 있다. 제1 메시지 큐(133)는 제1 코어(111)로부터의 메시지를 제2 코어(112)로 전달하기 위한 메시지 큐일 수 있으며, 제2 메시지 큐(134)는 제2 코어(112)로부터의 메시지를 제1 코어(111)로 전달하기 위한 메시지 큐일 수 있다. 복수의 메시지 큐들(133, 134) 각각은 서로 다른 어드레스를 갖는 기준 메모리 영역을 포함할 수 있다.
단계 S31 및 단계 S32는 제1 코어(111)가 제2 코어(112)로 메시지를 전달하는 동작의 흐름을 나타낸다. 단계 S31에서, 제1 코어(111)가 제1 어드레스 할당부(121)를 이용하여 제1 메시지 큐(133)에 복수의 메시지들을 순차적으로 저장할 수 있다. 그리고, 단계 S32에서 제2 코어(112)가 제2 어드레스 할당부(122)를 이용하여 제1 메시지 큐(133)로부터 복수의 메시지들을 순차적으로 획득할 수 있다.
본 발명의 실시 예에 따르면, 제1 및 제2 코어(111, 112)는 제1 메시지 큐(133)의 기준 메모리 영역에 대한 액세스를 반복 수행하면 제1 및 제2 어드레스 할당부(121, 122)가 어드레스 연산을 수행함으로써 제1 및 제2 코어(111, 112)가 제1 메시지 큐(133)의 메모리 영역들에 순차적으로 액세스하도록 제어할 수 있다.
단계 S33 및 단계 S34는 제2 코어(112)가 제1 코어(111)로 메시지를 전달하는 동작의 흐름을 나타낸다. 단계 S33에서, 제2 코어(112)가 제2 어드레스 할당부(122)를 이용하여 제2 메시지 큐(134)에 복수의 메시지들을 순차적으로 저장할 수 있다. 그리고, 단계 S34에서 제1 코어(111)가 제1 어드레스 할당부(121)를 이용하여 제2 메시지 큐(134)로부터 복수의 메시지들을 순차적으로 획득할 수 있다.
본 발명의 실시 예에 따르면, 제1 및 제2 코어(111, 112)는 제2 메시지 큐(134)의 기준 메모리 영역에 대한 액세스를 반복 수행하면 제1 및 제2 어드레스 할당부(121, 122)가 어드레스 연산을 수행함으로써 제1 및 제2 코어(111, 112)가 제1 메시지 큐(133)의 메모리 영역들에 순차적으로 액세스하도록 제어할 수 있다.
본 발명의 실시 예에 따르면, 제1 및 제2 코어(111, 112)가 공유 메모리(130)의 복수의 메모리 영역들에 순차적으로 액세스하기 위한 어드레스 연산 부담이 감소할 수 있다. 따라서, 멀티코어 프로세서(100)에서 IPC 성능이 개선될 수 있다.
이하에서, 도 9 내지 도 11을 참조하여 본 발명이 적용될 수 있는 시스템의 예가 설명된다.
도 9는 본 발명의 예시적인 실시 예에 따른 호스트-스토리지 시스템을 나타내는 블록도이다.
호스트-스토리지 시스템(30)은 호스트(300) 및 스토리지 장치(400)를 포함할 수 있다. 또한, 스토리지 장치(400)는 스토리지 컨트롤러(410) 및 비휘발성 메모리(NVM)(420)를 포함할 수 있다.
호스트(300)는 전자 장치, 예를 들어 휴대폰, MP3 플레이어, 랩탑 컴퓨터 등과 같은 휴대용 전자 장치들, 또는 데스크탑 컴퓨터, 게임기, TV, 프로젝터 등과 같은 전자 장치들을 포함할 수 있다. 호스트(300)는 적어도 하나의 운영 체제(OS: operating system)를 포함할 수 있다. 운영 체제는 호스트(300)의 기능 및 동작을 전반적으로 관리 및 제어할 수 있다.
스토리지 장치(400)는 호스트(300)로부터의 요청에 따라 데이터를 저장하기 위한 저장 매체들을 포함할 수 있다. 일 예로서, 스토리지 장치(400)는 SSD(Solid State Drive), 임베디드(embedded) 메모리 및 착탈 가능한 외장(external) 메모리 중 적어도 하나를 포함할 수 있다. 스토리지 장치(400)가 SSD인 경우, 스토리지 장치(400)는 NVMe(non-volatile memory express) 표준을 따르는 장치일 수 있다. 스토리지 장치(400)가 임베디드 메모리 혹은 외장(external) 메모리인 경우, 스토리지 장치(400)는 UFS(universal flash storage) 혹은 eMMC(embedded multi-media card) 표준을 따르는 장치일 수 있다. 호스트(300)와 스토리지 장치(400)는 각각 채용된 표준 프로토콜에 따른 패킷을 생성하고 이를 전송할 수 있다.
비휘발성 메모리(420)는 전원이 공급되지 않아도 저장된 데이터를 유지할 수 있다. 비휘발성 메모리(420)는 프로그램 동작을 통해 호스트(300)로부터 제공된 데이터를 저장할 수 있고, 리드 동작을 통해 비휘발성 메모리(420)에 저장된 데이터를 출력할 수 있다.
비휘발성 메모리(420)가 플래시 메모리를 포함할 때, 상기 플래시 메모리는 2D NAND 메모리 어레이나 3D(또는 수직형, Vertical) NAND(VNAND) 메모리 어레이를 포함할 수 있다. 다른 예로서, 스토리지 장치(400)는 다른 다양한 종류의 비휘발성 메모리들을 포함할 수도 있다. 예를 들어, 스토리지 장치(400)에는 MRAM(Magnetic RAM), 스핀전달토크 MRAM(Spin-Transfer Torgue MRAM), Conductive bridging RAM(CBRAM), FeRAM(Ferroelectric RAM), PRAM(Phase RAM), 저항 메모리(Resistive RAM) 및 다른 다양한 종류의 메모리가 적용될 수 있다.
스토리지 컨트롤러(410)는 호스트(300)로부터의 요청에 응답하여 비휘발성 메모리(420)를 제어할 수 있다. 예를 들어, 스토리지 컨트롤러(410)는 비휘발성 메모리(420)로부터 리드된 데이터를 호스트(300)로 제공하고, 호스트(300)로부터 제공된 데이터를 비휘발성 메모리(420)에 저장할 수 있다. 이러한 동작을 위해, 스토리지 컨트롤러(410)는 비휘발성 메모리(420)의 리드(read), 프로그램(program), 이레이즈(erase) 등의 동작을 지원할 수 있다.
스토리지 컨트롤러(410)는 호스트 인터페이스(411), 메모리 인터페이스(412) 및 CPU(central processing unit)(413)를 포함할 수 있다. 또한, 스토리지 컨트롤러(410)는 패킷 매니저(415), 버퍼 메모리(416), ECC(error correction code)(417) 엔진 및 AES(advanced encryption standard) 엔진(418)을 더 포함할 수 있다. 스토리지 컨트롤러(410)는 CPU(413)에 의해 실행되는 펌웨어가 로딩되는 워킹 메모리(미도시)를 더 포함할 수 있으며, CPU(413)가 펌웨어를 실행하는 것에 의해 비휘발성 메모리(420)에 대한 데이터 기록 및 독출 동작이 제어될 수 있다.
호스트 인터페이스(411)는 호스트(300)와 패킷(packet)을 송수신할 수 있다. 호스트(300)로부터 호스트 인터페이스(411)로 전송되는 패킷은 커맨드(command) 혹은 비휘발성 메모리(420)에 기록될 데이터 등을 포함할 수 있으며, 호스트 인터페이스(411)로부터 호스트(300)로 전송되는 패킷은 커맨드에 대한 응답(response) 혹은 비휘발성 메모리(420)로부터 독출된 데이터 등을 포함할 수 있다.
메모리 인터페이스(412)는 비휘발성 메모리(420)에 기록될 데이터를 비휘발성 메모리(420)로 송신하거나, 비휘발성 메모리(420)로부터 독출된 데이터를 수신할 수 있다. 이러한 메모리 인터페이스(412)는 토글(Toggle) 혹은 온파이(Open NAND Flash Interface; ONFI)와 같은 표준 규약을 준수하도록 구현될 수 있다.
패킷 매니저(415)는 호스트(300)와 협의된 인터페이스의 프로토콜에 따른 패킷(Packet)을 생성하거나, 호스트(300)로부터 수신된 패킷(Packet)으로부터 각종 정보를 파싱할 수 있다. 또한, 버퍼 메모리(416)는 비휘발성 메모리(420)에 기록될 데이터 혹은 비휘발성 메모리(420)로부터 독출될 데이터를 임시로 저장할 수 있다. 버퍼 메모리(416)는 스토리지 컨트롤러(410) 내에 구비되는 구성일 수 있으나, 스토리지 컨트롤러(410)의 외부에 배치되어도 무방하다.
ECC 엔진(417)은 비휘발성 메모리(420)로부터 독출되는 독출 데이터에 대한 오류 검출 및 정정 기능을 수행할 수 있다. 보다 구체적으로, ECC 엔진(417)은 비휘발성 메모리(420)에 기입될 기입 데이터에 대하여 패리티 비트(parity bit)들을 생성할 수 있으며, 이와 같이 생성된 패리티 비트들은 기입 데이터와 함께 비휘발성 메모리(420) 내에 저장될 수 있다. 비휘발성 메모리(420)로부터의 데이터 독출 시, ECC 엔진(417)은 독출 데이터와 함께 비휘발성 메모리(420)로부터 독출되는 패리티 비트들을 이용하여 독출 데이터의 에러를 정정하고, 에러가 정정된 독출 데이터를 출력할 수 있다.
AES 엔진(418)은, 스토리지 컨트롤러(410)로 입력되는 데이터에 대한 암호화(encryption) 동작과 복호화(decryption) 동작 중 적어도 하나를, 대칭 키 알고리즘(symmetric-key algorithm)를 이용하여 수행할 수 있다.
한편, CPU(413)는 복수의 코어들을 포함하는 멀티코어 프로세서로 구현될 수 있다. 스토리지 컨트롤러(410)는 HIL(Host Interface Layer), FTL(Flash Translation Layer), FIL(Flash Interface Layer) 등의 복수의 소프트웨어 계층구조를 가질 수 있다. 복수의 코어들 각각은 HIL, FTL 및 FIL의 동작을 나누어 수행할 수 있으며. 복수의 코어들 간에 메시지를 주고받음으로써 계층 간 통신이 수행될 수 있다. 이하에서, 본 발명의 실시 예에 따라 스토리지 컨트롤러에서 소프트웨어 계층 간 통신을 수행하는 방법이 상세히 설명된다.
도 10은 본 발명의 실시 예에 따라 스토리지 컨트롤러에 포함될 수 있는 CPU의 구조를 상세히 나타내는 블록도이다.
도 10을 참조하면, CPU(413)는 복수의 코어들(431, 432, 433), 복수의 어드레스 할당부들(441, 442, 443), 공유 메모리(450) 및 SFR(460)을 포함할 수 있다.
복수의 코어들(431, 432, 433)은 각각 HIL을 구동하는 HIL 코어(431), FTL을 구동하는 FTL 코어(432), FIL을 구동하는 FIL 코어(433)를 포함할 수 있다.
복수의 코어들(431, 432, 433)은 하나의 액세스 커맨드를 처리하기 위해 필요한 서로 다른 작업들을 나누어 수행할 수 있다. 예를 들어, HIL 코어(431)는 호스트 인터페이스(411)를 제어하고, 호스트(300)로부터의 액세스 커맨드를 처리할 수 있다. FTL 코어(432)는 호스트(300)로부터 제공되는 논리 어드레스와 비휘발성 메모리(420)의 물리 어드레스 간의 어드레스 매핑을 수행할 수 있다. 그리고, FIL 코어(433)는 비휘발성 메모리(420)에 대한 리드 동작 및 라이트 동작을 관리할 수 있다.
복수의 코어들(431, 432, 433)이 하나의 입출력 커맨드를 처리하기 위해 작업들을 나누어 수행하는 경우, CPU(413)에서 IPC가 수행될 수 있다. 즉, 복수의 코어들(431, 432, 433) 간에 메시지 교환이 이루어질 수 있다.
공유 메모리(450)는 복수의 코어들(431, 432, 433)에 의해 공유되는 메시지 큐를 가질 수 있으며, 복수의 코어들(431, 432, 433) 간의 메시지 전달을 지원할 수 있다. 도 10의 예에서, 공유 메모리(450)는 제1 및 제2 메시지 큐(451, 452)를 포함할 수 있다.
예를 들어, HIL 코어(431)가 복수의 메시지들을 메시지 큐에 포함된 복수의 메모리 영역들에 순차적으로 저장하면, FTL 코어(432)는 상기 복수의 메모리 영역들에 순차적으로 액세스하여 상기 복수의 메시지들을 획득할 수 있다.
복수의 코어들(431, 432, 433)이 복수의 메모리 영역들에 순차적으로 액세스하기 위해 매번 어드레스 연산을 수행해야 한다면 CPU(413)의 IPC 성능이 저하될 수 있다. 스토리지 장치(400)의 액세스 성능이 향상되기 위해서는, CPU(413)의 IPC 성능이 향상될 것이 요구된다.
본 발명의 실시 예에 따르면, 복수의 어드레스 할당부들(441, 442, 443)은 복수의 코어들(431, 432, 433)이 메시지를 신속하게 주고받을 수 있도록 어드레스 연산을 수행할 수 있다. 복수의 코어들(431, 432, 433)이 메시지 큐에 포함된 복수의 메모리 영역들 중 기준 메모리 영역의 정해진 어드레스들에 대한 액세스 동작을 반복적으로 수행하면, 복수의 어드레스 할당부들(441, 442, 443)은 어드레스 연산을 수행함으로써 복수의 코어들(431, 432, 433)이 상기 메시지 큐에 포함된 복수의 메모리 영역들에 순차적으로 액세스할 수 있도록 지원할 수 있다. 예를 들어, 복수의 어드레스 할당부들(441, 442, 443) 각각은 각 메시지 큐의 기준 메모리 영역에 대한 액세스 카운트에 기초하여, 기준 메모리 영역으로부터 정해진 오프셋을 갖는 메모리 영역이 액세스되도록 어드레스 연산을 수행할 수 있다.
SFR(460)은 복수의 코어들(431, 432, 433)의 동작을 제어하기 위한 설정 값들을 저장할 수 있다. 예를 들어, SFR(460)은 제1 및 제2 메시지 큐(451, 452) 각각의 기준 메모리 영역의 어드레스 정보 및 메모리 영역의 사이즈 정보 등을 저장할 수 있다. 구현에 따라, SFR(460)은 복수의 코어들(431, 432, 433)에 의해 공유될 수 있으며, 복수의 코어들(431, 432, 433)은 SFR(460)에 액세스함으로써 메시지 큐에 대한 정보를 공유할 수 있다.
본 발명의 실시 예에 따르면, CPU(413)의 IPC 성능이 향상될 수 있으므로, 스토리지 장치(400)의 데이터 처리 성능도 향상될 수 있다.
예를 들어, 호스트 인터페이스(411)가 호스트(300)로부터 액세스 커맨드와 논리 주소를 수신하면, HIL 코어(431)는 상기 논리 어드레스를 물리 어드레스로 변환하도록 요청하는 복수의 제1 메시지들을 생성하고, 제1 메시지 큐(451)의 기준 메모리 영역에 대한 저장 명령을 상기 복수의 제1 메시지들에 대해 반복 수행할 수 있다. 제1 어드레스 할당부(441)는 제1 메시지 큐(451)의 기준 메모리 영역에 대한 HIL 코어(431)의 액세스 카운트에 기초하여, 상기 복수의 제1 메시지들이 제1 메시지 큐(451)에 포함된 복수의 메모리 영역들에 순차적으로 저장될 수 있도록 어드레스 연산을 수행할 수 있다.
FTL 코어(432)는 제1 메시지 큐(451)의 기준 메모리 영역에 대한 로드 명령을 반복 수행할 수 있다. 제2 어드레스 할당부(442)는 제1 메시지 큐(451)의 기준 메모리 영역에 대한 FTL 코어(432)의 액세스 카운트에 기초하여 상기 복수의 제1 메시지들이 제1 메시지 큐(451)의 복수의 메모리 영역들로부터 순차적으로 출력될 수 있도록 어드레스 연산을 수행할 수 있다.
FTL 코어(432)는 상기 출력된 복수의 제1 메시지들에 응하여 상기 논리 어드레스를 물리 어드레스로 변환하고, 비휘발성 메모리(420)가 상기 물리 어드레스에 액세스할 수 있도록 하는 내부 커맨드를 생성하도록 요청하는 복수의 제2 메시지들을 생성할 수 있다. 그리고, FTL 코어(432)는 제2 메시지 큐(452)의 기준 메모리 영역에 대한 저장 명령을 상기 복수의 제2 메시지들에 대해 반복 수행할 수 있다. 제2 어드레스 할당부(442)는 제2 메시지 큐(452)의 기준 메모리 영역에 대한 FTL 코어(432)의 액세스 카운트에 기초하여, 상기 복수의 제2 메시지들이 제2 메시지 큐(452)가 갖는 복수의 메모리 영역들에 순차적으로 저장될 수 있도록 어드레스 연산을 수행할 수 있다.
FIL 코어(433)는 제2 메시지 큐(452)의 기준 메모리 영역에 대한 로드 명령을 반복 수행할 수 있다. 제3 어드레스 할당부(443)는 제2 메시지 큐(452)의 기준 메모리 영역에 대한 FIL 코어(433)의 액세스 카운트에 기초하여 상기 복수의 제2 메시지들이 제2 메시지 큐(452)의 복수의 메모리 영역들로부터 순차적으로 출력될 수 있도록 어드레스 연산을 수행할 수 있다. FIL 코어(433)는 상기 출력된 복수의 제2 메시지들에 응하여 비휘발성 메모리(420)가 상기 물리 어드레스에 액세스할 수 있도록 하는 내부 커맨드를 생성하고, 상기 내부 커맨드를 비휘발성 메모리(420)로 제공할 수 있다.
본 발명의 실시 예에 따르면, CPU(413)의 IPC 성능이 향상될 수 있으므로 복수의 코어들(431, 432, 433)이 호스트(300)로부터의 커맨드를 처리하기 위한 작업들을 신속하게 처리할 수 있다. 따라서, 스토리지 장치(400)의 데이터 처리 성능이 향상될 수 있다.
도 11은 본 발명의 실시 예에 따른 스토리지(storage) 장치가 적용된 시스템(1000)을 도시한 도면이다. 도 11의 시스템(1000)은 기본적으로 휴대용 통신 단말기(mobile phone), 스마트폰(smart phone), 태블릿 PC(tablet personal computer), 웨어러블 기기, 헬스케어 기기 또는 IOT(internet of things) 기기와 같은 모바일(mobile) 시스템일 수 있다. 하지만 도 11의 시스템(1000)은 반드시 모바일 시스템에 한정되는 것은 아니고, 개인용 컴퓨터(personal computer), 랩탑(laptop) 컴퓨터, 서버(server), 미디어 재생기(media player) 또는 내비게이션(navigation)과 같은 차량용 장비(automotive device) 등이 될 수도 있다.
도 11을 참조하면, 시스템(1000)은 메인 프로세서(main processor)(1100), 메모리(1200a, 1200b) 및 스토리지 장치(1300a, 1300b)를 포함할 수 있으며, 추가로 촬영 장치(image capturing device)(1410), 사용자 입력 장치(user input device)(1420), 센서(1430), 통신 장치(1440), 디스플레이(1450), 스피커(1460), 전력 공급 장치(power supplying device)(1470) 및 연결 인터페이스(connecting interface)(1480) 중 하나 이상을 포함할 수 있다.
메인 프로세서(1100)는 시스템(1000)의 전반적인 동작, 보다 구체적으로는 시스템(1000)을 이루는 다른 구성 요소들의 동작을 제어할 수 있다. 이와 같은 메인 프로세서(1100)는 범용 프로세서, 전용 프로세서 또는 애플리케이션 프로세서(application processor) 등으로 구현될 수 있다.
메인 프로세서(1100)는 하나 이상의 CPU 코어(1110)를 포함할 수 있으며, 메모리(1200a, 1200b) 및/또는 스토리지 장치(1300a, 1300b)를 제어하기 위한 컨트롤러(1120)를 더 포함할 수 있다. 실시 예에 따라서는, 메인 프로세서(1100)는 AI(artificial intelligence) 데이터 연산 등 고속 데이터 연산을 위한 전용 회로인 가속기(accelerator)(1130)를 더 포함할 수 있다. 이와 같은 가속기(1130)는 GPU(Graphics Processing Unit), NPU(Neural Processing Unit) 및/또는 DPU(Data Processing Unit) 등을 포함할 수 있으며, 메인 프로세서(1100)의 다른 구성 요소와는 물리적으로 독립된 별개의 칩(chip)으로 구현될 수도 있다.
구현에 따라, 메인 프로세서(1100)는 복수의 CPU 코어들을 포함하고, 복수의 CPU 코어들에 의해 공유되는 공유 메모리를 포함하는 멀티코어 프로세서로 구현될 수 있다. 복수의 CPU 코어들은 공유 메모리에 할당되는 메시지 큐를 이용하여 메시지를 주고받을 수 있다.
본 발명의 실시 예에 따르면, 메인 프로세서(1100)는 복수의 CPU 코어들에 대응하는 복수의 어드레스 할당부들을 더 포함할 수 있다. CPU 코어가 메시지 큐의 기준 메모리 영역에 반복 액세스하는 경우, 상기 CPU 코어에 대응하는 어드레스 할당부는 액세스 횟수에 기초하여 복수의 메모리 영역들에 순차적으로 액세스할 수 있다. CPU 코어가 메시지 큐에 복수의 메시지들을 저장할 때 어드레스 연산이 생략될 수 있으므로, CPU 코어들 간 메시지 전송 속도가 향상될 수 있다.
메모리(1200a, 1200b)는 시스템(1000)의 주기억 장치로 사용될 수 있으며, SRAM 및/또는 DRAM 등의 휘발성 메모리를 포함할 수 있으나, 플래시 메모리, PRAM 및/또는 RRAM 등의 비휘발성 메모리를 포함할 수도 있다. 메모리(1200a, 1200b)는 메인 프로세서(1100)와 동일한 패키지 내에 구현되는 것도 가능하다.
스토리지 장치(1300a, 1300b)는 전원 공급 여부와 관계 없이 데이터를 저장하는 비휘발성 저장 장치로서 기능할 수 있으며, 메모리(1200a, 1200b)에 비해 상대적으로 큰 저장 용량을 가질 수 있다. 스토리지 장치(1300a, 1300b)는 스토리지 컨트롤러(1310a, 1310b)와, 스토리지 컨트롤러(1310a, 1310b)의 제어 하에 데이터를 저장하는 비휘발성 메모리(non-volatile memory, NVM)(1320a, 1320b)를 포함할 수 있다. 비휘발성 메모리(1320a, 1320b)는 2D(2-dimensional) 구조 혹은 3D(3-dimensional) V-NAND(Vertical NAND) 구조의 플래시 메모리를 포함할 수 있으나, PRAM 및/또는 RRAM 등의 다른 종류의 비휘발성 메모리를 포함할 수도 있다.
스토리지 장치(1300a, 1300b)는 메인 프로세서(1100)와는 물리적으로 분리된 상태로 시스템(1000)에 포함될 수도 있고, 메인 프로세서(1100)와 동일한 패키지 내에 구현될 수도 있다. 또한, 스토리지 장치(1300a, 1300b)는 SSD(solid state device) 혹은 메모리 카드(memory card)와 같은 형태를 가짐으로써, 후술할 연결 인터페이스(1480)와 같은 인터페이스를 통해 시스템(1000)의 다른 구성 요소들과 탈부착 가능하도록 결합될 수도 있다. 이와 같은 스토리지 장치(1300a, 1300b)는 UFS(Universal Flash Storage), eMMC(embedded multi-media card) 혹은 NVMe(non-volatile memory express)와 같은 표준 규약이 적용되는 장치일 수 있으나, 반드시 이에 한정되는 건 아니다.
본 발명의 실시 예에 따르면, 스토리지 장치(1300a, 1300b)는 멀티코어 프로세서를 포함할 수 있다. 멀티코어 프로세서는 복수의 코어들, 상기 복수의 코어들 간 메시지 전달을 위해 복수의 메모리 영역들을 포함하는 공유 메모리 및 복수의 어드레스 할당부들을 포함할 수 있다. 복수의 어드레스 할당부들은, 상기 복수의 코어들 중 대응하는 코어가 상기 복수의 메모리 영역들 중 기준 메모리 영역에 대한 액세스를 반복 수행하면, 상기 액세스의 반복 수행 횟수에 따라 어드레스 변환을 수행함으로써 상기 대응하는 코어가 상기 복수의 메모리 영역들에 순차적으로 액세스할 수 있도록 제어할 수 있다. 본 발명의 실시 예에 따르면, 멀티코어 프로세서에서 IPC 성능이 향상될 수 있으며, 결과적으로 스토리지 장치(1300a, 1300b)의 데이터 처리 성능이 향상될 수 있다.
촬영 장치(1410)는 정지 영상 또는 동영상을 촬영할 수 있으며, 카메라(camera), 캠코더(camcorder) 및/또는 웹캠(webcam) 등일 수 있다.
사용자 입력 장치(1420)는 시스템(1000)의 사용자로부터 입력된 다양한 유형의 데이터를 수신할 수 있으며, 터치 패드(touch pad), 키패드(keyboard), 키보드(keyboard), 마우스(mouse) 및/또는 마이크(microphone) 등일 수 있다.
센서(1430)는 시스템(1000)의 외부로부터 획득될 수 있는 다양한 유형의 물리량을 감지하고, 감지된 물리량을 전기 신호로 변환할 수 있다. 이와 같은 센서(1430)는 온도 센서, 압력 센서, 조도 센서, 위치 센서, 가속도 센서, 바이오 센서(biosensor) 및/또는 자이로스코프(gyroscope) 센서 등일 수 있다.
통신 장치(1440)는 다양한 통신 규약에 따라 시스템(1000) 외부의 다른 장치들과의 사이에서 신호의 송신 및 수신을 수행할 수 있다. 이와 같은 통신 장치(1440)는 안테나, 트랜시버(transceiver) 및/또는 모뎀(MODEM) 등을 포함하여 구현될 수 있다.
디스플레이(1450) 및 스피커(1460)는 시스템(1000)의 사용자에게 각각 시각적 정보와 청각적 정보를 출력하는 출력 장치로 기능할 수 있다.
전력 공급 장치(1470)는 시스템(1000)에 내장된 배터리(도시 안함) 및/또는외부 전원으로부터 공급되는 전력을 적절히 변환하여 시스템(1000)의 각 구성 요소들에게 공급할 수 있다.
연결 인터페이스(1480)는 시스템(1000)과, 시스템(1000)에 연결되어 시스템(1000)과 데이터를 주고받을 수 있는 외부 장치 사이의 연결을 제공할 수 있다. 연결 인터페이스(1480)는 ATA(Advanced Technology Attachment), SATA(Serial ATA), e-SATA(external SATA), SCSI(Small Computer Small Interface), SAS(Serial Attached SCSI), PCI(Peripheral Component Interconnection), PCIe(PCI express), NVMe, IEEE 1394, USB(universal serial bus), SD(secure digital) 카드, MMC(multi-media card), eMMC, UFS, eUFS(embedded Universal Flash Storage), CF(compact flash) 카드 인터페이스 등과 같은 다양한 인터페이스 방식으로 구현될 수 있다.
본 발명은 상술한 실시형태 및 첨부된 도면에 의해 한정되는 것이 아니며 첨부된 청구범위에 의해 한정하고자 한다. 따라서, 청구범위에 기재된 본 발명의 기술적 사상을 벗어나지 않는 범위 내에서 당 기술분야의 통상의 지식을 가진 자에 의해 다양한 형태의 치환, 변형 및 변경이 가능할 것이며, 이 또한 본 발명의 범위에 속한다고 할 것이다.
100, 413: 멀티코어 프로세서
111, 112, 431, 432, 433: 코어
121, 122, 441, 442, 443: 어드레스 할당부
130, 450: 공유 메모리

Claims (10)

  1. 복수의 코어들;
    상기 복수의 코어들 간 메시지 전달을 위해 복수의 메모리 영역들을 포함하는 메시지 큐를 갖는 공유 메모리;
    상기 복수의 코어들 중 대응하는 코어로부터 상기 복수의 메모리 영역들 중 기준 메모리 영역에 대응하는 정해진 범위의 어드레스들을 수신할 때마다, 상기 정해진 범위의 어드레스들에 상기 기준 메모리 영역의 액세스 카운트에 따라 결정되는 오프셋을 적용함으로써 상기 복수의 메모리 영역들이 순차적으로 액세스될 수 있도록 제어하는 복수의 어드레스 할당부들; 및
    상기 복수의 코어들, 공유 메모리, 및 복수의 어드레스 할당부들을 연결하는 버스
    를 포함하는 멀티코어 프로세서.
  2. 제1항에 있어서,
    상기 복수의 메모리 영역들은 서로 동일한 사이즈를 갖고, 서로 연속하는 범위의 어드레스들을 갖는
    멀티코어 프로세서.
  3. 제2항에 있어서,
    상기 기준 메모리 영역은 상기 복수의 메모리 영역들 중 가장 작은 값의 어드레스들을 갖는
    멀티코어 프로세서.
  4. 제2항에 있어서,
    상기 복수의 어드레스 할당부들 각각은
    상기 대응하는 코어로부터 상기 정해진 범위의 어드레스들을 수신하는 엔트리 인터페이스 회로;
    상기 복수의 메모리 영역들 중 하나의 사이즈 정보를 저장하는 사이즈 레지스터;
    상기 액세스 카운트를 저장하는 카운터 레지스터; 및
    상기 사이즈 정보 및 상기 액세스 카운트에 기초하여 상기 오프셋을 결정하고, 상기 정해진 범위의 어드레스들 각각에 상기 오프셋을 적용함으로써 어드레스 변환을 수행하고, 변환된 어드레스들이 가리키는 메모리 영역에 액세스하는 물리 어드레스 인터페이스 회로를 포함하는
    멀티코어 프로세서.
  5. 제4항에 있어서,
    상기 물리 어드레스 인터페이스 회로는
    상기 어드레스들의 값에 상기 사이즈 정보 및 수신 횟수 정보를 곱한 값을 더함으로써 어드레스 변환을 수행하는
    멀티코어 프로세서.
  6. IPC(Inter-Processor Communication)를 수행하는 제1 및 제2 코어;
    상기 제1 및 제2 코어에 의해 공유되는 공유 메모리; 및
    상기 제1 코어가 상기 공유 메모리에 액세스하기 위한 어드레스 연산을 수행하는 제1 어드레스 할당부를 포함하고,
    상기 제1 코어는
    상기 공유 메모리에 복수의 메모리 영역들을 포함하는 제1 메시지 큐를 요청하고, 상기 공유 메모리에 상기 제1 메시지 큐가 할당되면 상기 복수의 메모리 영역들 중 기준 메모리 영역에 대한 저장 명령을 복수의 메시지들에 대해 반복 수행하고,
    상기 제1 어드레스 할당부는
    상기 기준 메모리 영역에 대한 상기 제1 코어의 액세스 카운트에 기초하여 상기 복수의 메시지들이 상기 복수의 메모리 영역들에 순차적으로 저장될 수 있도록 상기 어드레스 연산을 수행하는
    멀티코어 프로세서.
  7. 제6항에 있어서,
    상기 멀티코어 프로세서는
    상기 제2 코어가 상기 공유 메모리에 액세스하기 위한 어드레스 연산을 수행하는 제2 어드레스 할당부를 더 포함하고,
    상기 제2 코어는
    상기 기준 메모리 영역에 대한 로드 명령을 반복 수행하고,
    상기 제2 어드레스 할당부는
    상기 기준 메모리 영역에 대한 상기 제2 코어의 액세스 카운트에 기초하여 상기 복수의 메모리 영역들로부터 상기 복수의 메시지들이 순차적으로 획득될 수 있도록 상기 어드레스 연산을 수행하는
    멀티코어 프로세서.
  8. 제7항에 있어서,
    상기 멀티코어 프로세서는
    상기 기준 메모리 영역의 어드레스 정보를 저장하고 상기 제1 및 제2 코어에 의해 공유되는 SFR(Special Function Register)을 더 포함하는
    멀티코어 프로세서.
  9. 제7항에 있어서,
    상기 제2 코어는
    상기 공유 메모리에 제2 메시지 큐를 요청하고, 상기 공유 메모리에 상기 제1 메시지 큐와는 다른 어드레스들을 갖는 상기 제2 메시지 큐가 할당되면 상기 제2 메시지 큐의 기준 메모리 영역에 대한 저장 명령을 복수의 메시지들에 대해 반복 수행하는
    멀티코어 프로세서.
  10. 데이터를 저장하는 메모리 장치; 및
    상기 메모리 장치를 제어하는 스토리지 컨트롤러를 포함하고,
    상기 스토리지 컨트롤러는
    복수의 코어들;
    상기 복수의 코어들 간 메시지 전달을 위해 복수의 메시지 큐들을 갖는 공유 메모리; 및
    상기 복수의 코어들이 상기 공유 메모리에 액세스할 수 있도록 어드레스 연산을 수행하는 복수의 어드레스 할당부들을 포함하고,
    상기 복수의 어드레스 할당부들 중 하나는
    상기 복수의 코어들 중 대응하는 코어로부터 상기 메시지 큐들 중 하나의 기준 메모리 영역에 대한 어드레스들이 수신되면, 상기 기준 메모리 영역의 액세스 카운트에 기초하여 상기 하나의 메시지 큐가 갖는 복수의 메모리 영역들에 순차적으로 액세스될 수 있도록 상기 어드레스 연산을 수행하는
    스토리지 장치.

KR1020210181443A 2021-12-17 2021-12-17 멀티코어 프로세서 및 스토리지 장치 KR20230092227A (ko)

Priority Applications (4)

Application Number Priority Date Filing Date Title
KR1020210181443A KR20230092227A (ko) 2021-12-17 2021-12-17 멀티코어 프로세서 및 스토리지 장치
US17/936,995 US12019581B2 (en) 2021-12-17 2022-09-30 Multi-core processor and storage device
EP22212830.8A EP4198746A3 (en) 2021-12-17 2022-12-12 Multi-core processor and storage device
CN202211629266.3A CN116266146A (zh) 2021-12-17 2022-12-13 多核处理器和存储装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020210181443A KR20230092227A (ko) 2021-12-17 2021-12-17 멀티코어 프로세서 및 스토리지 장치

Publications (1)

Publication Number Publication Date
KR20230092227A true KR20230092227A (ko) 2023-06-26

Family

ID=84785007

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020210181443A KR20230092227A (ko) 2021-12-17 2021-12-17 멀티코어 프로세서 및 스토리지 장치

Country Status (3)

Country Link
EP (1) EP4198746A3 (ko)
KR (1) KR20230092227A (ko)
CN (1) CN116266146A (ko)

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7093037B2 (en) * 2003-09-22 2006-08-15 Emulex Design & Manufacturing Corporation Generalized queue and specialized register configuration for coordinating communications between tightly coupled processors
KR101226685B1 (ko) 2007-11-08 2013-01-25 삼성전자주식회사 수직형 반도체 소자 및 그 제조 방법.
US7908455B2 (en) * 2008-02-27 2011-03-15 Microchip Technology Incorporated Low overhead memory management system and method
KR101691092B1 (ko) 2010-08-26 2016-12-30 삼성전자주식회사 불휘발성 메모리 장치, 그것의 동작 방법, 그리고 그것을 포함하는 메모리 시스템
US8553466B2 (en) 2010-03-04 2013-10-08 Samsung Electronics Co., Ltd. Non-volatile memory device, erasing method thereof, and memory system including the same
US9536970B2 (en) 2010-03-26 2017-01-03 Samsung Electronics Co., Ltd. Three-dimensional semiconductor memory devices and methods of fabricating the same
KR101682666B1 (ko) 2010-08-11 2016-12-07 삼성전자주식회사 비휘발성 메모리 장치, 그것의 채널 부스팅 방법, 그것의 프로그램 방법 및 그것을 포함하는 메모리 시스템
US10740163B2 (en) * 2018-06-28 2020-08-11 Advanced Micro Devices, Inc. Network packet templating for GPU-initiated communication
CN111143235A (zh) * 2018-11-06 2020-05-12 爱思开海力士有限公司 多内核存储器系统中的逻辑地址分配

Also Published As

Publication number Publication date
CN116266146A (zh) 2023-06-20
EP4198746A2 (en) 2023-06-21
US20230195688A1 (en) 2023-06-22
EP4198746A3 (en) 2023-07-26

Similar Documents

Publication Publication Date Title
KR102367982B1 (ko) 데이터 저장 장치와 이를 포함하는 데이터 처리 시스템
US9164804B2 (en) Virtual memory module
US11645011B2 (en) Storage controller, computational storage device, and operational method of computational storage device
KR102655094B1 (ko) 메모리를 공유하는 이종의 프로세서들을 포함하는 스토리지 장치 및 그것의 동작 방법
KR20200025184A (ko) 불휘발성 메모리 장치, 이를 포함하는 데이터 저장 장치 및 그 동작 방법
US11907120B2 (en) Computing device for transceiving information via plurality of buses, and operating method of the computing device
US20190354483A1 (en) Controller and memory system including the same
KR20200001208A (ko) 융합형 반도체 장치 및 동작 방법, 이를 포함하는 적층형 메모리 장치
US20240086113A1 (en) Synchronous write method and device, storage system and electronic device
KR102434840B1 (ko) 데이터 저장 장치
US20230229357A1 (en) Storage controller, computational storage device, and operational method of computational storage device
US20220197510A1 (en) Storage device for executing processing code and operating method of the storage device
KR20230092227A (ko) 멀티코어 프로세서 및 스토리지 장치
US12019581B2 (en) Multi-core processor and storage device
CN115469800A (zh) 数据处理系统以及用于访问异构存储器系统的方法
EP4148572B1 (en) Computational storage device and storage system including the computational storage device
US11868270B2 (en) Storage system and storage device, and operating method thereof
US20240086110A1 (en) Data storage method, storage apparatus and host
KR20230067439A (ko) 보안 프로세서 및 이의 동작 방법과 이를 포함하는 스토리지 장치
KR20170012934A (ko) 객체-지향 데이터 저장 장치의 작동 방법과 상기 데이터 저장 장치를 포함하는 시스템의 작동 방법
CN116504289A (zh) 存储器件