KR20170100416A - 집적 회로 시스템 - Google Patents

집적 회로 시스템 Download PDF

Info

Publication number
KR20170100416A
KR20170100416A KR1020170003486A KR20170003486A KR20170100416A KR 20170100416 A KR20170100416 A KR 20170100416A KR 1020170003486 A KR1020170003486 A KR 1020170003486A KR 20170003486 A KR20170003486 A KR 20170003486A KR 20170100416 A KR20170100416 A KR 20170100416A
Authority
KR
South Korea
Prior art keywords
code
information
protocol
accelerator
packet information
Prior art date
Application number
KR1020170003486A
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 US15/441,925 priority Critical patent/US10275385B2/en
Publication of KR20170100416A publication Critical patent/KR20170100416A/ko
Priority to US16/355,445 priority patent/US10860518B2/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
    • 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
    • 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

Abstract

집적회로 시스템은 호스트 장치; 및 제1프로토콜에 따라 상기 호스트 장치와 통신하는 메모리 모듈을 포함할 수 있다. 상기 메모리 모듈은 연산 동작을 수행하는 가속기; 데이터를 저장하거나 저장된 데이터를 출력하되, 제2프로토콜에 따라 통신하는 다수의 메모리 장치; 및 상기 호스트 장치, 상기 가속기 및 상기 메모리 장치 사이에 정보를 전달하되, 상기 메모리 장치로 입력되는 정보는 상기 제2프로토콜에 따라 변환하여 전달하고, 상기 메모리 장치에서 출력되는 정보는 상기 제1프로토콜에 따라 변환하여 전달하는 프로토콜 변환부를 포함할 수 있다.

Description

집적 회로 시스템{INTEGRATED CIRCUIT SYSTEM}
본 특허문헌은 집적 회로 시스템에 관한 것이다.
도 1은 집적 회로 시스템의 구성도이다.
도 1을 참조하면, 집적 회로 시스템은 호스트 장치(110) 및 메모리 모듈(120)을 포함할 수 있다.
호스트 장치(110)는 중앙처리장치(CPU), 그래픽 처리 장치(Graphic Processing Unit, GPU) 또는 디스플레이 장치(Display) 등과 같은 장치이며, 필요에 따라 메모리 모듈에 다수의 커맨드/어드레스 신호(CAs)를 전송하고, 메모리 모듈(120)과 데이터(DATA)를 주고받을 수 있다.
메모리 모듈(120)는 다수의 메모리 칩(DRAM0 - DRAM7)을 포함할 수 있다. 다수의 메모리 칩(DRAM0 - DRAM7)은 메모리 모듈(120)이 수신한 다수의 커맨드/어드레스 신호(CAs)에 응답하여 데이터(DATA)를 저장하거나, 저장된 데이터를 출력(DATA)할 수 있다.
호스트 장치(110)와 메모리 모듈(120)의 통신은 DRAM 프로토콜에 따라 이루어질 수 있다. 프로토콜(protocol)이란 정보기기 사이에서 정보교환이 필요한 경우, 이를 원활하게 하기 위하여 정한 여러 가지 통신규칙과 방법에 대한 약속 즉, 통신의 규약을 의미한다. DRAM 프로토콜은 클록 신호(clock)에 동기하여 정해진 시점에 신호를 입출력하는 일종의 동기식 프로토콜일 수 있다. DRAM 프로토콜에 따르면 다수의 커맨드/어드레스 신호(CAs)와 데이터(DATA)는 서로 다른 버스(101, 102)를 통해 전송될 수 있다. 또한 호스트 장치(110)는 클록(CK)과 함께 클록(CK)에 동기된 다수의 커맨드/어드레스 신호(CAs)를 전송하여 메모리 모듈(120)의 동작을 제어할 수 있다. 또한 데이터(DATA)는 데이터 스트로브 신호(DQS)에 동기하여 호스트 장치(110)와 메모리 모듈(120) 사이에 송수신될 수 있다. 그런데 DRAM 프로토콜을 이용하여 전송할 수 있는 정보의 종류는 한정되어 있을 수 있다.
본 발명의 일 실시예는 호스트 장치와 메모리 모듈 사이에 패킷 기반 프로토콜에 따라 통신을 수행하여 다양한 정보를 송수신할 수 있도록 하되, 메모리 모듈 내부에서 프로토콜을 변환하여 메모리 장치도 동작 가능하도록 한 집적 회로 시스템을 제공할 수 있다.
본 발명의 일 실시예는 메모리 모듈에서 가속기를 구비하여 호스트 장치의 연산을 보조하도록 함으로써 동작 속도를 높인 집적 회로 시스템을 제공할 수 있다.
발명의 일 실시예에 따른 집적회로 시스템은 호스트 장치; 및 제1프로토콜에 따라 상기 호스트 장치와 통신하는 메모리 모듈을 포함할 수 있다.
상기 메모리 모듈은 연산 동작을 수행하는 가속기; 데이터를 저장하거나 저장된 데이터를 출력하되, 제2프로토콜에 따라 통신하는 다수의 메모리 장치; 및 상기 호스트 장치, 상기 가속기 및 상기 메모리 장치 사이에 정보를 전달하되, 상기 메모리 장치로 입력되는 정보는 상기 제2프로토콜에 따라 변환하여 전달하고, 상기 메모리 장치에서 출력되는 정보는 상기 제1프로토콜에 따라 변환하여 전달하는 프로토콜 변환부를 포함할 수 있다.
본 발명의 일 실시예에 따른 집적회로 시스템은 호스트 장치; 및 다수의 메모리 장치 및 가속기를 포함하되, 상기 호스트 장치에서 전송된 제1프로토콜에 따른 정보를 제2프로토콜에 따른 정보로 변환하여 상기 메모리 장치로 전달하고, 상기 메모리 장치에서 출력된 상기 제2프로토콜에 따른 정보를 상기 제1프로토콜에 따른 정보로 변환하여 상기 호스트 장치로 전달하는 메모리 모듈을 포함할 수 있다.
본 기술은 집적회로 시스템에서 호스트 장치와 메모리 모듈 사이에서는 패킷 기반 프로토콜에 따라 통신을 수행하여 다양한 정보를 송수신할 수 있도록 하고, 메모리 모듈 내부에서 프로토콜을 변환하여 메모리 장치도 다양한 정보를 이용할 수 있도록 할 수 있다.
또한 본 기술은 메모리 모듈 내부에 가속기를 구비하여 호스트 장치의 연산을 보조함으로써 집적회로 시스템의 성능을 높일 수 있다.
도 1은 집적 회로 시스템의 구성도,
도 2는 본 발명의 일 실시예에 따른 집적회로 시스템의 구성도,
도 3은 호스트 장치(210) 및 메모리 모듈(220) 사이에 전달되는 패킷 정보에 대해 설명하기 위한 도면,
도 4는 메모리 장치(221_0)의 구성도,
도 5는 제1실시예에 따른 가속기(222)의 구성도,
도 6은 제2실시예에 따른 가속기(222)의 구성도,
도 7은 제1실시예에 따른 프로토콜 변환부(223)의 구성도.
이하, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자가 본 발명의 기술적 사상을 용이하게 실시할 수 있도록 상세히 설명하기 위하여, 본 발명의 가장 바람직한 실시예를 첨부 도면을 참조하여 설명하기로 한다.
도 2는 본 발명의 일 실시예에 따른 집적회로 시스템의 구성도이다.
도 2를 참조하면, 집적회로 시스템은 호스트 장치(210) 및 메모리 모듈(220)을 포함할 수 있다.
호스트 장치(210)는 중앙처리장치(CPU), 그래픽 처리 장치(Graphic Processing Unit, GPU) 등과 같은 연산 장치를 포함할 수 있다. 호스트 장치(210)는 메모리 모듈(220)로 라이트 동작을 요청하는 라이트 요청 패킷 정보 및 리드 동작을 요청하는 리드 요청 패킷 정보를 전송하거나 메모리 모듈로(220)부터 전송된 리드 동작 결과를 포함하는 리드 응답 패킷 정보 또는 에러 여부를 나타내는 인지(acknowledgement) 패킷 정보를 수신할 수 있다.
호스트 장치(210)와 메모리 모듈(220)의 정보 교환은 비동기식 프로토콜에 따라 수행될 수 있다. 호스트 장치(210)와 메모리 모듈(220)은 정보를 교환할 때 설정된 코드들을 포함하는 패킷 정보의 형태로 교환할 수 있다. 이하에서는 호스트 장치(210)와 메모리 모듈(220) 사이에 정보 교환을 위해 이용되는 프로토콜을 패킷 프로토콜이라 하고, 호스트 장치(210)와 메모리 모듈(220) 사이에 교환되는 정보를 패킷 정보라할 수 있다.
호스트 장치(210)는 패킷 정보를 통해 메모리 장치(221_0 - 221_7)를 제어신호들을 전송하고, 메모리 장치(221_0 - 221_7)에 저장할 데이터를 전송하거나 메모리 장치(221_0 - 221_7)에 저장된 데이터를 전송받을 수 있다. 또한 호스트 장치(210)는 패킷 정보를 통해 가속기(222)를 제어하기 위한 제어신호들을 전송하고, 가속기(222)에서 연산할 데이터를 전송하거나 가속기(222)에서 연산 결과 생성된 데이터를 전송받을 수 있다. 또한 호스트 장치(210)는 가속기(222)가 FPGA(Field-Programmable Gate Array) 칩인 경우 패킷 정보를 통해 FPGA를 프로그램하기 위한 FPGA 이미지 정보를 전송할 수 있다.
메모리 모듈(220)는 데이터를 저장하거나 저장된 데이터를 출력하고, 호스트 장치(210)의 연산 동작을 보조하는 동작을 수행할 수 있다. 메모리 모듈(220)에서 데이터를 저장하거나 저장된 데이터를 출력하는 동작은 다수의 메모리 장치(221_0 - 221_7)가 수행하고, 호스트 장치(210)의 연산 동작을 보조하는 동작은 가속기(222)가 수행할 수 있다. 메모리 모듈(220)은 다수의 메모리 장치(221_0 - 221_7), 가속기(222) 및 프로토콜 변환부(223)를 포함할 수 있다. 메모리 모듈(220)은 듀얼 인-라인 메모리 모듈(Dual in-line Memory Module; DIMM)을 포함할 수 있다.
프로토콜 변환부(223)는 패킷 기반 프로토콜에 따라 전송된 패킷 정보가 메모리 장치(221_0 - 221_7)를 위한 정보인 경우 패킷 정보를 동기식 프로토콜로 변환하여 메모리 장치(221_0 - 221_7)로 전달하고, 메모리 장치(221_0 - 221_7)에서 출력된 동기식 프로토콜에 따른 정보를 패킷 프로토콜에 따른 패킷 정보로 변환하여 호스트 장치(210)로 전달할 수 있다. 또한 메모리 모듈(220)은 패킷 정보가 가속기(222)를 위한 정보인 경우 가속기(222)가 사용하는 프로토콜에 따라 패킷 정보를 변환하여 가속기(222)로 전달하고, 가속기(222)로부터 출력된 정보를 패킷 프로토콜에 따른 패킷 정보로 변환하여 호스트 장치(210)로 전달할 수 있다. 여기서 가속기(222)가 사용하는 프로토콜이 패킷 프로토콜과 동일한 경우 프로토콜 변환없이 정보를 전달할 수 있다.
프로토콜 변환부(223)와 메모리 장치(221_0 - 221_7) 사이에는 동기식 프로토콜에 따라 정보가 교환될 수 있다. 보다 자세히 살펴보면, 프로토콜 변환부(223)는 다수의 커맨드/어드레스 신호(CAs)를 클록(CK)에 동기하여 메모리 장치(221_0 - 221_7)로 전송하고, 프로토콜 변환부(223)와 메모리 장치(221_0 - 221_7) 사이에는 데이터 스트로브 신호(DQS)에 동기하여 데이터(DATA)가 전달될 수 있다.
프로토콜 변환부(223)와 메모리 장치(221_0 - 221_7) 사이의 정보 교환은 특정 정보가 특정 시점에 전달되도록 결정되어 있을 수 있다. 예를 들어, 메모리 장치(221_0 - 221_7)로 라이트 요청 및 라이트할 데이터를 전달하는 경우 라이트 요청에 대응하는 커맨드/어드레스 신호(CAs)를 전달한 뒤 설정된 시간이 지난 후에 라이트할 데이터(DATA)가 전달되어야 할 수 있다. 또한 메모리 장치(221_0 - 221_7)로 리드 요청을 전달하고, 리드된 데이터를 전달받는 경우 메모리 장치(221_0 - 221_7)는 라이트 요청에 대응하는 커맨드/어드레스 신호(CAs)를 전달한 뒤 설정된 시간이 지난 후에 리드된 데이터(DATA)를 출력해야 할 수 있다. 이하에서는 이러한 동기식 프로토콜을 DRAM 프로토콜로 나타낼 수 있다. DRAM 프로토콜에 대한 자세한 내용은 JEDEC SPEC에 정의되어 있을 수 있다.
프로토콜 변환부(223)는 패킷 기반 프로토콜에 따라 전송된 패킷 정보가 가속기(222)를 위한 것일 경우 가속기(222)에서 사용하는 프로토콜에 따라 패킷 정보를 변환하여 전달하고, 가속기(222)에서 출력된 정보는 패킷 프로토콜에 따라 패킷 정보로 변환하여 전달할 수 있다. 가속기(222)는 사용자의 설계에 따라 다양한 프로토콜을 사용할 수 있으며, 패킷 프로토콜을 사용하여 정보를 전달할 수도 있다. 가속기(222)가 패킷 프로토콜을 사용하는 경우 프로토콜 변환부(223)는 프로토콜의 변환없이 패킷 정보를 전달할 수 있다.
다수의 메모리 장치(221_0 - 221_7)는 프로토콜 변환부(223)로부터 전송된 다수의 커맨드/어드레스 신호(CAs)에 응답하여 입력된 데이터를 라이트하거나 저장된 데이터를 리드하여 출력할 수 있다. 이때 다수의 커맨드/어드레스 신호(CAs)는 메모리 장치(221_0 - 221_7)가 수행할 동작을 지정하기 위한 신호들(이하 커맨드 신호)과 지정된 동작을 수행하는 메모리 장치(221_0 - 221_7) 및 메모리 장치 내부(221_0 - 221_7)의 메모리 셀들 선택하기 위한 신호들(이하 어드레스 신호)를 포함할 수 있다. 즉, 메모리 장치(221_0 - 221_7)는 데이터를 저장하거나 저장된 데이터를 출력하며, DRAM 프로토콜을 이용해 정보를 송수신할 수 있다.
다수의 메모리 장치(221_0 - 221_7)는 커맨드 신호가 라이트 요청에 대응하는 경우 전송된 데이터를 어드레스 신호에 의해 선택된 메모리 장치의 선택된 메모리 셀들에 라이트하고, 커맨드 신호가 리드 요청에 대응하는 경우 어드레스 신호에 의해 선택된 메모리 장치의 선택된 메모리 셀들에 저장된 데이터를 리드하여 출력할 수 있다.
가속기(222)는 프로토콜 변환부(223)를 통해 호스트 장치(210)로부터 전송된 패킷 정보를 이용하여 설정된 연산을 수행하고, 연산 결과를 프로토콜 변환부(223)를 통해 호스트 장치(210)로 전송할 수 있다. 가속기(222)는 호스트 장치(210)가 수행하는 연산 중 일부를 수행하여 호스트 장치(210)의 연산을 보조하는 역할을 수행할 수 있다.
가속기(222)는 FPGA 칩으로 프로그램된 회로로 구성될 수도 있고, 설정된 기능을 수행하는 전용 하드웨어 가속기로 구성될 수도 있다. 전자의 경우 가속기(222) FPGA 칩이 어떤 FPGA 이미지로 프로그램되었는지에 따라 가속기(222)가 수행하는 연산이 달라질 수 있다. 후자의 경우 가속기(222)는 전용 하드웨어 가속기의 설정된 연산만 수행할 수 있다.
FPGA란 비메모리 반도체의 일종으로, 회로 변경이 불가능한 일반 반도체와 달리 여러 번 회로를 다시 새겨 넣을 수 있는 반도체다. 오류 발생시 수정이 가능하고 개발시간이 짧으며 초기 개발비용이 적게 든다. 이미 설계된 하드웨어를 반도체로 생산하기 직전 최종적으로 하드웨어의 동작 및 성능을 검증하기 위해 제작되며, 사용자가 필요에 맞게 프로그래밍하여 사용할 수 있으므로 일종의 주문형 반도체(ASIC)라고 볼 수 있다.
가속기(222)는 라이트 요청 패킷 정보에 의해 라이트된 데이터를 이용하여 연산 동작을 수행하고, 연산 동작을 수행한 결과를 이용하여 만들어진 리드 패킷 정보를 통해 연산 결과를 출력할 수 있다. 가속기(222) 소팅(sorting) 연산, 서칭(searching) 연산, 로직 연산 또는 사칙 연산 중 하나 이상의 연산을 수행할 수 있다. 로직 연산은 AND 게이트, OR 게이트, XOR 게이트, NOR 게이트, NAND 게이트 등 다양한 로직 게이트가 수행하는 연산 또는 이러한 연산을 둘 이상 결합한 연산 동작을 나타낼 수 있다. 가속기(222)가 수행하는 연산 동작은 위에 설명한 예에 한정되지 않으며, 호스트 장치(210)가 수행하는 연산들 중 일부에 대응하는 연산일 수 있다.
도 2의 집적회로 시스템의 경우 호스트 장치(210)와 메모리 모듈(220)에 통신은 패킷 프로토콜에 따라 수행하여 다양한 형태의 패킷 정보를 전달할 수 있도록하면서 메모리 모듈(220)의 내부에서 프로토콜을 변환하여 메모리 장치(221_0 - 221_7) 또는 가속기(222)와 통신함으로써 메모리 모듈(220)이 효과적으로 데이터 저장부 및 가속기의 역할을 동시에 수행하도록 할 수 있다.
호스트 장치(210)에서 메모리 모듈(220)로 전송되는 제1패킷 정보(DOWN_PACKET)를 전달하는 버스(201)와 메모리 모듈(220)에서 호스크 장치(210)로 전송되는 제2패킷 정보(UP_PACKET)를 전달하는 버스(202)는 도 2에 도시된 바와 같이 분리되어 있을 수도 있고, 제1 및 제2패킷 정보(DOWN_PACKET, UP_PACKET)는 동일한 버스를 통해 전달될 수도 있다.
도 3은 호스트 장치(210) 및 메모리 모듈(220) 사이에 전달되는 패킷 정보에 대해 설명하기 위한 도면이다.
도 3을 참조하면, 패킷 정보는 라이트 동작을 요청하는 라이트 요청 패킷 정보(WT_PACK), 리드 동작을 요청하는 리드 요청 패킷 정보(RD_PACK), 리드 동작 결과를 포함하는 리드 응답 패킷 정보(RD_BACK_PACK) 또는 에러 여부를 나타내는 인지(acknowledgement) 패킷 정보(ACK_PACK)를 포함할 수 있다.
패킷 정보는 제1 내지 제6코드 중 하나 이상의 코드를 포함할 수 있다. 제1 내지 제6코드는 각각 1비트 이상의 정보를 포함하는 싱글비트 또는 멀티비트의 정보일 수 있으며 각각의 코드는 그 코드에 대응하도록 정의된 정보를 포함할 수 있다.
제1코드(CODE1)는 커맨드에 대응하는 1비트 이상의 정보를 포함할 수 있다. 커맨드는 메모리 장치(221_0 - 221_7) 또는 가속기(222)에 대한 요청을 구분하기 위한 코드일 수 있다. 도 3에 도시한 예에서, 제1코드(CODE1)은 패킷 정보가 라이트 요청에 대응하는 경우, 리드 요청에 대응하는 경우, 리드 요청에 대한 응답인 경우, 에러 확인을 위한 경우 각각 다른 값을 가질 수 있으며 따라서 2비트의 정보일 수 있다. 다만 제1코드(CODE1)에 포함된 비트수는 제1코드(CODE1)가 나타내야 하는 요청의 개수에 따라 다르게 설정될 수 있다.
제2코드(CODE2)는 어드레스에 대응하는 1비트 이상의 정보를 포함할 수 있다. 어드레스는 패킷 정보에 포함된 요청을 수행하는 장치 및 그 장치에서 요청이 수행되는 주소를 선택하기 위한 신호일 수 있다. 어드레스는 패킷 정보가 메모리 장치(221_0 - 221_7)에 대한 것인지 가속기(222)에 대한 것인지 나타내고, 또 메모리 장치(221_0 - 221_7)에 대한 것인 경우 다수의 메모리 장치(221_0 - 221_7) 중 어떤 메모리 장치에 대한 것인지 나타내고, 또 메모리 장치 또는 가속기의 내부에서 어떤 주소에 대한 것인지 나타낼 수 있다. 즉 제1코드(CODE1)에 대응하는 요청은 제2코드(CODE2)에 대응하는 장치의 대응하는 주소에 대해 수행될 수 있다. 예를 들어, 제1코드(CODE1)가 라이트 요청에 대응하는 경우 데이터가 제2코드(CODE2)에 의해 선택된 장치의 선택되 주소에 라이트될 수 있다.
제3코드(CODE3)는 패킷 정보의 유효성을 확인하고 오류를 검출하기 위해 사용되는 1비트 이상의 정보를 포함할 수 있다. 패킷 정보의 에러를 검출하는 방법은 널리 사용되고 있는 방법 중 하나인 순환 중복 검사(Cyclical Redundancy Check; CRC)일 수 있다. 순환 중복 검사는 데이터 오류를 수학적으로 검출해낸다는 특징이 있으며, 오류를 검사할 때에 체크값을 사용하여 오류 여부를 확인한다. 이때 제3코드(CODE3)는 순환 중복 검사를 위해 필요한 정보(즉, 체크값)일 수 있다.
제4코드(CODE4)는 데이터에 대응할 수 있다. 패킷 정보가 메모리 장치(221_0 - 221_7)에 대응하는 경우 데이터는 메모리 장치(221_0 - 221_7)에 라이트하기 위한 데이터이거나 메모리 장치(221_0 - 221_7)로부터 리드된 데이터일 수 있다. 패킷 정보가 가속기(222)에 대응하는 경우 데이터는 가속기(222)가 수행해야 하는 연산 동작에 필요한 데이터이거나 가속기(222)가 연산 동작을 수행한 결과 생성된 연산 결과에 대한 데이터일 수 있다. 연산에 필요한 데이터란 연산 종류를 지정하기 위한 데이터, 연산의 대상이 되는 데이터 등을 포함할 수 있다.
제5코드(CODE5)는 패킷 정보의 ID에 대응할 수 있다. 호스트 장치(210)와 메모리 모듈(220) 사이에 전달되는 모든 패킷 정보는 고유한 ID를 가지는데, 이는 각각의 패킷 정보를 구별하여 처리할 수 있도록 하기 위함일 수 있다. 호스트 장치(210)에서 메모리 모듈(220)로 전송되는 패킷 정보인 라이트 요청 패킷 정보(WT_PACK)와 리드 요청 패킷 정보(RD_PACK)는 호스트 장치(210)에서 생성된 고유의 ID를 가질 수 있다. 메모리 모듈(220)에서 호스트 장치(210)로 전송되는 패킷 정보인 리드 응답 패킷 정보(RD_BACK_PACK)와 인지 패킷 정보(ACK_PACK)는 호스트 장치(210)에서 전송된 패킷 정보 중 대응하는 패킷 정보와 동일한 ID를 가질 수 있다. 여기서 동일한 ID를 가진다는 것은 제5코드(CODE5)의 값이 동일하다는 것을 나타낼 수 있다.
예를 들어, 어떤 라이트 요청 패킷 정보(WT_PACK)에 대응하여 생성되었으며, 위 라이트 요청 패킷 정보(WT_PACK)에 대한 에러 정보를 포함하는 인지 패킷 정보(ACK_PACK)는 위 라이트 요청 패킷 정보(WT_PACK)와 동일한 ID를 가질 수 있다. 또한 어떤 리드 요청 패킷 정보(RD_PACK)에 대응하여 생성되었으며, 위 리드 요청 패킷 정보(RD_PACK)에 대한 에러 정보를 포함하는 인지 패킷 정보(ACK_PACK)는 위 리드 요청 패킷 정보(RD_PACK)와 동일한 ID를 가질 수 있다. 마지막으로 어떤 리드 요청 패킷 정보(RD_PACK)에 응답하여 생성되었으며, 위 리드 요청 패킷 정보(RD_PACK)에 의해 리드된 데이터를 포함하는 리드 응답 패킷 정보(RD_BACK_PACK)는 위 리드 요청 패킷 정보(RD_PACK)와 동일한 ID를 가질 수 있다.
제6코드(CODE6)는 패킷 정보의 소스를 나타낼 수 있다. 패킷 정보의 소스는 호스트 장치(210)이거나 가속기(222)일 수 있다.
제7코드(CODE7)는 각 패킷 정보의 에러 여부를 검출한 결과에 대응할 수 있다. 제7코드(CODE7)는 1비트의 정보를 포함하며, 1비트의 정보는 대응하는 패킷 정보의 에러 여부에 따라 '0' 또는 '1'값을 가질 수 있다. 예를 들어, 제7코드(CODE7)는 대응하는 패킷 정보에서 에러가 검출되지 않은 경우 '0'값을 가지고, 대응하는 패킷 정보에서 에러가 검출된 경우 '1'값을 가질 수 있다.
라이트 요청 패킷 정보(WT_PACK)는 제1코드(CODE1), 제2코드(CODE2), 제3코드(CODE3), 제4코드(CODE4), 제5코드(CODE5) 및 제6코드(CODE6)를 포함할 수 있다. 리드 요청 패킷 정보(RD_PACK)는 제1코드(CODE1), 제2코드(CODE2), 제3코드(CODE3), 제5코드(CODE5) 및 제6코드(CODE6)를 포함할 수 있다. 리드 응답 패킷 정보(RD_BACK_PACK)는 제1코드(CODE1), 제3코드(CODE3), 제4코드(CODE4), 제5코드(CODE5) 및 제6코드(CODE6)를 포함할 수 있다. 인지 패킷 정보(ACK_PACK)는 제1코드(CODE1), 제3코드(CODE3), 제5코드(CODE5) 및 제7코드(CODE7)를 포함할 수 있다.
위에서 설명한 패킷 정보들은 패킷 프로토콜을 통해 주고 받는 정보의 일 예이며 프로토콜에서 정의된 사항에 따라 위에서 설명한 패킷 정보들과 다른 종류의 패킷 정보도 사용할 수 있다.
도 4는 메모리 장치(221_0)의 구성도이다.
도 4를 참조하면, 메모리 장치(221_0)는 셀 어레이(410), 제어회로(420), 인터페이스 회로(430)를 포함할 수 있다.
셀 어레이(410)는 다수의 워드라인(WL), 다수의 비트라인(BL) 및 다수의 메모리 셀(MC)을 포함할 수 있다. 각각의 메모리 셀(MC)은 1비트의 데이터를 저장할 수 있다.
인터페이스 회로(430)는 메모리 장치(221_0)의 내부와 외부 사이에 신호를 전달하는 역할을 수행할 수 있다. 인터페이스 회로(430)는 클록(CK)에 동기하여 다수의 커맨드/어드레스 신호(CAs)를 입력받아 제어회로(420)로 전달할 수 있다. 또한 인터페이스 회로(430)는 데이터 스트로브 신호(DQS)에 동기하여 데이터(DATA)를 입력받아 셀 어레이(410)로 전달하거나, 셀 어레이(410)에서 출력된 데이터를 데이터 스트로브 신호(DQS)에 동기하여 메모리 장치(221_0) 외부로 출력할 수 있다.
제어회로(420)는 인터페이스 회로(430)를 통해 입력된 다수의 커맨드/어드레스 신호(CAs)에 응답하여 셀 어레이(410)의 동작을 제어할 수 있다. 제어회로(420)는 라이트 요청에 대응하는 다수의 커맨드/어드레스 신호(CAs)에 응답하여 인터페이스 회로(430)로 입력된 데이터(DATA)가 셀 어레이(410)에 포함된 다수의 메모리 셀 중 다수의 커맨드/어드레스(CAs)에 의해 선택된 하나 이상의 메모리 셀들에 라이트되도록 셀 어레이(410)를 제어할 수 있다. 또한 제어회로(420)는 리드 요청에 대응하는 다수의 커맨드/어드레스 신호(CAs)에 응답하여 셀 어레이(410)에 포함된 다수의 메모리 셀 중 다수의 커맨드/어드레스(CAs)에 의해 선택된 하나 이상의 메모리 셀들의 데이터가 리드되도록 셀 어레이(410)를 제어하고, 리드된 데이터가 인터페이스 회로(430)를 통해 메모리 장치(221_0)의 외부로 출력되도록 할 수 있다.
도 4에는 메모리 장치(221_0)의 구성 및 동작에 대해서만 설명하였으나, 나머지 메모리 장치(221_1 - 221_7)의 구성 및 동작도 이와 동일할 수 있다. 도 4에서는 메모리 장치(221_0)의 내부에서 전달되는 데이터를 'IN_DATA'로 표시하였다.
도 5는 제1실시예에 따른 가속기(222)의 구성도이다. 도 5는 가속기(222)가 FPGA 칩을 이용하여 구성되는 경우를 도시한 도면이다.
도 5를 참조하면, 가속기(222)는 인터페이스 회로(510), 프로그래밍 회로(520) 및 FPGA부(530)를 포함할 수 있다.
인터페이스 회로(510)는 프로토콜 변환부(223)와 FPGA부(530) 사이에 정보를 전달할 수 있다. 인터페이스 회로(510)는 프로토콜 변환부(223)로부터 전송되는 연산 정보(OPs)를 FPGA부(530)로 전달하고, FPGA부(530)에서 출력된 결과 정보(RESULTs)를 프로토콜 변환부(223)로 전달할 수 있다.
연산 정보(OPs)는 가속기(222)에 대응하는 패킷 정보를 가속기(222)에서 사용하는 프로토콜에 따라 변환한 것으로 호스트 장치(210)로부터 전송된 요청이 무엇인지 나타내는 정보를 포함하는 코드, 요청을 수행할 주소를 나타내는 정보를 포함하는 코드, 가속기(222)가 처리해야 하는 데이터를 포함하는 코드, 가속기(222)가 처리해야 하는 데이터의 사이즈를 나타내는 정보를 포함하는 코드 및 패킷 정보의 ID를 나타내는 코드를 포함할 수 있다.
결과 정보(RESULTs)는 가속기(222)에 대응하는 패킷 정보를 가속기(222)에서 사용하는 프로토콜에 따라 변환한 것으로 호스트 장치(210)로부터 전송된 요청이 무엇인지 나타내는 정보를 포함하는 코드, 요청을 수행할 주소를 나타내는 정보를 포함하는 코드, 가속기(222)가 연산을 수행한 결과 데이터를 포함하는 코드, 가속기(222)가 연산을 수행한 결과 데이터의 사이즈를 나타내는 정보를 포함하는 코드 및 패킷 정보의 ID를 나타내는 코드를 포함할 수 있다.
프로그래밍 회로(520)는 프로토콜 변환부(223)로부터 전송된 FPGA 이미지 데이터(IMAGE)를 저장하고, 전송받은 FPGA 이미지 데이터에 따라 FPGA부(530)를 프로그래밍할 수 있다. 여기서 FPGA 이미지 데이터는 RTL(Register Transfer Level) 설계를 통해 합성을 하여 생성하거나 Open CL(Open Computing Language)을 이용해서 SW kernel과 HW kernel을 코딩한 뒤 상위수준 컴파일을 통해서 생성할 수 있다. 프로그래밍 회로(520)는 FPGA 이미지 데이터(IMAGE)를 저장하기 위해 SRAM을 포함할 수 있다.
FPGA부(530)는 연산 동작을 수행하기 전에 프로그래밍 회로(520)에 저장된 FPGA 이미지 데이터(IMAGE)에 따라 프로그래밍 회로(520)에 의해 특정 연산을 수행하도록 프로그래밍될 수 있다. 프로그래밍이 완료된 후에는 FPGA부(530)는 인터페이스 회로(510)를 통해 전달되는 연산 정보(OPs)에 포함된 연산할 데이터의 연산을 처리할 수 있다. FPGA부(530)는 연산이 완료되면 그 결과 데이터를 결과 정보(RESULTs)에 포함시켜 인터페이스 회로(510)를 통해 프로토콜 변환부(223)로 전달할 수 있다.
도 5에 도시된 바와 같이, 가속기(222)가 FPGA 칩으로 구성되는 경우 가속기(222)는 고정된 연산만을 수행하는 것이 아니라 사용자의 설정에 따라 다양한 FPGA 이미지 데이터(IMAGE)를 다운 받아 FPGA부(530)를 프로그래밍함으로써 다양한 연산 동작을 수행할 수 있다. 즉, 가속기(222)를 한가지 기능이 아닌 다양한 기능으로 활용하는 것이 가능하다.
도 6은 제2실시예에 따른 가속기(222)의 구성도이다. 도 6은 가속기(222)가 전용 하드웨어 가속기를 이용하여 구성되는 경우를 도시한 도면이다.
도 6을 참조하면, 가속기(222)는 인터페이스 회로(610), 연산부(620)를 포함할 수 있다.
인터페이스 회로(610)는 도 5의 인터페이스 회로(510)와 같은 동작을 수행할 수 있다. 연산부(620)는 도 5의 FPGA부(530)와 유사한 동작을 수행할 수 있다. 다만 연산부(620)는 FPGA부(530)와 달리 프로그래밍에 따라 그 회로 구조 및 연산 기능을 변경할 수 있는 것은 아니며 고정된 회로 구조를 가지고 고정된 연산 기능을 수행할 수 있다. 연산부(620)는 호스트 장치(210)가 수행하는 다양한 연산 기능들 중 일부 기능을 수행할 수 있으며, 예를 들어 가속기(222) 소팅(sorting) 연산, 서칭(searching) 연산, 로직 연산 또는 사칙 연산 중 하나 이상의 연산을 수행할 수 있다.
도 7은 프로토콜 변환부(223)의 구성도이다.
도 7을 참조하면, 프로토콜 변환부(223)는 입력부(710), 패킷 디코더(720), 제1변환부(730), 제2변환부(740), 제3변환부(750), 제4변환부(760), 출력부(770), 제1패킷 인코더(701)를 포함할 수 있다.
입력부(710)는 호스트 장치(210)로부터 전송된 패킷 정보를 저장할 수 있다. 입력부(710)는 패킷 정보(DOWN_PACKET)를 전송받기 위해 필요한 물리적 계층(711)와 입력된 패킷 정보(DOWN_PACKET)를 저장하기 위한 패킷 입력 버퍼(712)를 포함할 수 있다. 패킷 입력 버퍼(712)는 FIFO(First In First Out) 방식으로 입력된 패킷 정보를 버퍼링하여 패킷 디코더(720)로 출력할 수 있다.
패킷 디코더(720)는 입력받은 패킷 정보를 해석하고, 패킷 정보에 포함된 제3코드(CODE3)를 이용해 패킷 정보의 순환 중복 검사(Cyclical Redundancy Check; CRC)를 수행하여 입력된 패킷 정보의 유효성(validation)을 검사할 수 있다. 이때 패킷 정보가 유효한 경우(즉, 패킷 정보에 에러가 없는 경우) 패킷 정보의 제2코드(CODE2)를 분석하여 패킷 정보가 메모리 장치(221_0 - 221_7)에 대응하면 제1경로(PATH1)로 디코딩 결과를 출력하고, 패킷 정보가 가속기(222)에 대응하면 제2경로(PATH2)로 디코딩 결과를 출력할 수 있다.
만약 패킷 정보가 유효하지 않은 경우(즉, 패킷 정보에 에러가 있는 경우) 패킷 디코더(720)는 제1패킷 인코더(701)로 에러가 있는 패킷 정보의 제5코드(CODE5)에 대응하는 ID를 전달하여 제1패킷 인코더(701)가 해당 패킷 정보에 대응하는 인지 패킷 정보를 생성하도록 제어할 수 있다. 제1패킷 인코더(701)는 패킷 정보에 에러가 존재하는지 여부를 나타내는 제7코드(CODE7)를 포함하는 인지 패킷 정보(ACK_PACK)를 생성할 수 있다.
또한 패킷 디코더(720)는 패킷 정보에 포함된 제6코드(CODE6)의 소스 정보에 따라 메모리 장치(221_0 - 221_7)를 액세스한 결과를 호스트 장치(210)로 리턴할지 가속기(222)로 리턴할지 결정할 수 있다. 제6코드(CODE6)에 포함된 소스 정보에 해당 패킷 정보의 소스가 호스트 장치(210)인 경우 메모리 장치(221_0 - 221_7)를 액세스한 결과는 호스트 장치(210)로 전송되고, 제6코드(CODE6)에 포함된 소스 정보에 해당 패킷 정보의 소스가 가속기(222)인 경우 메모리 장치(221_0 - 221_7)를 액세스한 결과는 가속기(222)로 전송될 수 있다.
제1변환부(730)는 제1경로(PATH1)의 디코딩 결과를 이용하여 제2프로토콜에 따른 커맨드/어드레스 신호(CAs) 및 데이터(DATA)를 생성하여 출력할 수 있다. 제1변환부(730)는 제1커맨드 입력 버퍼(731), 제1데이터 입력 버퍼(732), 스케줄러(733) 및 메모리 신호 생성부(734)를 포함할 수 있다.
제1커맨드 입력 버퍼(731)는 패킷 정보에 포함된 코드들 중 제1코드(CODE1), 제2코드(CODE2), 제5코드(CODE5) 및 제6코드(CODE6)를 저장하고, 저장된 코드들을 스케줄러(733)로 전달할 수 있다. 제1데이터 입력 버퍼(732)는 패킷 정보가 라이트 요청 패킷 정보(WT_PACK)인 경우 제4코드(CODE4)에 대응하는 라이트할 데이터를 저장하고, 저장된 데이터를 메모리 신호 생성부(734)로 전달할 수 있다. 스케줄러(733)는 제1커맨드 입력 버퍼(731)를 통해 전송된 제1코드들(CODE1), 즉 커맨드들 중 적당한 커맨드를 선택하여 메모리 신호 생성부(734)로 전달할 수 있다. 이때 커맨드가 리드 요청 패킷 정보에 대응하는 커맨드인 경우 이러한 리드 요청 패킷 정보의 제5코드(CODE5) 및 제6코드(CODE6)가 제1커맨드 출력 버퍼(751)에 저장되도록 할 수 있다. 메모리 신호 생성부(734)는 스케줄러(733) 및 제1데이터 입력 버퍼(732)로부터 전송된 정보들을 이용하여 메모리 장치를 제어하기 위한 다수의 커맨드/어드레스 신호(CAs), 클록(CK), 데이터(DATA) 및 데이터 스트로브 신호(DQS)를 생성할 수 있다. 데이터(DATA) 및 데이터 스트로브 신호(DQS)는 패킷 정보가 라이트 요청 패킷 정보인 경우에만 생성될 수 있다.
제2변환부(740)는 제2경로(PATH2)의 디코딩 결과를 이용하여 가속기(222)를 제어하기 위한 정보(OPs)를 생성하여 출력할 수 있다. 제2변환부(740)는 제2커맨드 입력 버퍼(741), 제2데이터 입력 버퍼(742) 및 가속기 신호 생성부(743)를 포함할 수 있다.
제2커맨드 입력 버퍼(741)는 패킷 정보에 포함된 코드들 중 제1코드(CODE1), 제2코드(CODE2), 제5코드(CODE5) 및 제6코드(CODE6)를 저장하고, 저장된 코드들 가속기 신호 생성부(743)로 전달할 수 있다. 이때 커맨드가 리드 요청 패킷 정보에 대응하는 커맨드인 경우 이러한 리드 요청 패킷 정보의 제5코드(CODE5) 및 제6코드(CODE6)가 제2커맨드 출력 버퍼(761)에 저장되도록 할 수 있다. 제2데이터 입력 버퍼(742)는 패킷 정보가 라이트 요청 패킷 정보(WT_PACK)인 경우 제4코드(CODE4)에 대응하는 라이트할 데이터를 저장하고, 저장된 데이터를 가속기 신호 생성부(743)로 전달할 수 있다. 가속기 신호 생성부(743)는 제2커맨드 입력 버퍼(741) 및 제2데이터 입력 버퍼(742)로부터 전송된 정보들을 이용하여 가속기(222)를 제어하기 위한 연산 정보(OPs)를 생성할 수 있다.
제3변환부(750)는 메모리 장치(221_0 - 221_7)에서 출력된 제2프로토콜에 따른 데이터를 이용하여 제1프로토콜에 따른 정보를 생성할 수 있다. 제3변환부(750)는 제1커맨드 출력 버퍼(751), 제1데이터 출력 버퍼(752) 및 제2패킷 인코더(753)를 포함할 수 있다.
제1커맨드 출력 버퍼(751)는 리드 요청 패킷 정보가 메모리 장치로 전송될 때 저장된 제5 및 제6코드(CODE5, CODE6)를 저장하고, 저장된 코드를 제2패킷 인코더(753)로 출력할 수 있다. 제1데이터 출력 버퍼(752)는 메모리 장치(221_0 - 221_7)로부턴 전송된 데이터 스트로브 신호(DQS)에 동기하여 메모리 장치(221_0 - 221_7)로부턴 전송된 데이터(DATA)를 저장하고, 저장된 데이터를 제2패킷 인코더(753)로 출력할 수 있다. 제2패킷 인코더(753)는 제1커맨드 출력 버퍼(751) 및 제1데이터 출력 버퍼(752)로부터 전달된 정보를 기반으로 리드 응답 패킷 정보(RD_BACK_PACK1)를 생성하여 출력부(770)로 전달할 수 있다.
제4변환부(760)는 가속기(222)에서 출력된 정보(RESULTs)를 이용하여 제1프로토콜에 따른 패킷 정보를 생성할 수 있다. 제4변환부(760)는 제2커맨드 출력 버퍼(761), 제2데이터 출력 버퍼(762) 및 제3패킷 인코더(763)를 포함할 수 있다.
제1커맨드 출력 버퍼(751)는 리드 요청 패킷 정보가 메모리 장치로 전송될 때 저장된 제5 및 제6코드(CODE5, CODE6) 또는 결과 정보(RESULTs)의 일부 코드를 저장하고, 저장된 코드를 제3패킷 인코더(763)로 출력할 수 있다. 제2데이터 출력 버퍼(762)는 가속기(222)로부터 전송된 결과 정보(RESULTs) 중 데이터에 대응하는 부분을 저장하고, 저장된 데이터를 제3패킷 인코더(763)로 출력할 수 있다. 제1패킷 인코더(753)는 제2커맨드 출력 버퍼(761) 및 제2데이터 출력 버퍼(762)로부터 전달된 정보를 기반으로 리드 응답 패킷 정보(RD_BACK_PACK2)를 생성하여 출력부(770)로 전달할 수 있다.
출력부(770)는 제3 및 제4변환부(750, 760)에서 생성된 정보를 호스트 장치(210)로 전송할 수 있다. 출력부(770)는 패킷 스케줄러(771), 출력할 패킷 정보(UP_PACKET)를 저장하기 위한 패킷 출력 버퍼(772) 및 패킷 정보(UP_PACKET)를 전송하기 위한 물리적 계층(773)를 포함할 수 있다. 패킷 출력 버퍼(772)는 FIFO(First In First Out) 방식으로 출력할 패킷 정보를 버퍼링하여 물리적 계층(723)으로 출력할 수 있다.
패킷 스케줄러(771)는 제1 내지 제3패킷 인코더(701, 753, 763)로부터 전달된 패킷 정보들(ACK_PACK, RD_BACK_PACK1, RD_BACK_PACK2) 중 하나를 선택하여 패킷 출력 버퍼(772)로 전달하거나 패킷 디코더(720)로 전달할 수 있다. 패킷 스케줄러(772)는 패킷 정보의 제6코드(CODE6)를 확인하여 패킷 정보의 소스가 호스트 장치(210)인 경우 패킷 정보를 출력 버퍼(772)로 전달하고, 패킷 정보의 소스가 가속기(222)인 경우 패킷 정보를 패킷 디코더(720)로 전달할 수 있다.
도 7에 도시한 실시예에서 프로토콜 변환부(223)는 메모리 장치(221_0 - 221_7)와 호스트 장치(210) 사이, 가속기(222)와 호스트 장치(210) 사이에 정보를 전달함은 물론 메모리 장치(221_0 - 221_7)와 가속기(222) 사이에도 정보를 전달할 수 있다. 도 7에서는 메모리 장치(221_0 - 221_7)와 가속기(222) 사이에 정보를 전달할 때 패킷 디코더(720) 및 패킷 인코더(753)를 거치는 경우에 대해 설명하였으나 설계에 따라 패킷 디코더(720) 및 패킷 인코더(753)를 거치지 않고 직접 제1변환부(720)만을 거쳐 전달될 수도 있다.
본 발명의 기술사상은 상기 바람직한 실시예에 따라 구체적으로 기술되었으나, 상기한 실시예는 그 설명을 위한 것이며 그 제한을 위한 것이 아님을 주의하여야 한다. 또한, 본 발명의 기술분야의 전문가라면 본 발명의 기술사상의 범위 내에서 다양한 실시예가 가능함을 알 수 있을 것이다.

Claims (18)

  1. 호스트 장치; 및
    제1프로토콜에 따라 상기 호스트 장치와 통신하는 메모리 모듈을 포함하고,
    상기 메모리 모듈은
    연산 동작을 수행하는 가속기;
    데이터를 저장하거나 저장된 데이터를 출력하되, 제2프로토콜에 따라 통신하는 다수의 메모리 장치; 및
    상기 호스트 장치, 상기 가속기 및 상기 메모리 장치 사이에 정보를 전달하되, 상기 메모리 장치로 입력되는 정보는 상기 제2프로토콜에 따라 변환하여 전달하고, 상기 메모리 장치에서 출력되는 정보는 상기 제1프로토콜에 따라 변환하여 전달하는 프로토콜 변환부
    를 포함하는 집적회로 시스템.
  2. 제 1항에 있어서,
    상기 제1프로토콜은 비동기식 프로토콜이고, 상기 제2프로토콜은 동기식 프로토콜인 집적회로 시스템.
  3. 제 1항에 있어서,
    상기 호스트 장치는
    중앙 처리 장치(Central Processing Unit)를 포함하는 집적회로 시스템.
  4. 제 1항에 있어서,
    상기 가속기는
    FPGA(Field-Programmable Gate Array) 칩을 프로그램한 회로를 포함하는 집적회로 시스템.
  5. 제 1항에 있어서,
    상기 가속기는
    설정된 기능을 수행하는 전용 하드웨어 가속기를 포함하는 집적회로 시스템.
  6. 제 1항에 있어서,
    상기 호스트 장치와 상기 메모리 모듈 사이에 전달되는 정보는
    라이트 동작을 요청하는 라이트 요청 패킷 정보, 리드 동작을 요청하는 리드 요청 패킷 정보, 리드 동작 결과를 포함하는 리드 응답 패킷 정보 또는 에러 여부를 나타내는 인지(acknowledgement) 패킷 정보를 포함하는 집적회로 시스템.
  7. 제 6항에 있어서,
    상기 라이트 요청 패킷 정보는
    커맨드에 대응하는 제1코드, 어드레스에 대응하는 제2코드, 유효성 확인을 위한 제3코드, 데이터에 대응하는 제4코드, 패킷 정보의 ID에 대응하는 제5코드 및 패킷 정보의 소스를 나타내는 제6코드를 포함하고,
    상기 리드 요청 패킷 정보는
    상기 제1코드, 상기 제2코드, 상기 제3코드, 상기 제5코드 및 상기 제6코드를 포함하고,
    상기 리드 응답 패킷 정보는
    상기 제1코드, 상기 제3코드, 상기 제4코드, 상기 제5코드 및 상기 제6코드를 포함하고,
    상기 인지 패킷 정보는
    상기 제1코드, 상기 제3코드, 상기 제5코드 및 에러 여부에 대응하는 상기 제7코드를 포함하는 집적회로 시스템.
  8. 제 1항에 있어서,
    상기 메모리 모듈은
    듀얼 인-라인 메모리 모듈(Dual in-line Memory Module; DIMM)을 포함하는 집적회로 시스템.
  9. 제 1항에 있어서,
    상기 가속기는
    소팅(sorting) 연산, 서칭(searching) 연산, 로직 연산 또는 사칙 연산 중 하나 이상의 연산을 수행하는 집적회로 시스템.
  10. 제 1항에 있어서,
    상기 가속기는
    라이트된 데이터를 이용하여 연산 동작을 수행하고, 연산 동작을 수행한 결과를 리드 데이터로 출력하는 집적회로 시스템.
  11. 제 1항에 있어서,
    상기 프로토콜 변환부는
    상기 호스트 장치에서 전송된 정보를 입력받는 입력부;
    상기 입력부로 입력된 정보를 디코딩하여 상기 입력된 정보가 상기 메모리 장치에 대응하면 제1경로로 디코딩 결과를 출력하고, 상기 입력된 정보가 상기 가속기에 대응하면 제2경로로 상기 디코딩 결과를 출력하는 패킷 디코더;
    상기 제1경로의 상기 디코딩 결과를 이용하여 상기 제2프로토콜에 따른 커맨드/어드레스 신호 또는 데이터를 생성하여 출력하는 제1변환부;
    상기 제2경로의 상기 디코딩 결과를 이용하여 상기 가속기를 제어하기 위한 정보를 생성하는 제2변환부;
    상기 메모리 장치에서 출력된 상기 제2프로토콜에 따른 데이터를 이용하여 상기 제1프로토콜에 따른 정보를 생성하는 제3변환부;
    상기 가속기에서 출력된 정보를 이용하여 상기 제1프로토콜에 따른 정보를 생성하는 제4변환부; 및
    상기 제3 및 제4변환부에서 생성된 정보를 상기 호스트 장치로 전송하는 출력부
    를 포함하는 집적회로 시스템.
  12. 제 11항에 있어서,
    상기 패킷 디코더는
    상기 입력부로 입력된 정보에 유효성(validation)을 검사하고, 상기 유효성 검사 결과를 출력하는 집적회로 시스템.
  13. 호스트 장치; 및
    다수의 메모리 장치 및 가속기를 포함하되, 상기 호스트 장치에서 전송된 제1프로토콜에 따른 정보를 제2프로토콜에 따른 정보로 변환하여 상기 메모리 장치로 전달하고, 상기 메모리 장치에서 출력된 상기 제2프로토콜에 따른 정보를 상기 제1프로토콜에 따른 정보로 변환하여 상기 호스트 장치로 전달하는 메모리 모듈
    을 포함하는 집적회로 시스템.
  14. 제 13항에 있어서,
    상기 제1프로토콜은 비동기식 프로토콜이고, 상기 제2프로토콜은 동기식 프로토콜인 집적회로 시스템.
  15. 제 13항에 있어서,
    상기 가속기는
    FPGA(Field-Programmable Gate Array) 칩을 프로그램한 회로를 포함하는 집적회로 시스템.
  16. 제 13항에 있어서,
    상기 가속기는
    설정된 기능을 수행하는 전용 하드웨어 가속기를 포함하는 집적회로 시스템.
  17. 제 13항에 있어서,
    상기 호스트 장치와 상기 메모리 모듈 사이에 전달되는 정보는
    라이트 동작을 요청하는 라이트 요청 패킷 정보, 리드 동작을 요청하는 리드 요청 패킷 정보, 리드 동작 결과를 포함하는 리드 응답 패킷 정보 또는 에러 여부를 나타내는 인지(acknowledgement) 패킷 정보를 포함하는 집적회로 시스템.
  18. 제 17항에 있어서,
    상기 라이트 요청 패킷 정보는
    커맨드에 대응하는 제1코드, 어드레스에 대응하는 제2코드, 유효성 확인을 위한 제3코드, 데이터에 대응하는 제4코드, 패킷 정보의 ID에 대응하는 제5코드 및 상기 패킷 정보의 소스를 나타내는 제6코드를 포함하고,
    상기 리드 요청 패킷 정보는
    상기 제1코드, 상기 제2코드, 상기 제3코드, 상기 제5코드 및 상기 제6코드를 포함하고,
    상기 리드 응답 패킷 정보는
    상기 제1코드, 상기 제3코드, 상기 제4코드, 상기 제5코드 및 상기 제6코드를 포함하고,
    상기 인지 패킷 정보는
    상기 제1코드, 상기 제3코드, 상기 제5코드 및 에러 여부에 대응하는 상기 제7코드를 포함하는 집적회로 시스템.
KR1020170003486A 2016-02-25 2017-01-10 집적 회로 시스템 KR20170100416A (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
US15/441,925 US10275385B2 (en) 2016-02-25 2017-02-24 Integrated circuit system
US16/355,445 US10860518B2 (en) 2016-02-25 2019-03-15 Integrated circuit system

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
KR1020160022693 2016-02-25
KR20160022693 2016-02-25

Publications (1)

Publication Number Publication Date
KR20170100416A true KR20170100416A (ko) 2017-09-04

Family

ID=59924382

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020170003486A KR20170100416A (ko) 2016-02-25 2017-01-10 집적 회로 시스템

Country Status (1)

Country Link
KR (1) KR20170100416A (ko)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110533188A (zh) * 2018-05-25 2019-12-03 爱思开海力士有限公司 机器学习设备和使用其的机器学习系统
US11972328B2 (en) 2018-05-25 2024-04-30 SK Hynix Inc. Machine learning device and machine learning system using the same

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110533188A (zh) * 2018-05-25 2019-12-03 爱思开海力士有限公司 机器学习设备和使用其的机器学习系统
US11972328B2 (en) 2018-05-25 2024-04-30 SK Hynix Inc. Machine learning device and machine learning system using the same

Similar Documents

Publication Publication Date Title
US10860518B2 (en) Integrated circuit system
US8020068B2 (en) Memory system and command handling method
TWI684102B (zh) 記憶體系統中的鏈路糾錯
US10719472B2 (en) Interface circuit and packet transmission method thereof
CN106648954B (zh) 包括片上错误校正码电路的存储器件和系统
CN110377453A (zh) 半导体存储器装置和包括半导体存储器装置的存储器系统
TWI635503B (zh) 半導體記憶體裝置及操作該半導體記憶體裝置的方法
CN106205728B (zh) 奇偶校验电路及包括该奇偶校验电路的存储器装置
US20070067603A1 (en) Nonvolatile memory device and the method of generation of the address translation table
CN104637534B (zh) 半导体存储器件及操作其的方法
US20150026509A1 (en) Storage device having a data stream converter
KR20100085564A (ko) 데이터 처리 시스템과 데이터 처리 방법
KR102317788B1 (ko) 스토리지 장치 및 스토리지 컨트롤러의 동작 방법
US8045405B2 (en) Memory system, memory device and command protocol
KR20200052842A (ko) 메모리 시스템, 메모리 모듈 및 메모리 시스템의 동작 방법
US9141472B2 (en) Sharing a check bit memory device between groups of memory devices
JP6187841B2 (ja) デバイス、システム、方法、および装置
KR20170100416A (ko) 집적 회로 시스템
KR102577268B1 (ko) 메모리 장치 및 이의 동작 방법
KR102157571B1 (ko) 메모리 시스템
US10579470B1 (en) Address failure detection for memory devices having inline storage configurations
KR20180013212A (ko) 데이터 비트 인버전 제어 장치 및 이를 포함하는 반도체 장치
KR102532528B1 (ko) 메모리 장치 및 이의 동작 방법
TWI740009B (zh) 編碼機制及其編碼方法
JPS5856298A (ja) エラ−検出訂正機能を持つ記憶装置のテスト方式

Legal Events

Date Code Title Description
A201 Request for examination