KR20200066774A - 반도체 장치 - Google Patents

반도체 장치 Download PDF

Info

Publication number
KR20200066774A
KR20200066774A KR1020180153279A KR20180153279A KR20200066774A KR 20200066774 A KR20200066774 A KR 20200066774A KR 1020180153279 A KR1020180153279 A KR 1020180153279A KR 20180153279 A KR20180153279 A KR 20180153279A KR 20200066774 A KR20200066774 A KR 20200066774A
Authority
KR
South Korea
Prior art keywords
memory
memory unit
unit
data
processing unit
Prior art date
Application number
KR1020180153279A
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 KR1020180153279A priority Critical patent/KR20200066774A/ko
Priority to US16/526,452 priority patent/US11200165B2/en
Priority to TW108141473A priority patent/TW202022863A/zh
Priority to CN201911198888.3A priority patent/CN111258942A/zh
Publication of KR20200066774A publication Critical patent/KR20200066774A/ko
Priority to US17/545,797 priority patent/US11789865B2/en

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/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
    • 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/38Information transfer, e.g. on bus
    • G06F13/40Bus structure
    • G06F13/4063Device-to-bus coupling
    • G06F13/4068Electrical coupling
    • 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/38Information transfer, e.g. on bus
    • G06F13/40Bus structure
    • G06F13/4063Device-to-bus coupling
    • 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
    • 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/0866Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
    • G06F12/0868Data transfer between cache memory and other subsystems, e.g. storage devices or host systems
    • 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/1668Details of memory controller
    • 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/38Information transfer, e.g. on bus
    • G06F13/42Bus transfer protocol, e.g. handshake; Synchronisation
    • G06F13/4282Bus transfer protocol, e.g. handshake; Synchronisation on a serial bus, e.g. I2C bus, SPI bus
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0604Improving or facilitating administration, e.g. storage management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • 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/0811Multiuser, multiprocessor or multiprocessing cache systems with multilevel cache hierarchies
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/20Employing a main memory using a specific memory technology
    • G06F2212/202Non-volatile memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/25Using a specific main memory architecture
    • G06F2212/251Local memory within processor subsystem
    • G06F2212/2515Local memory within processor subsystem being configurable for different purposes, e.g. as cache or non-cache memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/45Caching of specific data in cache memory
    • G06F2212/454Vector or matrix data
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/60Details of cache memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Mathematical Physics (AREA)
  • Computer Hardware Design (AREA)
  • Biophysics (AREA)
  • Biomedical Technology (AREA)
  • Artificial Intelligence (AREA)
  • Computational Linguistics (AREA)
  • Data Mining & Analysis (AREA)
  • Evolutionary Computation (AREA)
  • General Health & Medical Sciences (AREA)
  • Molecular Biology (AREA)
  • Computing Systems (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Software Systems (AREA)
  • Health & Medical Sciences (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

반도체 장치가 제공된다. 반도체 장치는 제1 메모리 영역 및 제1 메모리 영역과 전기적으로 연결되는 제1 로직 영역을 포함하고, 제1 로직 영역은 캐시 메모리 및 캐시 메모리로의 데이터 송수신 동작을 수행하는 인터페이스 포트를 포함하는 제1 메모리부를 포함하되, 제1 메모리부는, 제1 인터페이스 포트를 통하여 제1 메모리부에 인접하는 메모리부와의 데이터 송수신 동작을 수행한다.

Description

반도체 장치{SEMICONDUCTOR DEVICE}
본 발명은 반도체 장치, 더욱 구체적으로는 인접하는 메모리 사이의 데이터 송수신을 통하여 프로세서의 처리 속도 및 정확도를 향상시키는 반도체 장치에 관한 것이다.
인공지능(Artificial Intelligence, AI) 시스템은 인간 수준의 지능을 구현하는 컴퓨터 시스템이며, 기존의 규칙 기반 스마트 시스템과 달리 기계가 스스로 학습하고 판단하며 스마트해지는 시스템이다. 인공지능 시스템은 사용할수록 인식률이 향상되고 사용자의 취향을 더욱 정확하게 이해할 수 있게 된다. 따라서, 기존의 규칙 기반 스마트 시스템은 점차 딥러닝 기반의 인공지능 시스템으로 대체되고 있다.
인공지능 기술은 기계학습(예를 들어, 딥러닝) 및 기계 학습을 활용한 요소 기술들로 구성된다. 기계 학습은 입력 데이터들의 특징을 스스로 분류하여 학습하는 알고리즘 기술이다. 요소 기술은 딥러닝 등의 기계학습 알고리즘을 활용하는 기술로서, 언어적 이해, 시각적 이해, 추론/예측, 지식 표현, 동작 제어 등의 기술 분야로 구성될 수 있다.
이러한 기계학습 알고리즘은 방대한 양의 데이터에 대한 연산이 필요하고, 동일 연산에서 처리할 수 있는 데이터가 많을 수록 연산의 정확도가 향상된다.
또한, 딥러닝을 이용하는 인공 신경망(Artificial Neural Network)은 대용량의 데이터를 이용하여 학습(Training)을 진행하고, 연산 속도를 높이기 위하여 복수개의 연산자(예를 들어, GPU)를 통해 병렬 연산(parallel operation)을 수행한다. 이 경우, 복수개의 연산자 사이에서 데이터의 송수신 등을 위한 통신이 필요한 경우가 빈번하게 발생한다.
본 발명이 해결하고자 하는 기술적 과제는 메모리 사이에서 수행되는 데이터 송수신을 통하여 프로세서의 처리 속도 및 정확도를 향상시키는 반도체 장치를 제공하는 것이다.
본 발명의 기술적 과제들은 위에서 언급한 기술적 과제로 제한되지 않으며, 언급되지 않은 또 다른 기술적 과제들은 아래의 기재로부터 해당 기술 분야의 통상의 기술자에게 명확하게 이해될 수 있을 것이다.
상기 기술적 과제를 달성하기 위한 본 발명의 일 실시예에 따른 반도체 장치는, 제1 메모리 영역 및 제1 메모리 영역과 전기적으로 연결되는 제1 로직 영역을 포함하고, 제1 로직 영역은 캐시 메모리 및 캐시 메모리로의 데이터 송수신 동작을 수행하는 인터페이스 포트를 포함하는 제1 메모리부를 포함하되, 제1 메모리부는, 제1 인터페이스 포트를 통하여 제1 메모리부에 인접하는 메모리부와의 데이터 송수신 동작을 수행한다.
상기 기술적 과제를 달성하기 위한 본 발명의 다른 실시예에 따른 반도체 장치는, 각각이 캐시 메모리 및 인터페이스 포트를 포함하는 복수의 제1 메모리부 및 복수의 제1 메모리부와 전기적으로 연결되고, 복수의 제1 메모리부에 저장된 데이터에 기초한 연산을 수행하는 제1 그래픽 처리 유닛(Graphic Processing Unit, GPU)을 포함하되, 복수의 제1 메모리부는, 캐시 메모리 및 인터페이스 포트를 이용하여 복수의 제1 메모리부 간의 데이터 송수신 동작을 수행한다.
상기 기술적 과제를 달성하기 위한 본 발명의 또 다른 실시예에 따른 반도체 장치는, 제1 처리 유닛, 제2 처리 유닛, 제1 처리 유닛에 전기적으로 연결되고, 각각이 제1 메모리 영역 및 제1 캐시 영역을 포함하는 복수의 제1 메모리부, 제2 처리 유닛에 전기적으로 연결되고, 각각이 제2 메모리 영역 및 제2 캐시 영역을 포함하는 복수의 제2 메모리부 및 제1 메모리 영역 또는 제2 메모리 영역에 저장된 타겟 데이터에 대한 제1 메모리부 및 제2 메모리부 간의 송수신 경로를 스케줄링하는 스케줄러를 포함하되, 스케줄러는, 제1 캐시 영역 또는 제2 캐시 영역에 저장된 경로 정보에 기초하여 송수신 경로를 스케줄링한다.
상기 기술적 과제를 달성하기 위한 본 발명의 또 다른 실시 예에 따른 반도체 장치는, 적어도 하나의 메모리를 포함하는 제1 메모리부와 전기적으로 연결되고, 트레이닝 데이터 세트에 대한 연산을 수행하는 제1 프로세서 및 트레이닝 데이터에 대한 연산 과정에서 이동되는 데이터의 경로에 대한 스케줄링 코드를 생성하는 컴파일러를 포함하되, 스케줄링 코드는, 제1 프로세서와 제1 메모리부 사이에서 데이터가 이동되는 제1 경로 및 상기 제1 메모리부에 포함되는 메모리 사이에서 데이터가 이동되는 제2 경로에 대한 정보를 포함하고, 제1 프로세서는 스케줄링 코드에 기초하여 상기 트레이닝 데이터 세트에 대한 연산을 수행할 수 있다.
기타 실시예들의 구체적인 사항들은 상세한 설명 및 도면들에 포함되어 있다.
도 1은 본 발명의 실시 예에 따른 메모리부의 구성을 설명하기 위한 개략적인 블록도이다.
도 2는 본 발명의 실시 예에 따라 인터페이스 포트를 통해 연결되는 2개의 메모리부의 구성을 설명하기 위한 블록도이다.
도 3은 본 발명의 실시 예에 따라 로직 영역에 배치되는 캐시 메모리 및 인터페이스 포트를 설명하기 위한 메모리부의 단면도이다.
도 4는 본 발명의 실시 예에 따라 인터페이스 포트를 통해 연결되는 3개의 메모리부의 구성을 설명하기 위한 블록도이다.
도 5는 본 발명의 실시 예에 따른 처리 유닛 및 처리 유닛에 연결되는 2개의 메모리부의 구성을 설명하기 위한 블록도이다.
도 6은 본 발명의 실시 예에 따라 처리 유닛 및 2개의 메모리부 사이의 연결을 설명하기 위한 처리 유닛 및 메모리부의 단면도이다.
도 7 및 도 8은 본 발명의 실시 예에 따라 메모리부에 연결된 인터페이스를 통해 구현되는 메모리부와 서버 사이의 통신을 설명하기 위한 블록도이다.
도 9는 본 발명의 실시 예에 따라 복수의 처리 유닛을 포함하는 반도체 장치를 설명하기 위한 블록도이다.
도 10은 본 발명의 실시 예에 따른 2개의 처리 유닛 간의 통신을 설명하기 위한 블록도이다.
도 11a는 본 발명의 실시 예에 따라 학습(training)되는 데이터 세트(dataset)를 설명하기 위한 도면이다.
도 11b는 도 11a의 데이터 세트(dataset)에 포함되는 데이터가 처리 유닛에 의해 처리되는 과정을 설명하기 위한 순서도이다.
도 11c는 복수의 처리 유닛이 계산된 데이터를 공유하여 처리하는 과정을 상세히 설명하기 위한 순서도이다.
도 12는 로직 영역에 저장되는 데이터의 구성을 설명하기 위한 블록도이다.
도 13은 메모리 영역 및 로직 영역 각각의 물리 어드레스와 논리 어드레스와의 맵핑을 설명하기 위한 맵핑 테이블이다.
도 14a는 캐시 컨트롤 영역에 저장되는 메모리부 ID 정보를 예시적으로 설명하기 위한 도면이다.
도 14b는 캐시 컨트롤 영역에 저장되는 상태 정보를 예시적으로 설명하기 위한 도면이다.
도 14c는 캐시 컨트롤 영역에 저장되는 인스트럭션을 예시적으로 설명하기 위한 도면이다.
도 15 내지 도 18은 본 발명의 실시 예에 따라 스케줄러가 포함되는 반도체 장치를 설명하기 위한 블록도이다.
도 19 내지 도 21는 본 발명의 실시 예에 따라, 스케줄러의 스케줄링에 기초하여 소스 메모리부에 저장된 타겟 데이터가 목적지 메모리부로 전달되는 과정을 설명하기 위한 도면이다.
도 1은 본 발명의 실시 예에 따른 메모리부의 구성을 설명하기 위한 개략적인 블록도이다.
도 1을 참조하면, 본 발명의 실시 예에 따른 반도체 장치(1)는 메모리 영역(110) 및 로직 영역(130)을 포함하는 메모리부(100)를 포함할 수 있다.
메모리 영역(110)에는 사용자의 요청에 의한 사용자 데이터 또는 처리 유닛에 의해 처리되는 데이터 또는 처리될 데이터가 저장될 수 있다.
로직 영역(130)은 메모리 버퍼(131), PHY(132), 캐시 메모리(133), 인터페이스 포트(134) 및 인터페이스 컨트롤러(135)를 포함할 수 있다.
메모리 버퍼(131)는 메모리 영역(110)에 저장된 데이터를 리드하여 버퍼링하고, 캐시 메모리(133) 또는 PHY(132)로 전달할 수 있다. 또한, 메모리 버퍼(131)는 처리 유닛(도 5의 10)으로부터 커맨드, 어드레스, 데이터 등을 PHY(132)를 통해 수신할 수 있다.
PHY(132)는 메모리 버퍼(131) 또는 캐시 메모리(133)에 저장된 데이터를 처리 유닛(도 5의 10)으로 출력할 수 있다. 즉, 처리 유닛 및 메모리부(100)는 PHY(132)를 통하여 인터페이싱할 수 있다. 메모리부(100) 및 메모리부(100)와 연결되는 처리 유닛과의 데이터 송수신은 도 5를 참조하여 후술한다.
캐시 메모리(133)는 인터페이스 컨트롤러(135)의 제어에 따라 메모리 영역(110)에 저장된 데이터 또는 메모리 영역(110)에 저장될 데이터를 임시 저장할 수 있다. 실시 예에 따라, 인접하는 메모리부(100)로의 데이터 전송을 위해서 메모리 영역(110)에 저장된 데이터가 메모리 버퍼(131)에 저장되고, 캐시 메모리(133)는 메모리 버퍼(131)로부터 데이터를 수신하여 저장할 수 있다. 실시 예에 따라, 캐시 메모리(133)는 인접하는 메모리부(100)로부터 수신한 데이터를 임시 저장할 수 있다.
인터페이스 포트(134)는 메모리부(100)에 인접하는 인접 메모리부와의 데이터 송수신을 수행할 수 있다. 실시 예에 따라, 인터페이스 포트(134)는 인터페이스 컨트롤러(135)의 제어에 기초하여 캐시 메모리(133)에 저장된 데이터를 인접 메모리부로 전송할 수 있다. 실시 예에 따라, 인터페이스 포트(134)는 인터페이스 컨트롤러(135)의 제어에 기초하여 인접 메모리부로부터 수신된 데이터를 캐시 메모리(133)로 전송할 수 있다.
실시 예에 따라, 인터페이스 포트(134)는 직렬 인터페이스를 이용하여 인접 메모리부와의 데이터 송수신 동작을 수행할 수 있다. 예를 들어, 인터페이스 포트(134)는, 독자적인 표준 직렬 인터페이스를 적용하거나, 기존의 표준 직렬 인터페이스 규약인 PCIe (Peripheral Component Interconnect Express), NVMe (Nonvolatile Memory Express), UFS (Universal Flash Storage), USB (Universal Serial Bus), SCSI (Small Computer System Interface), SATA (Serial Advanced Technology Attachment), SAS (Serial Attached SCSI), SD (Secure Digital) 카드, eMMC (Embedded Multimedia Card) 등과 같은 직렬 인터페이스 규약들 중 적어도 하나를 채용할 수 있다.
인터페이스 컨트롤러(135)는 인접 메모리부와의 데이터 송수신 동작을 제어할 수 있다. 예를 들어, 인접 메모리부로부터 데이터를 수신하여 메모리부(100)의 캐시 메모리(133) 또는 메모리 영역(110)에 저장되도록 메모리 영역(110), 메모리 버퍼(131), 캐시 메모리(133) 및 인터페이스 포트(134)를 제어할 수 있다. 구체적으로, 인터페이스 포트(134)를 통해 인접 메모리부로부터 수신한 데이터를 캐시 메모리(133)에 저장한 후, 메모리 버퍼(131)를 통해 메모리 영역(110)의 특정 영역에 데이터가 저장되도록 제어할 수 있다.
다른 예로서, 인접 메모리부로부터 데이터를 수신한 후, 수신한 데이터를 다른 인접 메모리부로 전송하도록 인터페이스 포트(134) 및 캐시 메모리(133)를 제어할 수 있다. 구체적으로, 인터페이스 포트(134)를 통해 수신한 데이터를 캐시 메모리(133)에 저장한 후, 캐시 메모리(133)에 저장된 데이터를 다른 인접 메모리부로 전송하도록 캐시 메모리(133) 및 인터페이스 포트(134)를 제어할 수 있다. 이 때, 로직 영역(130)은 다른 인접 메모리부로의 전송을 위한 인터페이스 포트를 더 포함할 수 있다. 실시 예에 따라, 인터페이스 포트(134)는, 서로 다른 인접 메모리부와의 통신을 수행함에 있어서 이용될 수 있다. 즉, 하나의 인터페이스 포트(134)를 이용하여 서로 다른 인접 메모리부와의 데이터 송수신을 수행할 수 있다.
또 다른 예로서, 메모리 영역(110)에 저장된 데이터를 인접 메모리부로 전송하도록 메모리 영역(110), 메모리 버퍼(131), 캐시 메모리(133) 및 인터페이스 포트(134)를 제어할 수 있다. 구체적으로, 메모리 영역(110)의 특정 어드레스에 저장된 데이터를 리드하여 메모리 버퍼(131)에 저장하고, 이를 캐시 메모리(133)에 캐싱한 후, 캐시 메모리(133)에 저장된 데이터를 인터페이스 포트(134)를 통해 인접 메모리로 전송할 수 있다.
설명의 편의를 위하여 메모리부(100)의 로직 영역(130) 내에 인터페이스 컨트롤러(135)가 위치하는 것으로 도시하였으나, 이에 한정되지는 않고 메모리부(100)의 외부 영역에 인터페이스 컨트롤러(135)가 배치될 수 있다.
도 2는 본 발명의 실시 예에 따라 인터페이스 포트를 통해 연결되는 2개의 메모리부의 구성을 설명하기 위한 블록도이다.
도 2를 참조하면, 본 발명의 실시 예에 따른 반도체 장치(1)는 제1 메모리 영역(110) 및 제1 로직 영역(130)을 포함하는 제1 메모리부(100)와, 제2 메모리 영역(210) 및 제2 로직 영역(230)을 포함하는 제2 메모리부(200)를 포함할 수 있다. 제1 메모리부(100)는 도 1의 메모리부(100)와 동일하게 구성된다. 또한, 제2 메모리부(200)의 제2 메모리 영역(210) 및 제2 로직 영역(230)의 구성은 제1 메모리부(100)의 제1 메모리 영역(110) 및 제1 로직 영역(130)의 구성과 동일한 동작을 수행할 수 있다.
본 발명의 실시 예에 따른 반도체 장치(1)는, 인접하는 메모리부 사이의 데이터 송수신 동작을 수행할 수 있다. 제1 메모리부(100) 및 제2 메모리부(200)는 인접하게 배치되고, 제1 인터페이스 포트(134) 및 제2 인터페이스 포트(234)를 통하여 데이터 송수신을 수행할 수 있다. 제1 인터페이스 컨트롤러(135)는 제1 인터페이스 포트(134)로 수신되는 데이터 또는 제1 인터페이스 포트(134)로부터 송신되는 데이터의 입출력 동작을 제어할 수 있고, 제2 인터페이스 컨트롤러(235)는 제2 인터페이스 포트(234)로 수신되는 데이터 또는 제2 인터페이스 포트(234)로부터 송신되는 데이터의 입출력 동작을 제어할 수 있다.
도 3은 본 발명의 실시 예에 따라 로직 영역에 배치되는 캐시 메모리 및 인터페이스 포트를 설명하기 위한 메모리부의 단면도이다. 설명의 편의를 위하여 본 발명이 적용될 수 있는 하나의 예로서 적층형 메모리부를 도시하였으나, 본 발명은 이에 한정되지 않고 단층형 메모리 또는 도 3에 도시된 배치와 상이한 배치를 갖는 적층형 메모리에 적용될 수 있다.
도 3을 참조하면, 본 발명의 실시 예에 따른 반도체 장치(1)는 기판(5), 기판(5) 상에 적층되는 인터포저(3), 각각이 인터포저(3) 상에 배치되는 제1 메모리부(100) 및 제2 메모리부(200)를 포함할 수 있다.
제1 메모리부(100)는 제1 로직 영역(130), 제1 로직 영역(130) 상에 수직 방향으로 적층되는 복수의 메모리 다이들(111, 113, 115, 117)을 포함하는 제1 메모리 영역(110)을 포함할 수 있다. 제1 메모리 영역(110)은 데이터가 저장되는 복수의 메모리 셀을 포함하는 적어도 하나의 제1 메모리 다이(111, 113, 115, 117)를 포함할 수 있다. 각각의 메모리 다이들(111, 113, 115, 117)과 제1 로직 영역(130)은 TSV(Through Silicon Via)를 통해 연결될 수 있다. 설명의 편의를 위하여 제1 메모리 영역(110)이 4개의 다이들(111, 113, 115, 117)을 포함한다고 도시하였으나, 이에 한정되지는 않고 하나 이상의 메모리 다이를 포함할 수 있다. 또한, 도 3에는 메모리부가 구성될 수 있는 예시적인 단면도를 도시한 것으로, 다른 형태의 메모리가 적용될 수 있음은 물론이다.
제2 메모리부(200)는 제1 메모리부(100)와 동일한 구성을 가질 수 있다. 즉, 제2 로직 영역(230), 제2 로직 영역(230) 상에 수직 방향으로 적층되는 복수의 메모리 다이들(211, 213, 215, 217)을 포함하는 제2 메모리 영역(210)을 포함할 수 있고, 각각의 메모리 다이들(211, 213, 215, 217)과 제1 로직 영역(130)은 TSV를 통해 연결되고, 데이터를 송수신할 수 있다. 제2 메모리 영역(210)은 데이터가 저장되는 복수의 메모리 셀을 포함하는 적어도 하나의 제2 메모리 다이(211, 213, 215, 217)를 포함할 수 있다.
본 발명의 실시 예에 따른 반도체 장치(1)는, 로직 영역(130, 230)에 캐시 메모리(133, 233) 및 인터페이스 포트(134, 234)를 배치하여 인접하는 메모리부와의 데이터 송수신 동작을 수행할 수 있다. 사용자 데이터 또는 처리 유닛에 의해 처리될 데이터가 저장되는 메모리 영역이 아닌, 메모리 셀을 포함하지 않거나 적게 포함하는 로직 영역(130, 230)에 캐시 메모리(133, 233) 및 인터페이스 포트(134, 234)를 배치함으로써 추가적인 면적의 확장없이 인접 메모리부와의 직접적인 데이터 송수신이 가능하다. 또한, 상술한 바와 같이 인접 메모리부와의 데이터 송수신은 직렬 인터페이스를 이용하여 수행될 수 있다.
도 4는 본 발명의 실시 예에 따라 인터페이스 포트를 통해 연결되는 3개의 메모리부의 구성을 설명하기 위한 블록도이다. 도 4의 제1 메모리부(100)는 도 1의 메모리부(100)와 동일한 구성을 갖는다고 가정한다. 또한, 설명의 편의를 위하여 제1 로직 영역(130), 제2 로직 영역(230) 및 제3 로직 영역(330)이 인터페이스 컨트롤러를 포함하지 않는 것으로 도시하였으나, 제1 로직 영역(130), 제2 로직 영역(230) 및 제3 로직 영역(330) 각각은 인접 메모리부와의 데이터 송수신을 제어하는 인터페이스 컨트롤러를 포함할 수 있다. 또한, 제1 메모리부(100)와 제2 메모리부(200)는 인접하게 배치되고, 제2 메모리부(200)과 제3 메모리부(300)는 인접하게 배치되고, 제1 메모리부(100)와 제3 메모리부(300)는 인접하게 배치되지 않는다고 가정한다.
도 4를 참조하면, 본 발명의 실시 예에 따른 반도체 장치(1)는, 복수의 인터페이스 포트들(234_0, 234_1)을 포함하는 메모리부(200)를 포함할 수 있다. 도시된 바와 같이 제2 메모리부(200)의 제2 로직 영역(230)은 2개의 제2 인터페이스 포트들(234_0, 234_1)을 포함할 수 있다. 즉, 인접하는 메모리부인 제1 메모리부(100) 및 제3 메모리부(300)와의 데이터 송수신을 수신하기 위한 각각의 제2 인터페이스 포트들(234_0, 234_1)을 포함할 수 있다. 제1 메모리부(100)의 제1 인터페이스 포트(134) 및 제2 메모리부(200)의 제2 인터페이스 포트(234_0)를 이용하여 제1 메모리부(100)와 제2 메모리부(200) 사이의 데이터 송수신을 수행할 수 있고, 제3 메모리부(300)의 제3 인터페이스 포트(334) 및 제2 메모리부(200)의 제2 인터페이스 포트(234_1)를 이용하여 제2 메모리부(200)와 제2 메모리부(200) 사이의 데이터 송수신을 수행할 수 있다. 다른 예로서, 서로 다른 인접 메모리부와의 데이터 송신을 위한 인터페이스 포트는 공유될 수 있다. 즉, 제2 메모리부(200)는 제2 인터페이스 포트(234_0)를 이용하여 제1 메모리부(100) 및 제3 메모리부(300)와의 데이터 송수신을 수행하거나, 제2 인터페이스 포트(234_1)를 이용하여 제1 메모리부(100) 및 제3 메모리부(300)와의 데이터 송수신을 수행할 수 있다.
실시 예에 따라, 인접 메모리로부터 수신된 데이터는 메모리 영역에 저장되지 않고 다른 인접 메모리부로 전송될 수 있다. 즉, 데이터가 최종 도달하는 목적지 메모리부가 아닌 경우, 인접 메모리부로부터 데이터를 수신하여 캐시 메모리에 저장한 후, 캐시 메모리에 저장된 데이터를 다른 인접 메모리부로 재전송할 수 있다. 이하에서, 제1 메모리 영역(110)에 저장된 데이터를 제3 메모리 영역(310)에 저장하는 과정을 설명한다.
메모리부 사이의 데이터 송수신의 대상인 타겟 데이터가 소스 메모리부인 제1 메모리부(100)에 포함되는 제1 메모리 영역(110)의 특정 어드레스에 저장되어 있고, 이를 제3 메모리 영역(310)에 저장하는 경우, 제2 메모리부(200)는 제2 인터페이스 포트(234_0)을 통해 타겟 데이터를 제1 인터페이스 포트(134)로부터 수신할 수 있다. 제2 메모리부(200)는 데이터가 최종 도달하는 목적지 메모리부가 아닌 바, 타겟 데이터를 제2 메모리 영역(210)에 저장하지 않고, 제2 인터페이스 포트(234_1)을 통하여 제3 메모리부(300)로 전송할 수 있다. 이 때, 제2 인터페이스 포트(234_1) 및 제3 인터페이스 포트(334) 간의 직렬 인터페이스를 이용하여 타겟 데이터가 전송될 수 있다. 제3 인터페이스 포트(334)를 통해 제3 메모리부(300)에 전달된 타겟 데이터는 제3 캐시 메모리에 저장된 후, 제3 메모리 버퍼 및 제3 메모리 영역(310)의 특정 어드레스에 순차적으로 저장될 수 있다.
실시 예에 따라, 반도체 장치(1)는 제2 메모리부(200)와 연결되는 복수의 메모리부 사이의 송수신 경로를 스케줄링하는 스케줄러(도 14의 30)를 더 포함할 수 있다. 스케줄러의 스케줄링에 기초하여 데이터가 이동되는 과정은 도 14 내지 도 19를 참조하여 후술한다.
도 5는 본 발명의 실시 예에 따른 처리 유닛 및 처리 유닛에 연결되는 2개의 메모리부의 구성을 설명하기 위한 블록도이다. 도 1 및 도 4를 참조하여 설명한 메모리부의 구성 및 동작과 중복되는 설명은 생략한다.
도 5를 참조하면, 본 발명의 실시 예에 따른 반도체 장치(1)는 복수의 메모리부(100, 200)와 전기적으로 연결되는 처리 유닛(10)을 포함할 수 있다. 처리 유닛(10)은 복수의 메모리부(100, 200)에 저장된 데이터에 기초한 연산을 수행하는 그래픽 처리 유닛(GPU)일 수 있으나, 이에 한정되지는 않고, 모든 종류의 프로세서가 적용될 수 있음은 물론이다.
실시 예에 따라, 처리 유닛(10)은 프로세서 코어(11), 인터페이스 컨트롤러(13) 및 버퍼(15)를 포함할 수 있다.
프로세서 코어(11)는 처리 유닛(10)과 전기적으로 연결된 메모리부들(100, 200)에 저장된 데이터에 기초한 연산을 수행한다. 예를 들어, 제1 메모리부(100)의 제1 메모리 영역(110)에 저장된 데이터 및 제2 메모리부(200)의 제2 메모리 영역(210)에 저장된 데이터에 기초하여 처리 동작을 수행할 수 있다.
인터페이스 컨트롤러(13)는 처리 유닛(10)에 전기적으로 연결된 메모리부들(100, 200) 사이의 데이터 송수신 동작을 제어할 수 있다. 즉, 도 1 및 도 2에 도시된 바와 같이 인터페이스 컨트롤러(13)는 각각의 메모리부(100, 200)에 포함되는 로직 영역(130, 230)에 배치될 수 있고, 또한 메모리부들(100, 200)이 전기적으로 연결된 처리 유닛(10)에 포함될 수 있다.
버퍼(15)는 처리 유닛(10)에 전기적으로 연결된 메모리부들(100, 200)로부터 수신한 데이터 또는 메모리부들(100, 200)로 송신할 데이터를 저장할 수 있다. 도시된 바와 같이, PHY(132) 및 PHY(17_0)를 통하여 제1 메모리부(100)로부터 데이터를 수신할 수 있고, PHY(232) 및 PHY(17_1)를 통하여 제2 메모리부(200)로부터 데이터를 수신할 수 있다.
처리 유닛(10)에 전기적으로 연결되는 복수의 메모리들(100, 200)은 서로 데이터의 송수신 동작을 수행할 수 있다. 즉, 처리 유닛(10)에 연결되는 제1 메모리부(100) 및 제2 메모리부(200)는 각각 제1 인터페이스 포트(134) 및 제2 인터페이스 포트(234)를 포함할 수 있고, 각각의 인터페이스 포트(134, 234)를 이용하여 서로 데이터를 직접 송수신할 수 있다.
몇몇 실시 예에 따라, 처리 유닛은 예를 들면 GPU 모듈, TPU(tensor processing unit) 모듈, DPU(data processing unit) 모듈 및 MPU(main processing unit) 모듈 등을 포함할 수 있다. GPU 모듈 및 TPU 모듈을 포함하는 경우 각각 GPU 또는 TPU를 포함할 수 있고 복수의 지원 칩을 포함할 수 있다. TPU는, 예를 들면, ASIC 상에서 구현될 수 있고, 머신 러닝(machine learning)을 위해 구성될 수 있거나 최적화될 수 있다. 예시적인 실시 예들에 따라, DPU들은 당업자에게 알려진 TPU 또는 GPU와 같은 다른 가속기들과 유사하게 작동할 수 있다.
도 6은 본 발명의 실시 예에 따라 처리 유닛 및 2개의 메모리부 사이의 연결을 설명하기 위한 처리 유닛 및 메모리부의 단면도이다. 설명의 편의를 위하여 도 3을 참조하여 설명한 내용은 생략한다.
도 6을 참조하면, 본 발명의 실시 예에 따른 반도체 장치(1)는 처리 유닛(10) 및 처리 유닛(10)에 연결되는 복수의 메모리부들(100, 200)을 포함할 수 있다. 또한, 처리 유닛(10) 및 각각의 메모리부들(100, 200)은 PHY(132, 232, 17_0, 17_1)를 구비하고, 인터포저(3)를 통하여 서로 전기적으로 연결될 수 있다.
도시된 바와 같이, 제1 메모리부(100)의 제1 로직 영역(130)에는 PHY(132)가 배치되고, 처리 유닛(10)은 복수의 PHY(17_0, 17_1)를 포함하고, 제2 메모리부(200)의 제2 로직 영역(230)에는 PHY(232)가 배치된다. 처리 유닛(10)은 PHY(17_0) 및 PHY(132)을 통하여 제1 메모리부(10)와 연결되고, PHY(17_1) 및 PHY(232)을 통하여 제2 메모리부(200)와 연결되어 데이터, 커맨드 등을 송수신할 수 있다.
도 7 및 도 8은 본 발명의 실시 예에 따라 메모리부에 연결된 인터페이스를 통해 구현되는 메모리부와 서버 사이의 통신을 설명하기 위한 블록도이다.
도 7을 참조하면, 본 발명의 실시 예에 따른 반도체 장치(1)는 처리 유닛(10), 시스템 메모리(50), CPU(60), 제1 인터페이스(70) 및 데이터 버스(90)를 포함할 수 있다. 또한, 반도체 장치(1)는 처리 유닛(10)과 연결되는 제1 메모리부(100), 제2 메모리부(200), 제3 메모리부(300) 및 제4 메모리부(400)를 더 포함할 수 있고, 제1 내지 제4 메모리부(100, 200, 300, 400)와 전기적으로 연결되는 제2 인터페이스(80)를 더 포함할 수 있다.
처리 유닛(10)에 전기적으로 연결되는 메모리부에 저장된 사용자 데이터, 처리 유닛(10)에 의해 처리된 데이터 등을 서버(2)로 전송하거나, 서버(2)로부터 데이터를 수신하는 경우, CPU(60)의 제어를 통해 데이터가 저장된 메모리부로부터 데이터를 처리 유닛(10)이 수신하고, 수신된 데이터를 데이터 버스(90)를 통해 시스템 메모리(50)에 저장하고, 저장된 데이터에 기초하여 제1 인터페이스(70)를 통해 서버(2)와의 통신을 수행해야 한다. 또한, 처리 유닛(10)에 연결된 복수의 메모리부(100, 200, 300, 400) 사이의 데이터 이동이 필요한 경우, 처리 유닛(10)을 통하여 데이터를 전달해야 하는 비효율적인 과정이 필요하다.
복수의 처리 유닛(예를 들어, GPU)들을 이용하여 병렬 연산을 수행하는 경우, 처리 유닛 간의 데이터 교환을 통해 학습(traing)된 인공 신경망의 정확도가 개선될 있다. 다만, 빈번하게 발생하는 처리 유닛 간의 데이터 로딩(loading) 및 처리 유닛 간의 데이터 교환은 처리 유닛의 활용도(utilization)를 감소시킬 수 있다. 따라서, 메모리가 연결된 처리 유닛을 통해 데이터를 송수신하지 않고, 메모리 사이에서 직접 통신을 통해 데이터를 공유(sharing)함으로써 처리 유닛의 활용도를 높일 수 있다.
본 발명의 실시 예에 따라 처리 유닛(10)에 전기적으로 연결되는 복수의 메모리부들(100, 200, 300, 400) 사이의 직접 통신이 가능한 경우, 메모리부(100, 200, 300, 400) 사이의 데이터 교환이 필요할 때, 프로세서, 데이터 버스(90) 등의 중간 경로의 개입 없이 메모리부들(100, 200, 300, 400) 사이에 직접 데이터를 교환함으로써, 시스템의 효율이 증가할 수 있다.
또한, 각각의 메모리부들(100, 200, 300, 400)과 연결되는 제2 인터페이스(80)를 통해 서버(2)와의 통신이 가능하게 되고, CPU(60) 등의 개입 없이 서버(2)와의 데이터 송수신이 가능하게 됨으로써 시스템의 효율이 증가할 수 있다.
실시 예에 따라, 처리 유닛(10)에 전기적으로 연결되는 복수의 메모리부들(100, 200, 300, 400) 사이의 데이터 송수신, 복수의 메모리부들(100, 200, 300, 400)과 제2 인터페이스(80) 간의 데이터 송수신 및 제2 인터페이스(80)와 서버(2)와의 통신은 인터페이스 컨트롤러(13)의 제어에 따라 수행될 수 있고, 인터페이스 컨트롤러(13)는 처리 유닛(10)에 포함될 수 있다.
예를 들어, 제1 메모리부(100)에 저장된 제1 타겟 데이터(DT_t0)를 서버(2)로 송신하는 경우, 인터페이스 컨트롤러(13)의 제어에 따라, 제2 인터페이스(80)를 통하여 제1 메모리부(100)에 저장된 제1 타겟 데이터(DT_t0)가 서버(2)로 전달될 수 있다.
도 8을 참조하면, 제8 인터페이스는 처리 유닛(10)에 전기적으로 연결되는 복수의 메모리부들(100, 200, 300, 400) 중 하나의 메모리부와 연결될 수 있다. 도시된 바와 같이, 제1 메모리부(100)와 제2 인터페이스(80)가 연결될 수 있다.
제2 메모리부(200)에 저장된 제1 타겟 데이터(DT_t0)를 서버(2)로 송신하는 경우, 제2 메모리부(200)가 직렬 인터페이스를 통해 제1 메모리부(100)로 제1 타겟 데이터(DT_t0)를 송신하고, 제1 메모리부(100)와 연결된 제2 인터페이스(80)를 통하여 서버(2)로 전송될 수 있다. 복수의 메모리부들(100, 200, 300, 400) 모두에 제2 인터페이스(80) 유닛이 연결되지 않는 경우, 메모리부들(100, 200, 300, 400) 각각에 배치되는 포트의 수가 줄어들고, 회로가 간단해질 수 있다.
도 9는 본 발명의 실시 예에 따라 복수의 처리 유닛을 포함하는 반도체 장치를 설명하기 위한 블록도이다.
도 9를 참조하면, 본 발명의 실시 예에 따른 반도체 장치(1)는 복수의 처리 유닛들(10, 20)을 포함할 수 있다. 예시적으로 제1 처리 유닛(10) 및 제2 처리 유닛(20)을 포함한다고 가정한다. 또한, 제1 처리 유닛(10)은 제1 메모리부(100), 제2 메모리부(200), 제3 메모리부(300) 및 제4 메모리부(400)와 전기적으로 연결되고, 제2 처리 유닛(20)은 제5 메모리부(500), 제6 메모리부(600), 제7 메모리부(700) 및 제8 메모리부(800)와 전기적으로 연결된다.
실시 예에 따라, 제1 처리 유닛(10)에 연결되는 제2 메모리부(200)와 제2 처리 유닛(20)에 연결되는 제5 메모리부(500) 사이의 데이터 송수신이 가능하고, 제1 처리 유닛(10)에 연결되는 제4 메모리부(400)와 제2 처리 유닛(20)에 연결되는 제7 메모리부(700) 사이의 직접 통신이 가능할 수 있다. 즉, 서로 다른 처리 유닛에 연결되는 메모리부 사이의 데이터 송수신이 가능할 수 있다.
딥 러닝(Deep learning), 머신 러닝(Machine learning) 등이 발전함에 따라 대용량의 메모리부와 복수의 처리 유닛(예를 들어, GPU)를 필요로 한다. 이때, 복수의 처리 유닛 사이의 데이터 송수신이 빈번히 요구되고, 처리 유닛 간의 데이터 송수신이 가능하지 않은 경우, 데이터 버스 등을 통한 통신으로 시간적 손해가 발생하고, 처리 유닛 간의 데이터 송수신이 가능한 경우에도 처리 유닛이 처리 유닛과 전기적으로 연결된 메모리로부터 데이터를 리드하고, 이를 다른 처리 유닛으로 전송하는 과정에서는 메모리의 I/O 동작이 중지된다는 문제가 발생한다.
본 발명의 실시 예에 따라 인접하는 메모리부 사이의 데이터 송수신을 통하여 처리 유닛의 리소스가 감소되어 전력 소모를 줄일 수 있고, 메모리부 사이의 데이터 송수신 과정에서도 처리 유닛의 동작 수행이 가능하여 처리 유닛의 활용도를 높일 수 있다.
도 10은 본 발명의 실시 예에 따른 2개의 처리 유닛 간의 통신을 설명하기 위한 블록도이다.
도 10을 참조하면, 본 발명의 실시 예에 따른 반도체 장치(1)는 복수의 처리 유닛 사이의 데이터 송수신을 수행할 수 있다. 도시된 바와 같이, 제1 처리 유닛(10)과 제2 처리 유닛(20)은 직접 데이터를 송수신할 수 있다. 서로 다른 처리 유닛 사이의 직접 통신이 가능한 경우, 데이터 버스 등의 중간 경로를 이용하는 경우보다 적은 경로로 데이터를 송수신함으로써 연산에 소요되는 시간을 단축시키고, 시스템에서 소모되는 리소스를 최소화할 수 있다.
도 11a는 본 발명의 실시 예에 따라 학습(training)되는 데이터 세트(dataset)를 설명하기 위한 도면이고, 도 11b는 도 11a의 데이터 세트(dataset)에 포함되는 데이터가 처리 유닛에 의해 처리되는 과정을 설명하기 위한 순서도이다. 도 11c는 도 11a의 처리 과정 중 복수의 처리 유닛들이 계산된(computed) 데이터를 공유함으로써 데이터를 처리하는 과정을 상세히 설명하기 위한 도면이다.
딥 러닝(Deep Learning) 등의 연산에서는 대용량의 데이터를 이용하여 학습하고, 단일 연산에 이용되는 데이터의 크기가 클수록 학습 속도가 높아진다.
도 11a를 참조하면, 인공 신경망을 이용한 학습의 대상이 데이터 세트에는 복수의 서브 세트(sub-set)가 포함될 수 있다. 각각의 서브 세트에는 복수의 레이어(L1 내지 Lm) 상의 데이터가 포함될 수 있다. 데이터 세트에는 3 이상의 서브 세트가이 포함될 수 있으나, 설명의 편의를 위하여 이하에서는 데이터 세트가 2개의 서브 세트(Sub-Set1, Sub-Set2)를 포함한다고 가정하고 설명한다. 본 명세서에서, 데이터 세트는 트레이닝 데이터 세트로 표현될 수 있고, 서브 세트는 서브 데이터 세트로 표현될 수 있다. 또한, "제n 레이어"를 전송/처리한다는 것은 "제n 레이어 상의 데이터를 전송/처리"하는 것을 의미할 수 있다.
도 11b를 참조하면, 본 발명의 실시 예에 따른 제1 처리 유닛(10) 및 제2 처리 유닛(20)은 데이터 세트에 포함되는 데이터에 대한 학습을 수행할 수 있고, 이 때 서로간의 데이터 교환을 통하여 의 추론 정확도를 높일 수 있다. 도 11b를 설명함에 있어서, 제1 및 제2 처리 유닛(10, 20)이 데이터 공유를 통하여 데이터를 처리하는 것으로 도시하였으나, 이에 한정되지는 않고 3개 이상의 처리 유닛이 데이터 공유를 통하여 구현될 수 있음은 물론이다.
S1100 단계에서, 제1 처리 유닛(10)은 제1 서브 세트(Sub-Set1)에 포함되는 데이터 중 적어도 일부의 데이터를 로드할 수 있다. 이하에서는 제1 레이어(L1) 내지 제m 레이어(Lm) 상의 데이터가 로드되어 학습의 대상이 된다고 가정한다.
S2100 단계에서, 제2 처리 유닛(20)은 제2 서브 세트(Sub-Set2)에 포함되는 데이터 중 적어도 일부의 데이터를 로드할 수 있다. 마찬가지로, 제1 레이어(L1) 내지 제m 레이어(Lm) 상의 데이터가 로드되어 학습의 대상이 된다.
S1200 단계에서, 제1 처리 유닛(10)은 제1 레이어(L1) 내지 제m 레이어(Lm)의 순서로 연산을 수행하고, S2200 단계에서, 제2 처리 유닛(20)은 제1 레이어(L1) 내지 제m 레이어(Lm)의 순서로 연산을 수행한다.
S1300 단계에서, 제1 처리 유닛(10)은 수행된 연산에 기초하여 제1 레이어(L1) 내지 제m 레이어(Lm)의 중간 결과를 제m 레이어(Lm) 내지 제1 레이어(L1)의 순서로 계산한다. S2300 단계에서, 제2 처리 유닛(20)은 수행된 연산에 기초하여 제1 레이어(L1) 내지 제m 레이어(Lm)의 중간 결과를 제m 레이어(Lm) 내기 제1 레이어(L1)의 순서로 계산한다. 이 때, 제1 처리 유닛(10) 및 제2 처리 유닛(20)에 의해 계산된 중간 결과는, 각각에 의해 계산되는 데이터의 기울기(gradient)에 대한 정보를 포함할 수 있다.
S1400 및 S2400 단계에서, 제1 처리 유닛(10)에 의해 계산된 중간 결과를 제2 처리 유닛(20)으로 전송하고, 제2 처리 유닛(20)에 의해 계산된 중간 결과를 제1 처리 유닛(10)으로 전송할 수 있다. 즉, 제1 처리 유닛(10) 및 제2 처리 유닛(20)에서 각각 수행된 중간 결과를 서로간에 공유할 수 있다.
S1500 단계에서, 제1 처리 유닛(10)은 제1 처리 유닛(10)에 의해 계산된 중간 결과 및 제2 처리 유닛(20)으로부터 수신한 중간 결과에 기초하여 제1 레이어(L1) 내지 제m 레이어(Lm) 상의 데이터에 대한 업데이트 동작을 수행한다.
S2500 단계에서, 제2 처리 유닛(20)은 제2 처리 유닛(20)에 의해 계산된 중간 결과 및 제1 처리 유닛(10)으로부터 수신한 중간 결과에 기초하여 제1 레이어(L1) 내지 제m 레이어(Lm) 상의 데이터에 대한 업데이트 동작을 수행한다.
S1600 단계에서, 제1 처리 유닛(10)은 제1 서브 세트(Sub-Set1) 내의 모든 데이터가 로드되었는지 여부를 판단할 수 있다. 제1 서브 세트(Sub-Set) 내의 모든 데이터가 로드 및 연산되었다고 판단되는 경우 해당 처리 동작의 연산을 종료하고, 제1 서브 세트(Sub-Set) 내의 데이터 중 로드되지 않은 데이터가 있다고 판단되는 경우 로드되지 않은 데이터를 로드하여 상기 S1100 단계 내지 S1500 단계에 따른 연산 과정을 반복하여 수행할 수 있다.
S2600 단계에서, 제2 처리 유닛(20)은 제2 서브 세트(Sub-Set2) 내의 모든 데이터가 로드되었는지 여부를 판단할 수 있다. 제2 서브 세트(Sub-Set2) 내의 모든 데이터가 로드 및 연산되었다고 판단되는 경우 해당 처리 동작의 연산을 종료하고, 제2 세브셋(Sub-Set2) 내의 데이터 중 로드되지 않은 데이터가 있다고 판단되는 경우 로드되지 않은 데이터를 로드하여 상기 S2100 단계 내지 S2500 단계에 따른 연산 과정을 반복하여 수행할 수 있다.
도 11b 및 도 11c를 참조하면, S1300 단계는 S1310 내지 S1370 단계를 포함할 수 있고, S1400 단계는 S1410 내지 S1450 단계를 포함할 수 있다. 또한, S2300 단계는 S2310 내지 S2370 단계를 포함할 수 있고, S2400 단계는 S2410 내지 S2450 단계를 포함할 수 있다.
상술한 바와 같이, S1200 및 S2200 단계에서, 제1 및 제2 처리 유닛(10, 20)은 각각 제1 및 제2 서브 세트(Sub-Set1, Sub-Set2)에 포함되는 데이터를, 제1 레이어(L1) 에서 제m 레이어(Lm)의 순서로 연산을 수행한다. 이 때 수행되는 연산은 각 레이어에 대한 모델 평가(model evaluating) 연산일 수 있다. S1300 및 S2300 단계에서, 제1 및 제2 처리 유닛(10, 20)은 S1200 및 S2200 단계에서 수행된 연산의 중간 결과에 대한 계산을 수행한다. 이 때, 중간 결과는 평가된 데이터의 기울기 정보를 포함할 수 있고, 기울기 계산(gradient computing) 연산은 S1200 및 S2200 단계에서 수행된 평가 연산의 반대의 순서로 수행될 수 있다. 즉, 제m 레이어(Lm)에서 제1 레이어(L1)의 순서로 연산이 수행될 수 있다.
S1310 및 S2310 단계에서, 제1 및 제2 처리 유닛(10, 20)은 각각 제1 및 제2 서브 세트(Sub-Set1, Sub-Set2)의 제m 레이어(Lm)에 대한 기울기 계산 동작을 수행한다. S1410 및 S2410 단계에서, 계산된 제m 레이어(Lm)의 기울기 정보를 제1 및 제2 처리 유닛(10, 20)이 공유할 수 있다.
S1330 및 S2330 단계에서, 제1 및 제2 처리 유닛(10, 20)은 각각 제1 및 제2 서브 세트(Sub-Set1, Sub-Set2)의 제m-1 레이어(Lm-1)에 대한 기울기 계산 동작을 수행한다. 이 때, 제m-1 레이어(Lm-1)에 대한 기울기 계산 동작에는 제m-1레이어(Lm-1)에 대하여 평가된 데이터 및 제m 레이어(Lm)의 기울기 정보가 이용될 수 있다. 즉, S1200 및 S2200에서 평가된 정보뿐만 아니라, 제m 레이어(Lm)에 대하여 계산된 기울기 정보가 이용될 수 있고, 나아가 다른 처리 유닛에서 계산된 기울기 정보가 이용될 수 있다. 예를 들어, 제1 처리 유닛(10)은 제m-1 레이어(Lm-1)의 기울기 계산에 있어서, 제1 서브 세트(Sub-Set1)의 제m-1 레이어(Lm-1)에 대하여 평가된 정보 및 제1 서브 세트(Sub-Set1)의 제m 레이어(Lm)에 대하여 계산된 기울기 정보에 더하여, 제2 처리 유닛(20)에서 계산된 제2 서브 세트(Sub-Set2)의 제m 레이어(Lm)에서의 기울기 정보도 이용될 수 있다. 이러한 동작은 모든 레이어(Lm 내지 L1)에 대한 기울기 계산 동작이 수행될 때까지 반복될 수 있다.
몇몇 실시 예에 따라, 각각의 처리 유닛(10, 20)에 의해 특정 레이어에 대한 기울기 계산 동작과, 이전 레이어의 계산된 기울기를 공유하는 동작은 동시에 수행될 수 있다. 예를 들어, 제1 및 제2 처리 유닛(10, 20)에 의하여 제m-1 레이어(Lm-1)에 대한 기울기 계산 동작이 수행되는 과정 중에, 제m 레이어(Lm)의 계산된 기울기가 제1 및 제2 처리 유닛(10, 20)에 전기적으로 연결된 메모리부 사이에서 송수신될 수 있다. 즉, 본 발명의 실시 예에 따른 메모리부 사이의 인터페이싱을 통하여, 처리 유닛이 연산을 수행하는 중에, 현재 연산 또는 다음 연산에 필요한 데이터를 메모리부 사이에서 공유함으로써, 처리 유닛에 의해 수행되는 연산의 효율성이 증대될 수 있다.
본 발명의 실시 예에 따라, 복수의 처리 유닛 각각에서 계산된 중간 결과를 공유하고, 공유된 정보에 기초한 업데이트 동작을 통하여, 학습된 인공 신경망(Artificial Neural Network)의 추론 정확도(Inference Accuracy)가 향상될 수 있다.
본 발명의 실시 예에 따라 인접하는 메모리부 간의 데이터 송수신을 수행하는 경우, 연산 과정에서 빈번하게 발생하게 요구되는 중간 결과(예를 들어, 계산된 데이터)의 교환 과정에서, 복수의 처리 유닛을 거치지 않고 복수의 메모리들 사이에서 직접 데이터의 송수신이 이루어지므로 처리 유닛의 활용도(Utilization)이 향상될 수 있다. 또한, 처리 유닛 간에 공유되는 데이터의 크기는 메모리부와 처리 유닛 사이에서 송수신되는 데이터에 비하여 작고, 빠른 전송 속도를 요구하지 않아 복수의 메모리부 사이의 데이터 송수신은 고속을 요구하지 않는다. 또한, 학습 순서나 학습의 형태(예를 들어, 연산이 수행되는 프로세스, 연산이 수행되는 데이터의 순서 등)가 비교적 일정하기 때문에, 메모리부 사이의 데이터 송수신 시기와 순서를 쉽게 예측할 수 있다..
도 12는 로직 영역에 저장되는 데이터의 구성을 설명하기 위한 블록도이다.
도 12를 참조하면, 본 발명의 실시 예에 따른 메모리부(100)는 메모리 영역(110) 및 로직 영역(130)을 포함한다. 실시 예에 따라, 로직 영역(130)은 캐시 메모리 영역(138) 및 캐시 컨트롤 영역(139)을 포함할 수 있다. 캐시 메모리 영역(138)은 인접 메모리부로 송신할 데이터 또는 인접 메모리부로부터 수신한 데이터를 임시 저장하는 영역일 수 있다. 캐시 컨트롤 영역(139)은, 메모리부(100)가 인접 메모리부와의 통신을 수행함에 있어서 요구되는 정보 및 인스트럭션(1300)을 저장하는 영역일 수 있다. 실시 예에 따라, 캐시 메모리 영역(138) 및 캐시 컨트롤 영역(139)은 캐시 메모리(도 1의 130)에 포함되는 영역일 수 있다.
실시 예에 따라, 캐시 컨트롤 영역(139)에는 메모리부 ID 정보(INF_ID(MU))(1100), 메모리부 상태 정보(INF_Status(MU))(1200), 인스트럭션(1300) 및 컨트롤 ID 상태 정보(INF_Status(Ctrl ID))(1400)가 저장될 수 있다.
도 10 및 도 12를 참조하면, 본 발명의 실시 예에 따른 반도체 장치(1)는, 처리 유닛(10, 20)에 의해 수행되는 데이터의 연산 과정에서 이동되는 데이터 경로에 대한 스케줄링 코드를 생성하는 컴파일러를 포함할 수 있다. 예를 들어, 스케줄링 코드는, 처리 유닛(예를 들어, 10)과, 처리 유닛(10)에 연결되는 메모리부(100, 200, 300 및 400 중 어느 하나) 사이에서 데이터가 이동되는 제1 경로 및 동일한 처리 유닛(예를 들어, 20)에 연결되는 복수의 메모리부(500, 600, 700, 800) 사이에서 데이터가 이동되는 제2 경로에 대한 정보를 포함할 수 있다. 몇몇 실시 예에 따라, 스케줄링 코드는, 서로 다른 처리 유닛(10 및 20)에 각각 연결되는 메모리부(예를 들어, 400 및 700) 사이에서 데이터가 이동되는 제3 경로에 대한 정보를 포함할 수 있다. 몇몇 실시 예에 따라, 서로 다른 복수의 처리 유닛(10, 20) 사이에서 데이터가 이동되는 제4 경로에 대한 정보를 포함할 수 있다.
처리 유닛(10)은 컴파일러에 의해 생성된 스케줄링 코드에 기초하여 데이터에 대한 연산을 수행할 수 있다. 예를 들어, 연산에 이용되는 작은 단위의 데이터가 큐(queue) 단위로 메모리부에 전송되는 경우, 입력된 큐들이 FIFO(first in-first out) 형태로 처리 유닛으로 전달되도록 스케줄링될 수 있다. 몇몇 실시 예에 따라, 입력된 큐들은 메모리부(100)의 로직 영역(130)에 저장될 수 있다. 몇몇 실시 예에 따라, 입력된 큐들은 로직 영역(130)의 캐시 메모리 영역(138)에 저장될 수 있다. 몇몇 실시 예에 따라, 스케줄링 코드는, 로직 영역(130)에 저장된 큐가 제2 경로를 통해 처리 유닛(10)으로 전달되고, 연산에 필요한 데이터(예를 들어, 기울기 데이터)가 제1 경로를 통하여 메모리 영역(110)에서 처리 유닛(10)으로 전달되도록 하는 정보를 포함할 수 있다. 또한, 스케줄링 코드는, 처리 유닛(10)에 의해 처리된 데이터가 로직 영역(130)에 저장되고, 제3 경로를 통하여 다른 처리 유닛(20)에 전기적으로 연결되는 메모리부(예를 들어, 500)로 처리된 데이터가 전송되도록 하는 정보를 포함할 수 있다.
도 13은 메모리 영역 및 로직 영역 각각의 물리 어드레스(Physical Address)와 논리 어드레스(Logical Address)와의 맵핑을 설명하기 위한 맵핑 테이블이다.
도 12 및 도 13을 참조하면, 본 발명의 실시 예에 따른 메모리부(100)는 메모리 영역(110) 및 로직 영역(130)을 포함할 수 있고, 메모리 영역(110) 및 로직 영역(130)은 동일한 논리 어드레스를 공유할 수 있다. 다시 말해서, 메모리 영역(110) 및 로직 영역(130) 각각은 고유의 물리 어드레스를 갖고, 각각의 물리 어드레스는 서로 다른 인덱스를 갖는 논리 어드레스와 맵핑될 수 있다. 도시된 바와 같이, 메모리부(100)의 메모리 영역(110)은 물리 어드레스(MPA_0) 내지 물리 어드레스(MPA_999)의 메모리 영역 물리 어드레스(MPA) 값을 갖고, 로직 영역(130)은 물리 어드레스(LPA_0) 내지 물리 어드레스(LPA_499)의 로직 영역 물리 어드레스(LPA)을 갖는다고 가정한다. 구체적으로, 로직 영역(130)에 포함되는 캐시 메모리 영역(138) 및 캐시 컨트롤 영역(139) 각각은 물리 어드레스(LPA_0) 내지 물리 어드레스(LPA_399)의 로직 영역 물리 어드레스(LPA) 및 물리 어드레스(LPA_400) 내지 물리 어드레스(LPA_499)의 로직 영역 물리 어드레스(LPA)를 갖는다고 가정한다.
메모리 영역(110)의 물리 어드레스(MPA_0) 내지 물리 어드레스(MPA_999)는 각각 논리 어드레스(LA_0) 내지 논리 어드레스(LA_999)와 맵핑될 수 있다. 예를 들어, 물리 어드레스(MPA_1)를 갖는 메모리 영역(110)의 위치는 논리 어드레스(LA_1)를 가진다. 또한, 캐시 메모리 영역(138)의 물리 어드레스(LPA_0) 내지 물리 어드레스(LPA_399)는 각각 논리 어드레스(LA_1000) 내지 논리 어드레스(LA_1399)와 맵핑될 수 있다. 예를 들어, 물리 어드레스(LPA_399)를 갖는 캐시 메모리 영역(138)의 위치는 논리 어드레스(LA_1399)를 갖는다. 또한, 캐시 컨트롤 영역(139)의 물리 어드레스(LPA_400) 내지 물리 어드레스(LPA_499)는 각각 논리 어드레스(LA_1400) 내지 논리 어드레스(LA_1499)와 맵핑될 수 있다. 예를 들어, 물리 어드레스(LPA_400)을 갖는 캐시 컨트롤 영역(139)의 위치는 논리 어드레스(LA_1400)을 갖는다.
메모리 영역(110)과 로직 영역(130)이 동일한 논리 어드레스를 공유함에 따라, 처리 유닛(도 5의 10)은 서로 다른 어드레스의 송수신을 위한 별도의 하드웨어를 필요로 하지 않을 수 있다.
실시 예에 따라, 맵핑 테이블은 메모리부(100)의 메모리 영역(110), 캐시 메모리 영역(138) 또는 캐시 컨트롤 영역(139)에 저장될 수 있다. 다른 실시 예에 따라, 맵핑 테이블은 처리 유닛(10)의 별도의 스토리지 영역(에 저장될 수 있다.
도 14a는 캐시 컨트롤 영역(139)에 저장되는 메모리부 ID 정보(INF_ID(MU))(1100)를 예시적으로 설명하기 위한 도면이다. 이하에서 도 12 및 도 14a를 참조하여 캐시 컨트롤 영역(139)에 저장되는 메모리부 ID 정보(INF_ID(MU))(1100)를 설명한다. 도시된 바와 같이, 복수의 메모리부는 n+1개의 행과 m+1개의 열에 각각 위치한다고 가정한다.
메모리부 ID 정보(INF_ID(MU))(1100)는, 복수의 메모리부의 위치에 대한 정보를 포함할 수 있다. 즉, 특정 메모리부가 위치하는 행 및 열에 대한 정보를 포함할 수 있다. 예를 들어, i번째 행 및 j번째 열에 위치하는 메모리부(1110)은 (i,j)의 형태로 표시될 수 있다.
실시 예에 따라, 메모리부 ID 정보(INF_ID(MU))(1100)는 각각의 메모리부에 인접하는 인접 메모리에 대한 정보를 포함할 수 있다. 예를 들어, 메모리부(1110)의 메모리부 ID 정보(1100) 내의 위치가 i번째 행 및 j번째 열을 의미하는 (i, j)인 경우, 인접 메모리는 i-1번째 행 및 j번째 열에 위치하는 메모리부(i-1, j), i번째 행 및 j+1번째 열에 위치하는 메모리부(i, j+1), i번째 행 및 j-1번째 열에 위치하는 메모리부(i, j-1) 및 i+1번째 행 및 j번째 열에 위치하는 메모리부(i+1, j)가 인접 메모리부에 해당하고, 메모리부(i-1, j), 메모리부(i, j+1), 메모리부(i, j-1) 및 메모리부(i+1, j)의 ID 정보가 메모리부(1110)의 인접 메모리로서 메모리부 ID 정보(INF_ID(MU))(1100)에 저장될 수 있다. 이 때, 인접 메모리는 서로간의 직접 데이터 송수신이 가능한 메모리부로 정의될 수 있다. 즉, 메모리부(1110)는 메모리부(i-1, j), 메모리부(i, j+1), 메모리부(i, j-1) 및 메모리부(i+1, j)와 직접 데이터 송수신이 가능할 수 있다.
다른 실시 예에 따라, 각각의 메모리부에 포함되는 캐시 컨트롤 영역에 인접하지 않은 메모리의 ID 정보가 저장됨에 따라, 인접하지 않는 메모리부로의 데이터 전송 역시 가능하다. 상술한 도 4를 참조하여 설명하면, 제1 메모리부(100), 제2 메모리부(200) 및 제3 메모리부(300)가 각각 (i, j-1), (i, j), (i, j+1)에 위치하는 메모리부인 경우, 제1 메모리부(100)와 제3 메모리부(300)는 인접하지 않으나, 제1 메모리부(100)와 인접하는 제2 메모리부(200)가 제3 메모리부(300)를 포함한 다른 메모리부들의 ID 정보를 저장하고 있기 때문에, 제1 메모리부(100)에 포함된 데이터를 별도의 처리 유닛 등의 개입없이 제3 메모리부(300)에 전달할 수 있다. 이 때, 제1 메모리부(100)에 저장된 데이터는 제1 메모리부(100), 제2 메모리부(200) 및 제3 메모리부(300)의 순서로 전달되고, 제3 메모리부(300)의 메모리 영역(310), 버퍼 영역(331) 또는 캐시 영역(333)에 저장될 수 있다.
도 14b는 캐시 컨트롤 영역(139)에 저장되는 상태 정보를 예시적으로 설명하기 위한 도면이다. 이하에서 도 12, 도 13, 도 14a 및 도 14b를 참조하여 캐시 컨트롤 영역(139)에 저장되는 메모리부 상태 정보(INF_Status(MU))(1200)를 설명한다.
상술한 바와 같이 메모리부(1110)의 인접 메모리는 메모리부(i-1, j), 메모리부(i, j+1), 메모리부(i, j-1) 및 메모리부(i+1, j)로 정의되고, 이에 대한 정보는 메모리부 ID 정보(INF_ID(MU))(1100)에 저장되어 있을 수 있다. 캐시 컨트롤 영역(139)에 저장되는 메모리부 상태 정보(INF_Status(MU))(1200)는 인접 메모리의 상태가 레디(Ready) 상태인지 비지(Busy) 상태인지를 나타낼 수 있다. 이 때, 레디 상태는 인접 메모리가 데이터의 송수신이 가능한 상태임을 의미하고, 비지 상태는 인접 메모리가 데이터의 송수신이 불가능한 상태임을 의미할 수 있다.
도시된 바와 같이, 메모리부(1110)의 인접 메모리들 중 메모리부(i-1, j), 메모리부(i, j+1) 및 메모리부(i+1, j)는 레디 상태이고, 메모리부(i, j-1)은 비지 상태일 수 있다. 즉, 메모리부(i-1, j), 메모리부(i, j+1) 및 메모리부(i+1, j)는 메모리부(1110)과의 데이터 송수신이 가능한 상태이고, 메모리부(i, j-1)은 메모리부(1110)과의 데이터 송수신이 불가능한 상태일 수 있다.
도 14c는 캐시 컨트롤 영역(139)에 저장되는 인스트럭션(1300)을 예시적으로 설명하기 위한 도면이다. 이하에서 도 5, 도 12, 도 13, 도 14a 내지 도 14c를 참조하여 인스트럭션(1300)에 포함되는 정보에 대하여 설명한다.
캐시 컨트롤 영역(139)에 저장되는 인스트럭션(1300)은 처리 유닛에 의하여 캐시 컨트롤 영역(139)에 저장되거나, 메모리부 간의 직렬 인터페이스를 통해 전달 및 저장될 수 있다.
컨트롤 인스트럭션(Ctrl Instruction)은 인접 메모리부와의 데이터 송수신 동작 시에 수행되는 동작에 대한 정보를 포함할 수 있다. 예를 들어, 제2 메모리부(200)로부터 수신하여 제1 캐시 메모리에 저장된 데이터를 제1 메모리 영역(110)에 전송하는 경우, 전송할 데이터가 저장된 제1 캐시 메모리(133)의 시작 어드레스, 데이터의 크기 및 데이터가 저장될 제1 메모리 영역(110)의 시작 어드레스가 제1 메모리부의 컨트롤 인스트럭션(Ctrl Instruction)에 포함될 수 있다.
다른 예로서, 제1 메모리 영역(110)에 저장된 데이터를 제2 메모리부(200)로 전송하는 경우, 전송할 데이터가 저장된 제1 메모리 영역(110)의 시작 어드레스, 전송할 데이터의 크기 및 데이터가 저장될 제1 캐시 메모리(133)의 시작 어드레스가 제1 메모리부의 컨트롤 인스트럭션(Ctrl Instruction)에 포함될 수 있다.
액티브 정보(Active)는 컨트롤 인스트럭션(Ctrl Instruction)에 따른 동작을 수행하는 모드를 정의할 수 있다. 예를 들어, 인스트럭션(1300)이 처리 유닛에 의해 캐시 컨트롤 영역(139)에 저장된 때 컨트롤 인스트럭션(Ctrl Instruction)에 따른 동작을 수행하는 제1 모드, 또는 처리 유닛의 시작 커맨드를 수신한 때 컨트롤 인스트럭션(Ctrl Instruction)에 따른 동작을 수행하는 제2 모드에 대한 정보를 포함할 수 있다.
소스 메모리부 ID 정보(ID_MU(Src))는 컨트롤 인스트럭션(Ctrl Instruction)에 따른 동작의 대상이 되는 타겟 데이터가 저장된 소스 메모리부의 메모리부 ID 정보일 수 있다. 또한, 목적지 메모리부 ID 정보(ID_MU(Dst))는 타겟 데이터가 최종 도달할 목적지 메모리부의 메모리부 ID 정보일 수 있다.
시작 어드레스 정보(ADD_MU(Start))는 소스 메모리부의 어드레스 정보를 의미할 수 있고, 크기 정보(Length)는 타겟 데이터의 크기 또는 타겟 데이터가 저장된 소스 메모리부의 어드레스 길이를 의미할 수 있다.
실시 예에 따라, 인스트럭션(1300)은 소스 메모리부 및 목적지 메모리부에 대한 우선순위 정보를 더 포함할 수 있고, 스케줄러(도 14의 30)는 우선순위 정보에 기초하여 메모리부 사이의 송수신 경로를 결정할 수 있다.
실시 예에 따라, 스케줄러는 캐시 컨트롤 영역(139)에 저장된 메모리부 ID 정보(INF_ID(MU))(1100), 메모리부 상태 정보(INF_Status(MU))(1200) 및 인스트럭션(1300)에 근거하여 타겟 데이터의 경로를 스케줄링할 수 있다. 스케줄러에 의한 스케줄링 동작은 후술한다.
도 15 내지 도 18은 본 발명의 실시 예에 따라 스케줄러가 포함되는 반도체 장치를 설명하기 위한 블록도이다. 설명의 편의를 위하여, 도 1 내지 도 10을 참조하여 설명한 구성 및 동작에 대한 설명은 생략한다.
도 12 내지 도 15를 참조하면, 본 발명의 실시 예에 따른 반도체 장치(1)는 스케줄러(30)를 더 포함할 수 있다. 스케줄러(30)는 경로 정보에 기초하여 메모리부 간의 송수신 경로를 스케줄링할 수 있다. 예를 들어, 경로 정보는 메모리부 ID 정보, 메모리부 상태 정보 및 인스트럭션 중 적어도 하나를 포함할 수 있다.
도 16를 참조하면, 스케줄러(19, 29)는 제1 처리 유닛(10) 및 제2 처리 유닛(20)에 각각 포함될 수 있다. 이 경우, 제1 스케줄러(19)는 제1 처리 유닛(10)에 연결되는 제1 메모리부(100), 제2 메모리부(200), 제3 메모리부(300) 및 제4 메모리부(400)에서의 타겟 데이터의 송수신 경로를 스케줄링할 수 있다. 또한, 제2 스케줄러(29)는 제2 처리 유닛(20)에 연결되는 제5 메모리부(500), 제6 메모리부(600), 제7 메모리부(700) 및 제8 메모리부(800)에서의 타겟 데이터의 송수신 경로를 스케줄링할 수 있다.
도 17을 참조하면, 스케줄러(190, 290, 390, 490, 590, 690, 790, 890)는 각각의 메모리부에 포함될 수 있다. 예를 들어, 제1 메모리부(100), 제2 메모리부(200), 제3 메모리부(300), 제4 메모리부(400), 제5 메모리부(500), 제6 메모리부(600), 제7 메모리부(700) 및 제8 메모리부(800)는 각각 스케줄러(190), 스케줄러(290), 스케줄러(390), 스케줄러(490), 스케줄러(590), 스케줄러(690), 스케줄러(790) 및 스케줄러(890)을 포함할 수 있고, 각각의 스케줄러는 스케줄러가 포함되는 메모리부에서의 타겟 데이터의 송수신 경로를 스케줄링할 수 있다.
도 18을 참조하면, 본 발명의 실시 예에 따른 반도체 장치(1)는 스케줄러(31)를 더 포함할 수 있다. 스케줄러(31)는 경로 정보에 기초하여 메모리부 간의 송수신 경로를 스케줄링할 수 있다. 예를 들어, 경로 정보는 메모리부 ID 정보(도 12의 1100), 메모리부 상태 정보(도 12의 1200) 및 인스트럭션(도 12의 1300) 중 적어도 하나를 포함할 수 있다. 도시된 바와 같이, 스케줄러(31)는 반도체 장치(1)에 포함되는 메모리부들(100 내지 800)에 각각 연결될 수 있다. 이 경우, 스케줄러(31)는 각각의 메모리부들(100 내지 800)로부터 경로 정보를 직접 수신하고, 이에 근거하여 메모리부 간의 데이터 송수신을 스케줄링할 수 있다.
도 19 내지 도 21은 본 발명의 실시 예에 따라, 스케줄러의 스케줄링에 기초하여 소스 메모리부에 저장된 타겟 데이터가 목적지 메모리부로 전달되는 과정을 설명하기 위한 도면이다.
도 19 및 도 21을 설명함에 있어서, 제1 내지 제4 메모리부(3100, 3200, 3300, 3400)와 연결되는 제3 처리 유닛(3000), 제5 내지 제8 메모리부(4100, 4200, 4300, 4400)와 연결되는 제4 처리 유닛(4000), 제9 내지 제12 메모리부(5100, 5200, 5300, 5400)와 연결되는 제5 처리 유닛(5000) 및 제13 내지 제16 메모리부(6100, 6200, 6300, 6400)와 연결되는 제6 처리 유닛(6000)이 배치되고, 동일한 처리 유닛에 연결되는 각각의 메모리부는 직렬 인터페이스를 통하여 서로 데이터 송수신이 가능하다고 가정한다. 또한, 서로 다른 처리 유닛과 연결되는 인접하는 메모리부 사이에는 데이터 송수신이 가능하고, 이는 도면에 양방향 화살표로 도시되었다. 또한, 제1 타겟 데이터(DT_t1)는 제7 메모리부(4300)에 저장되어 있고, 타겟 데이터2는 제14 메모리부(6200)에 저장되었다고 가정한다.
실시 예에 따라, 도 19 내지 도 21의 제1 내지 제16 메모리부(3100, 3200, 3300, 3400, 4100, 4200, 4300, 4400, 5100, 5200, 5300, 5400, 6100, 6200, 6300, 6400) 각각은, 도 5의 제1 메모리부(100) 또는 제2 메모리부(200)에 대응되고, 제1 또는 제2 메모리부(100, 200)와 동일한 구성을 가질 수 있다. 또한, 도 19 내지 도 21의 제1 내지 제4 처리 유닛(3000, 4000, 5000, 6000)은 도 5의 처리 유닛(10)에 대응되고, 도 5에 도시된 구성과 동일한 구성을 포함할 수 있다. 또한, 도 19 내지 도 21의 메모리부들간의 직렬 인터페이스는 도 5의 제1 메모리부(400)의 제1 포트(134) 또는 제2 메모리부(200)의 제2 포트(234)에 대응될 수 있다.
도 19를 참조하면, 제1 타겟 데이터(DT_t1)를 제1 메모리부(3100)에 전송하는 동작을 수행한다. 이 때, 제1 타겟 데이터(DT_t1)가 저장된 메모리부인 제7 메모리부(4300)가 소스 메모리부로 정의되고, 제1 타겟 데이터(DT_t1)가 최종 도달할 메모리부인 제1 메모리부(3100)가 목적지 메모리부로 정의된다.
실시 예에 따라, 스케줄러는 제1 타겟 데이터(DT_t1)가 전송될 경로를 스케줄링한다. 이 때, 인스트럭션, 메모리부 ID 정보 및 메모리부 상태 정보를 포함하는 경로 정보에 근거하여 경로를 결정할 수 있다. 인스트럭션은 인접 메모리부 사이의 우선순위 정보를 포함할 수 있다. 이하에서, 우선순위 정보에 기초하여 경로를 선택하는 실시 예를 설명한다.
우선, 스케줄러는 메모리부 ID 정보를 참조하여 인접 메모리부를 판단할 수 있다. 소스 메모리부인 제7 메모리부(4300)의 인접 메모리부는 제4 메모리부(3400), 제5 메모리부(4100), 제8 메모리부(4400) 및 제13 메모리부(6100)로 판단될 것이다.
이후, 인접 메모리들 사이의 우선순위 정보에 기초하여 경로를 선택한다. 도시된 바와 같이, 제5 메모리부(4100)가 선택되고, 따라서 제1 경로(P1)을 따라 제1 타겟 데이터(DT_t1)가 전송된다.
이후, 스케줄러는 동일한 과정을 통해 경로를 선택할 수 있고, 제2 경로(P2)를 통해 제1 메모리부(3100)에 제1 타겟 데이터(DT_t1)가 도달하여 저장될 수 있다.
다른 실시 예로서, 제13 메모리부(6200)에 저장된 제2 타겟 데이터(DT_t2)는 스케줄러의 스케줄링에 의해 제3 경로(P3) 및 제4 경로(P4)를 통해 목적지 메모리부인 제1 메모리부(3100)에 도달하여 저장될 수 있다.
예시적인 설명을 위하여 서로 인접하는 메모리부 간의 데이터 송수신이 수행되는 것으로 도시하였으나, 본 발명이 이에 한정되지는 않고, 인접하지 않은 메모리부 사이의 데이터 송수신이 가능할 수 있다. 예를 들어, 제3 처리 유닛(3000)에 연결되는 제1 메모리부(3100)와, 제4 처리 유닛(4000)에 연결되는 제8 메모리부(4400) 사이의 데이터 송수신이 가능하도록 구현될 수 있음은 물론이다.
도 20을 참조하면, 본 발명의 실시 예에 따른 반도체 장치는 처리 유닛 사이의 데이터 송수신을 수행할 수 있다. 도시된 바와 같이, 인접하는 처리 유닛인 제3 처리 유닛(3000)과 제4 처리 유닛(4000), 제4 처리 유닛(4000)과 제6 처리 유닛(6000), 제5 처리 유닛(5000)과 제6 처리 유닛(6000) 및 제3 처리 유닛(3000)과 제5 처리 유닛(5000) 사이의 데이터 송수신이 가능하다.
도 20을 참조하면, 제1 타겟 데이터(DT_t1)를 제1 메모리부(3100)에 전송하는 동작을 수행한다. 이 때, 제1 타겟 데이터(DT_t1)가 저장된 메모리부인 제7 메모리부(4300)가 소스 메모리부로 정의되고, 제1 타겟 데이터(DT_t1)가 최종 도달할 메모리부인 제1 메모리부(3100)가 목적지 메모리부로 정의된다. 스케줄러의 경로 스케줄링에 의해, 제1 경로(P1) 및 제2 경로(P2)를 통하여 제1 타겟 데이터(DT_t1)가 목적지 메모리부인 제1 메모리부(3100)에 도달하여 저장될 수 있다.
제2 타겟 데이터(DT_t2)의 경로의 경우, 도 19에서 결정된 경로와 다른 경로가 선택된다. 본 발명의 실시 예에 따라 처리 유닛 사이의 데이터 송수신이 가능한 바, 스케줄러는 경로 정보에 기초하여 처리 유닛 사이의 데이터 송수신 경로를 제2 타겟 데이터(DT_t2)의 경로로 결정할 수 있다. 도시된 바와 같이, 소스 메모리부인 제13 메모리부(6200)에서 제5 경로(P5)를 따라 제6 처리 유닛(6000)으로 전송되고, 제6 처리 유닛(6000)과 인접하는 처리 유닛인 제5 처리 유닛(5000)으로 제6 경로(P6)을 다라 제2 타겟 데이터(DT_t2)가 전송된다. 이후 제7 경로(P7)을 따라 제5 처리 유닛(5000)에서 제3 처리 유닛(3000)으로 제2 타겟 데이터(DT_t2)가 전송되고, 제3 처리 유닛(3000)에 연결된 제1 메모리부(3100), 즉 목적지 메모리부로 제8 경로(P8)을 따라 전송 및 저장될 수 있다.
도 21을 참조하면, 메모리부 상태 정보에 기초하여 타겟 데이터의 경로가 스케줄링될 수 있다. 도시된 바와 같이, 제2 메모리부(3200) 및 제9 메모리부(5100)의 상태 정보는 비지 상태를 포함한다고 가정한다.
제1 타겟 데이터(DT_t1)의 경우, 스케줄러는 제13 경로(P13) 및 제14 경로(P14)를 제1 타겟 데이터(DT_t1)의 전송 경로로 결정할 수 있다. 즉, 도 19 및 도 20의 실시 예에서 설명된 제2 경로(P2)의 경우, 비지 상태인 제2 메모리부(3200)를 포함하고, 따라서 스케줄러는 비지 상태인 메모리부를 제외한 경로를 선택할 수 있다.
마찬가지로 제2 타겟 데이터(DT_t2)의 경우, 제9 경로(P9)를 통해 소스 메모리부인 제13 메모리부(6200)에서 제10 메모리부(5200)로 전송되고, 제1 경로(P1)0을 통해 제13 메모리부(6200)에서 제4 메모리부(3400)로 전송되고, 제11 경로(P11)을 통해 제3 메모리부(3300)로 전송되고, 제12 경로(P12)를 통해 목적지 메모리부인 제1 메모리부(3100)에 도달 및 저장될 수 있다.
이상 첨부된 도면을 참조하여 본 발명의 실시예들을 설명하였으나, 본 발명은 상기 실시예들에 한정되는 것이 아니라 서로 다른 다양한 형태로 제조될 수 있으며, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자는 본 발명의 기술적 사상이나 필수적인 특징을 변경하지 않고서 다른 구체적인 형태로 실시될 수 있다는 것을 이해할 수 있을 것이다. 그러므로 이상에서 기술한 실시예들은 모든 면에서 예시적인 것이며 한정적이 아닌 것으로 이해해야만 한다.
1: 반도체 장치 10: 처리 유닛
11: 프로세서 코어 13: 인터페이스 컨트롤러
15: 버퍼 100, 200: 메모리부
110, 210: 메모리 영역 130, 230: 로직 영역
131, 231: 메모리 버퍼 132, 232: PHY
133, 233: 캐시 메모리 134, 234: 인터페이스 포트

Claims (20)

  1. 제1 메모리 영역 및 상기 제1 메모리 영역과 전기적으로 연결되는 제1 로직 영역을 포함하고, 상기 제1 로직 영역은 캐시 메모리 및 상기 캐시 메모리로의 데이터 송수신 동작을 수행하는 인터페이스 포트를 포함하는 제1 메모리부를 포함하되,
    상기 제1 메모리부는, 상기 제1 인터페이스 포트를 통하여 상기 제1 메모리부에 인접하는 메모리부와의 데이터 송수신 동작을 수행하는 반도체 장치.
  2. 제1항에 있어서,
    상기 제1 메모리부는, 직렬 인터페이스를 이용하여 상기 제1 메모리부 및 상기 인접하는 메모리부 사이의 데이터 송수신 동작을 수행하는 반도체 장치.
  3. 제1항에 있어서,
    상기 제1 메모리부와 전기적으로 연결되는 하나 이상의 제2 메모리부 사이의 데이터 송수신 경로를 스케줄링하는 스케줄러를 더 포함하고,
    상기 제1 메모리부는, 상기 스케줄러에 의해 스케줄링된 상기 데이터 송수신 경로를 통해 상기 제2 메모리부와의 데이터 송수신 동작을 수행하는 반도체 장치.
  4. 제3항에 있어서,
    상기 캐시 메모리는, 상기 제1 메모리부에 인접하는 메모리부에 대한 상태 정보를 저장하고,
    상기 스케줄러는 상기 캐시 메모리에 저장된 상기 상태 정보에 기초하여 상기 데이터 송수신 경로를 스케줄링하는 반도체 장치.
  5. 각각이 캐시 메모리 및 인터페이스 포트를 포함하는 복수의 제1 메모리부; 및
    상기 복수의 제1 메모리부와 전기적으로 연결되고, 상기 복수의 제1 메모리부에 저장된 데이터에 기초한 연산을 수행하는 제1 처리 유닛을 포함하되,
    상기 복수의 제1 메모리부는, 상기 캐시 메모리 및 상기 인터페이스 포트를 이용하여 상기 복수의 제1 메모리부 간의 데이터 송수신 동작을 수행하는 반도체 장치.
  6. 제5항에 있어서,
    상기 복수의 제1 메모리부는, 직렬 인터페이스를 이용하여 상기 복수의 제1 메모리부 간의 데이터 송수신 동작을 수행하는 반도체 장치.
  7. 제5항에 있어서,
    상기 복수의 제1 메모리부 간의 데이터 송수신 동작을 제어하는 인터페이스 컨트롤러를 더 포함하는 반도체 장치.
  8. 제7항에 있어서,
    상기 인터페이스 컨트롤러는 상기 제1 처리 유닛에 포함되는 반도체 장치.
  9. 제7항에 있어서,
    상기 인터페이스 컨트롤러는 상기 복수의 제1 메모리부 각각의 상기 캐시 메모리에 포함되는 반도체 장치.
  10. 제5항에 있어서,
    각각이 캐시 메모리 및 인터페이스 포트를 포함하는 복수의 제2 메모리부; 및
    상기 복수의 제2 메모리부와 전기적으로 연결되고, 상기 복수의 제2 메모리부에 저장된 데이터에 기초한 연산을 수행하는 제2 처리 유닛을 더 포함하되,
    동작 모드에 따라, 상기 제1 처리 유닛 또는 상기 제2 처리 유닛의 연산에 필요한 타겟 데이터를 상기 복수의 제1 메모리부와 상기 복수의 제2 메모리부 사이에서 송수신하거나, 상기 타겟 데이터를 상기 제1 처리 유닛과 상기 제2 처리 유닛 사이에서 송수신하는 반도체 장치.
  11. 제1 처리 유닛 및 제2 처리 유닛;
    상기 제1 처리 유닛에 전기적으로 연결되고, 각각이 제1 메모리 영역 및 제1 캐시 영역을 포함하되, 상기 제1 메모리 영역 및 상기 제1 캐시 영역은 논리 어드레스를 공유하는 복수의 제1 메모리부;
    상기 제2 처리 유닛에 전기적으로 연결되고, 각각이 제2 메모리 영역 및 제2 캐시 영역을 포함하되, 상기 제2 메모리 영역 및 상기 제2 캐시 영역은 논리 어드레스를 공유하는 복수의 제2 메모리부; 및
    상기 제1 메모리 영역 또는 상기 제2 메모리 영역에 저장된 타겟 데이터에 대한 상기 제1 메모리부 및 상기 제2 메모리부 간의 송수신 경로를 스케줄링하는 스케줄러를 포함하되,
    상기 스케줄러는, 상기 제1 캐시 영역 또는 상기 제2 캐시 영역에 저장된 경로 정보에 기초하여 상기 송수신 경로를 스케줄링하는 반도체 장치.
  12. 제11항에 있어서,
    상기 경로 정보는, 상기 제1 메모리부와 상기 제2 메모리부 각각의 ID 정보, 상기 타겟 데이터가 저장된 소스 메모리부와 이에 인접한 인접 메모리부의 ID 정보, 상기 인접 메모리부의 상태 정보 및 상기 송수신 경로의 스케줄링에 대한 인스트럭션을 포함하고,
    상기 스케줄러는 상기 경로 정보에 기초하여 상기 타겟 데이터가 최종 도달하는 목적지 메모리부로의 상기 송수신 경로를 결정하는 반도체 장치.
  13. 제12항에 있어서,
    상기 상태 정보는 상기 인접 메모리부의 상태가 레디(Ready) 상태인지 비지(Busy) 상태인지를 나타내는 R/B 정보를 포함하고,
    상기 스케줄러는 상기 R/B 정보에 기초하여 레디 상태의 인접 메모리부만을 포함하도록 상기 송수신 경로를 결정하는 반도체 장치.
  14. 제12항에 있어서,
    상기 인스트럭션은 상기 소스 메모리부 및 상기 목적지 메모리부에 대한 우선순위 정보를 포함하고,
    상기 스케줄러는 상기 우선순위 정보에 기초하여 상기 송수신 경로를 결정하는 반도체 장치.
  15. 제12항에 있어서,
    상기 경로 정보는, 상기 제1 메모리부 및 상기 제2 메모리부 사이에서 데이터를 송수신하는 제1 모드 및 상기 제1 처리 유닛 및 상기 제2 처리 유닛 사이에서 데이터를 송수신하는 제2 모드를 포함하는 동작모드 정보를 더 포함하고,
    상기 스케줄러는 상기 동작모드 정보에 기초하여 상기 송수신 경로를 결정하는 반도체 장치.
  16. 제11항에 있어서,
    상기 스케줄러는 상기 복수의 제1 메모리부 각각에 포함되는 상기 제1 캐시 영역 및 상기 복수의 제2 메모리부 각각에 포함되는 상기 제2 캐시 영역에 포함되고,
    각각의 상기 스케줄러는, 상기 스케줄러가 포함되는 메모리부에서의 상기 타겟 데이터의 송수신 경로를 스케줄링하는 반도체 장치.
  17. 제11항에 있어서,
    상기 스케줄러는 상기 제1 처리 유닛 및 상기 제2 처리 유닛에 각각 포함되고,
    각각의 상기 스케줄러는, 상기 스케줄러가 포함되는 처리 유닛에 연결되는 메모리부에서의 상기 타겟 데이터의 송수신 경로를 스케줄링하는 반도체 장치.
  18. 제11항에 있어서,
    상기 제1 메모리부 및 상기 제2 메모리부에서의 상기 타겟 데이터에 대한 송수신을 제어하는 인터페이스 컨트롤러를 더 포함하되,
    상기 인터페이스 컨트롤러는, 상기 스케줄링된 송수신 경로에 기초하여 상기 타겟 데이터의 송수신을 제어하는 반도체 장치.
  19. 제18항에 있어서,
    상기 인터페이스 컨트롤러는,
    상기 복수의 제1 메모리부 각각에 포함되는 상기 제1 캐시 영역 및 상기 복수의 제2 메모리부 각각에 포함되는 상기 제2 캐시 영역에 포함되고, 상기 인터페이스 컨트롤러가 포함되는 메모리부에서의 상기 타겟 데이터의 송수신을 제어하는 반도체 장치.
  20. 제18항에 있어서,
    상기 인터페이스 컨트롤러는,
    상기 제1 처리 유닛 및 상기 제2 처리 유닛에 각각 포함되고, 상기 인터페이스 컨트롤러가 포함되는 처리 유닛에 연결된 메모리부에서의 상기 타겟 데이터의 송수신을 제어하는 반도체 장치.
KR1020180153279A 2018-12-03 2018-12-03 반도체 장치 KR20200066774A (ko)

Priority Applications (5)

Application Number Priority Date Filing Date Title
KR1020180153279A KR20200066774A (ko) 2018-12-03 2018-12-03 반도체 장치
US16/526,452 US11200165B2 (en) 2018-12-03 2019-07-30 Semiconductor device
TW108141473A TW202022863A (zh) 2018-12-03 2019-11-15 半導體裝置
CN201911198888.3A CN111258942A (zh) 2018-12-03 2019-11-29 半导体装置
US17/545,797 US11789865B2 (en) 2018-12-03 2021-12-08 Semiconductor device

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020180153279A KR20200066774A (ko) 2018-12-03 2018-12-03 반도체 장치

Publications (1)

Publication Number Publication Date
KR20200066774A true KR20200066774A (ko) 2020-06-11

Family

ID=70849647

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020180153279A KR20200066774A (ko) 2018-12-03 2018-12-03 반도체 장치

Country Status (4)

Country Link
US (2) US11200165B2 (ko)
KR (1) KR20200066774A (ko)
CN (1) CN111258942A (ko)
TW (1) TW202022863A (ko)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20200066774A (ko) 2018-12-03 2020-06-11 삼성전자주식회사 반도체 장치
JP2022010482A (ja) * 2020-06-29 2022-01-17 キオクシア株式会社 メモリシステム
US11239169B1 (en) * 2020-07-24 2022-02-01 Micron Technology, Inc. Semiconductor memory stacks connected to processing units and associated systems and methods
CN114625672A (zh) * 2020-12-11 2022-06-14 超威半导体(上海)有限公司 用于快速数据访问的统一高速缓存系统
TWI817834B (zh) * 2022-11-18 2023-10-01 鯨鏈科技股份有限公司 記憶體架構及其資料處理方法

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7412588B2 (en) 2003-07-25 2008-08-12 International Business Machines Corporation Network processor system on chip with bridge coupling protocol converting multiprocessor macro core local bus to peripheral interfaces coupled system bus
CN101057223B (zh) 2004-10-15 2011-09-14 索尼计算机娱乐公司 支持多处理器系统中的多个配置的方法和设备
KR101453581B1 (ko) 2007-02-02 2014-10-22 사이마스트, 인크. 통합된 고속 패킷 스위칭 방식 직렬 인터페이스를 갖는 프로세서 칩 아키텍처
US7872936B2 (en) * 2008-09-17 2011-01-18 Qimonda Ag System and method for packaged memory
US9432298B1 (en) 2011-12-09 2016-08-30 P4tents1, LLC System, method, and computer program product for improving memory systems
US9417754B2 (en) 2011-08-05 2016-08-16 P4tents1, LLC User interface system, method, and computer program product
US9135185B2 (en) * 2012-12-23 2015-09-15 Advanced Micro Devices, Inc. Die-stacked memory device providing data translation
US9740646B2 (en) 2014-12-20 2017-08-22 Intel Corporation Early identification in transactional buffered memory
US20160292115A1 (en) 2015-03-30 2016-10-06 Integrated Device Technology, Inc. Methods and Apparatus for IO, Processing and Memory Bandwidth Optimization for Analytics Systems
EP3400688B1 (en) 2016-01-04 2020-05-20 Gray Research LLC Massively parallel computer, accelerated computing clusters, and two dimensional router and interconnection network for field programmable gate arrays, and applications
US11108678B2 (en) * 2017-12-18 2021-08-31 Cisco Technology, Inc. Inspired path computation in a network
KR20200009435A (ko) * 2018-07-19 2020-01-30 삼성전자주식회사 딥 러닝용 데이터 표현 관리 방법, 딥 러닝용 데이터 처리 방법 및 이를 수행하는 딥 러닝 시스템
KR20200066774A (ko) 2018-12-03 2020-06-11 삼성전자주식회사 반도체 장치

Also Published As

Publication number Publication date
US20200174928A1 (en) 2020-06-04
US11789865B2 (en) 2023-10-17
US20220100656A1 (en) 2022-03-31
TW202022863A (zh) 2020-06-16
CN111258942A (zh) 2020-06-09
US11200165B2 (en) 2021-12-14

Similar Documents

Publication Publication Date Title
KR20200066774A (ko) 반도체 장치
CN102939596B (zh) 用于多核处理器的多线程应用识别存储器调度方案
CN103366801B (zh) 存储器装置及其操作方法
US10761772B2 (en) Memory system including a plurality of chips and a selectively-connecting bus
US11599491B2 (en) System on chip having semaphore function and method for implementing semaphore function
US10642513B2 (en) Partially de-centralized latch management architectures for storage devices
US20220011982A1 (en) Parallel Memory Access and Computation in Memory Devices
CN109976666A (zh) 非易失性存储器装置和系统及其操作执行方法
US11669272B2 (en) Predictive data transfer based on availability of media units in memory sub-systems
US10564929B2 (en) Communication between dataflow processing units and memories
US11176449B1 (en) Neural network accelerator hardware-specific division of inference into groups of layers
GB2579702A (en) Accelerated access to computations results generated from data stored in memory devices
KR20230059536A (ko) 프로세스 스케줄링 방법 및 장치
CN106569968A (zh) 用于可重构处理器的阵列间数据传输结构与调度方法
US11880299B2 (en) Calendar based flash command scheduler for dynamic quality of service scheduling and bandwidth allocations
US11741043B2 (en) Multi-core processing and memory arrangement
KR20230083769A (ko) 데이터 파싱 인터페이스 장치
KR20230114178A (ko) 낮은 레이턴시를 가지는 다중 저장 장치 시스템
CN108962328A (zh) 包括存储器设备的存储器系统

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal