KR20220139578A - 메모리 액세스를 위한 직렬 통신 장치 및 시스템 - Google Patents

메모리 액세스를 위한 직렬 통신 장치 및 시스템 Download PDF

Info

Publication number
KR20220139578A
KR20220139578A KR1020210045717A KR20210045717A KR20220139578A KR 20220139578 A KR20220139578 A KR 20220139578A KR 1020210045717 A KR1020210045717 A KR 1020210045717A KR 20210045717 A KR20210045717 A KR 20210045717A KR 20220139578 A KR20220139578 A KR 20220139578A
Authority
KR
South Korea
Prior art keywords
packet
buffer
request
retry
payload
Prior art date
Application number
KR1020210045717A
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 KR1020210045717A priority Critical patent/KR20220139578A/ko
Priority to US17/559,248 priority patent/US11836106B2/en
Publication of KR20220139578A publication Critical patent/KR20220139578A/ko

Links

Images

Classifications

    • 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
    • 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/382Information transfer, e.g. on bus using universal interface adapter
    • G06F13/387Information transfer, e.g. on bus using universal interface adapter for adaptation of different data processing systems to different peripheral devices, e.g. protocol converters for incompatible systems, open system
    • 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/4204Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus
    • G06F13/4234Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus being a memory bus
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • H04L12/28Data switching networks characterised by path configuration, e.g. LAN [Local Area Networks] or WAN [Wide Area Networks]
    • H04L12/40Bus networks
    • H04L12/40052High-speed IEEE 1394 serial bus
    • H04L12/40071Packet processing; Packet format
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/90Buffering arrangements
    • H04L49/9042Separate storage for different parts of the packet, e.g. header and payload
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/90Buffering arrangements
    • H04L49/9063Intermediate storage in different physical parts of a node or terminal
    • H04L49/9078Intermediate storage in different physical parts of a node or terminal using an external memory or storage device
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/08Protocols for interworking; Protocol conversion
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2213/00Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F2213/0038System on Chip
    • 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 Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Multimedia (AREA)
  • Computer Security & Cryptography (AREA)
  • Communication Control (AREA)

Abstract

메모리 액세스를 위한 직렬 통신 장치 및 시스템이 제공된다. 메모리 액세스를 위한 직렬 통신 장치는, 하드웨어 가속 장치로부터 요청 트랜잭션을 수신하는 SoC(System-on-Chip) 버스 인터페이스; 미리 정해진 패킷 프로토콜에 따라, 상기 SoC 버스 인터페이스를 통해 수신한 요청 트랜잭션을 패킷으로 변환하는 마스터 프로토콜 처리기; 및 상기 패킷을 직렬 전송하는 직렬 트랜시버를 포함할 수 있다.

Description

메모리 액세스를 위한 직렬 통신 장치 및 시스템{SERIAL COMMUNICATION DEVICE AND SYSTEM FOR MEMORY ACCESS}
본 발명은 메모리 액세스를 위한 직렬 통신 장치 및 시스템에 관한 것이다.
최근 컴퓨팅 장치의 처리 성능을 높이기 위해 하드웨어 가속 장치의 사용이 증가하고 있다. 예를 들어, 빅 데이터, 인공지능, 딥 러닝 등의 응용에서는 데이터 간의 연관 관계성이 매우 높기 때문에, 메모리에 상주시켜야 할 데이터의 양은 급속도로 증가하고 있으며, 이와 같은 대량의 데이터를 처리하기 위해, GPU(Graphics Processing Units), FPGA(Field-Programmable Gate Arrays), ASIC(Application-Specific Integrated Circuits), DSP(Digital Signal Processor) 등의 가속 장치(또는 가속기)의 사용이 보편화되고 있다.
한편, 가속 장치가 대량의 데이터를 처리한 결과 역시 메모리의 양을 많이 차지하기 때문에, 가속 장치의 처리 결과는 외부 메모리(또는 외장 메모리)에 저장될 수 있다. 이를 위해, 가속 장치와 네트워크 장치 사이의 DMA(Direct Memory Access) 메커니즘이 사용될 수 있으나, 이러한 경우, 네트워크 상에서 데이터를 상호 교환하기 위한 네트워크 부하가 급격히 증가할 수 있다.
본 발명이 해결하고자 하는 과제는, 대량의 데이터 처리 결과를 저장할 수 있는 메모리 용량을 제공하면서도 네트워크 부하를 최소화할 수 있는 메모리 액세스를 위한 직렬 통신 장치 및 시스템을 제공하는 것이다.
본 발명의 일 실시 예에 따른 메모리 액세스를 위한 직렬 통신 장치는, 하드웨어 가속 장치로부터 요청 트랜잭션을 수신하는 SoC(System-on-Chip) 버스 인터페이스; 미리 정해진 패킷 프로토콜에 따라, 상기 SoC 버스 인터페이스를 통해 수신한 요청 트랜잭션을 패킷으로 변환하는 마스터 프로토콜 처리기; 및 상기 패킷을 직렬 전송하는 직렬 트랜시버를 포함할 수 있다.
본 발명의 일부 실시 예에서, 상기 마스터 프로토콜 처리기는, 상기 SoC 버스 인터페이스를 통해 수신한 요청 트랜잭션으로부터 헤더 패킷 및 데이터 패킷을 생성하는 패킷 생성 모듈; 상기 직렬 트랜시버에 상기 헤더 패킷 및 상기 데이터 패킷을 함께 전송하는 제1 전송 레인; 및 상기 직렬 트랜시버에 상기 데이터 패킷만을 전송하는 하나 이상의 제2 전송 레인을 포함할 수 있다.
본 발명의 일부 실시 예에서, 상기 제1 전송 레인 및 상기 하나 이상의 제2 전송 레인은, 상기 데이터 패킷을 저장하는 요청 페이로드 버퍼; 상기 요청 페이로드 버퍼에 저장된 데이터의 길이를 저장하는 요청 페이로드 길이 버퍼; 및 상기 요청 페이로드 버퍼 및 상기 요청 페이로드 길이 버퍼에 저장된 데이터에 기초하여 패킷 포매팅(packet formatting)을 수행하는 요청 패킷 포매터(packet formatter)를 포함할 수 있다.
본 발명의 일부 실시 예에서, 상기 하나 이상의 제2 전송 레인은, 재시도 페이로드 버퍼, 재시도 페이로드 주소 버퍼 및 재시도 길이 버퍼와, 상기 재시도 페이로드 버퍼, 상기 재시도 페이로드 주소 버퍼 및 상기 재시도 길이 버퍼를 제어하는 재시도 제어기를 더 포함할 수 있다.
본 발명의 일부 실시 예에서, 상기 제1 전송 레인은, 상기 헤더 패킷을 저장하는 요청 헤더 버퍼를 더 포함하고, 상기 요청 패킷 포매터는, 상기 요청 헤더 버퍼, 상기 요청 페이로드 버퍼 및 상기 요청 페이로드 길이 버퍼에 저장된 데이터에 기초하여 패킷 포매팅을 수행할 수 있다.
본 발명의 일부 실시 예에서, 상기 제1 전송 레인은, 재시도 헤더 버퍼, 재시도 페이로드 버퍼, 재시도 페이로드 주소 버퍼 및 재시도 길이 버퍼와, 상기 재시도 헤더 버퍼, 상기 재시도 페이로드 버퍼, 상기 재시도 페이로드 주소 버퍼 및 상기 재시도 길이 버퍼를 제어하는 재시도 제어기를 더 포함할 수 있다.
본 발명의 일부 실시 예에서, 상기 마스터 프로토콜 처리기는, 상기 직렬 트랜시버로부터 완료 패킷을 수신하는 복수의 수신 레인; 및 상기 복수의 수신 레인을 통해 수신한 데이터를 상기 SoC 버스 인터페이스에 제공하는 패킷 소비 모듈을 포함할 수 있다.
본 발명의 일부 실시 예에서, 상기 복수의 수신 레인은 상기 완료 패킷을 검사하는 완료 패킷 분석 모듈을 포함하고, 상기 완료 패킷 분석 모듈은 수신한 패킷에 대한 데이터 무결성 정보를 생성하여 상기 요청 패킷 포매터에 제공할 수 있다.
본 발명의 일부 실시 예에서, 상기 요청 패킷 포매터는 상기 데이터 무결성 정보에 기초하여, 수신된 패킷이 정상인 경우에는 Ack를 생성하고 비정상인 경우에는 Nak를 생성할 수 있다.상기 완료 패킷 분석 모듈은 수신한 패킷에 대한 무결성 정보를 생성하여 상기 요청 패킷 포매터에 제공할 수 있다.
본 발명의 일 실시 예에 따른 메모리 액세스를 위한 직렬 통신 장치는, SoC(System-on-Chip) 버스 호환 메모리 제어기에 의해 액세스되는 SoC 버스 인터페이스; 미리 정해진 패킷 프로토콜에 따라 생성된 패킷을 직렬 수신하는 직렬 트랜시버; 및 상기 직렬 트랜시버를 통해 수신한 상기 패킷을 변환하여 상기 SoC 버스 인터페이스에 제공하는 슬레이브 프로토콜 처리기를 포함할 수 있다.
본 발명의 일부 실시 예에서, 상기 슬레이브 프로토콜 처리기는, 상기 직렬 트랜시버를 통해 수신한 헤더 패킷 및 데이터 패킷을 함께 전송하는 제1 수신 레인; 상기 데이터 패킷만을 하나 이상의 제2 수신 레인; 및 상기 제1 수신 레인 및 상기 하나 이상의 제2 수신 레인을 통해 수신한 데이터를 상기 SoC 버스 인터페이스에 전송하는 패킷 소비 모듈을 포함할 수 있다.
본 발명의 일부 실시 예에서, 상기 제1 수신 레인 및 상기 하나 이상의 제2 수신 레인은, 상기 직렬 트랜시버를 통해 수신한 상기 데이터 패킷을 검사하는 요청 패킷 분석 모듈; 상기 데이터 패킷을 저장하는 요청 페이로드 버퍼; 및 상기 요청 페이로드 버퍼에 저장된 데이터의 길이를 저장하는 요청 길이 버퍼를 포함할 수 있다.
본 발명의 일부 실시 예에서, 상기 제1 수신 레인의 상기 요청 패킷 분석 모듈은, 상기 직렬 트랜시버를 통해 수신한 상기 헤더 패킷을 추가로 검사하고, 상기 제1 수신 레인은, 상기 헤더 패킷을 저장하는 요청 헤더 버퍼를 더 포함할 수 있다.
본 발명의 일부 실시 예에서, 상기 슬레이브 프로토콜 처리기는, 상기 SoC 버스 인터페이스를 통해 수신한 응답 트랜잭션으로부터 완료 패킷을 생성하는 패킷 생성 모듈; 및 상기 직렬 트랜시버에 상기 완료 패킷을 전송하는 제1 전송 레인을 포함할 수 있다.
본 발명의 일부 실시 예에서, 상기 제1 전송 레인은, 상기 완료 패킷을 저장하는 완료 페이로드 버퍼; 상기 완료 페이로드 버퍼에 저장된 데이터의 길이를 저장하는 완료 페이로드 길이 버퍼; 및 상기 완료 페이로드 버퍼 및 상기 완료 페이로드 길이 버퍼에 저장된 데이터에 기초하여 패킷 포매팅(packet formatting)을 수행하는 완료 패킷 포매터(packet formatter)를 포함할 수 있다.
본 발명의 일부 실시 예에서, 상기 제1 전송 레인은, 재시도 페이로드 버퍼, 재시도 페이로드 주소 버퍼 및 재시도 길이 버퍼와, 상기 재시도 페이로드 버퍼, 상기 재시도 페이로드 주소 버퍼 및 상기 재시도 길이 버퍼를 제어하는 재시도 제어기를 더 포함할 수 있다.
본 발명의 일부 실시 예에서, 상기 요청 패킷 분석 모듈은 수신한 패킷에 대한 데이터 무결성 정보를 생성하여 상기 완료 패킷 포매터에 제공할 수 있다.
본 발명의 일부 실시 예에서, 상기 완료 패킷 포매터는 상기 데이터 무결성 정보에 기초하여, 수신된 패킷이 정상인 경우에는 Ack를 생성하고 비정상인 경우에는 Nak를 생성할 수 있다.
본 발명의 일 실시 예에 따른 메모리 액세스를 위한 직렬 통신 시스템은, 하드웨어 가속 장치로부터 요청 트랜잭션을 수신하고, 미리 정해진 패킷 프로토콜에 따라 상기 요청 트랜잭션을 패킷으로 변환하여 직렬 전송하는 메모리 확장기; 및 상기 미리 정해진 패킷 프로토콜에 따라 상기 직렬 전송된 상기 패킷을 수신하고, 상기 패킷을 상기 요청 트랜잭션으로 변환하여, 메모리 장치를 액세스하는 외부 메모리 인터페이스를 포함하고, 상기 외부 메모리 인터페이스는, 상기 직렬 전송된 상기 패킷을 상기 요청 트랜잭션으로 변환하는 복수의 슬레이브 프로토콜 처리기를 포함할 수 있다.
본 발명의 일부 실시 예에서, 상기 메모리 확장기는 제1 메모리 확장기 및 제2 메모리 확장기를 포함하고, 상기 복수의 슬레이브 프로토콜 처리기는, 상기 제1 메모리 확장기로부터 패킷화된 요청 트랜잭션을 수신하여 상기 메모리 장치를 액세스하는 제1 슬레이브 프로토콜 처리기; 및 상기 제2 메모리 확장기로부터 패킷화된 요청 트랜잭션을 수신하여 상기 메모리 장치를 액세스하는 제2 슬레이브 프로토콜 처리기를 포함할 수 있다.
본 발명의 실시 예들에 따르면, 특히 하드웨어 가속 장치가 사용되는 환경에서, 외부 메모리를 하드웨어 가속 장치에 제공하여 대량의 데이터를 처리하거나, 그 처리 결과를 저장할 수 있는 메모리 용량을 제공할 수 있을 뿐 아니라, 하드웨어 가속 장치와 외부 메모리 사이에서 대량의 데이터 처리 결과의 전송 성능 및 효율성을 개선하여 네트워크 부하를 최소화할 수 있다. 또한, 하드웨어 가속 장치는 제약 없이 다양한 종류의 메모리 장치를 사용할 수 있다.
도 1은 본 발명의 일 실시 예에 따른 메모리 액세스를 위한 직렬 통신 시스템을 설명하기 위한 도면이다.
도 2는 본 발명의 일 실시 예에 따른 메모리 확장기를 설명하기 위한 도면이다.
도 3 내지 도 6은 본 발명의 일 실시 예에 따른 메모리 액세스를 위한 직렬 통신 시스템에서 사용될 수 있는 패킷 프로토콜의 구현 예들을 설명하기 위한 도면들이다.
도 7은 본 발명의 일 실시 예에 따른 외부 메모리 인터페이스를 설명하기 위한 도면이다.
도 8은 본 발명의 일 실시 예에 따른 메모리 액세스를 위한 직렬 통신 시스템을 설명하기 위한 도면이다.
도 9는 본 발명의 실시 예들에 따른 메모리 액세스를 위한 직렬 통신 장치 및 시스템을 구현하기 위한 컴퓨팅 장치를 설명하기 위한 블록도이다.
아래에서는 첨부한 도면을 참조하여 본 발명의 실시 예에 대하여 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자가 용이하게 실시할 수 있도록 상세히 설명한다. 그러나 본 발명은 여러 가지 상이한 형태로 구현될 수 있으며 여기에서 설명하는 실시 예에 한정되지 않는다. 그리고 도면에서 본 발명을 명확하게 설명하기 위해서 설명과 관계없는 부분은 생략하였으며, 명세서 전체를 통하여 유사한 부분에 대해서는 유사한 도면 부호를 붙였다.
명세서 및 청구범위 전체에서, 어떤 부분이 어떤 구성 요소를 "포함"한다고 할 때, 이는 특별히 반대되는 기재가 없는 한 다른 구성요소를 제외하는 것이 아니라 다른 구성 요소를 더 포함할 수 있는 것을 의미한다.
또한, 명세서에 기재된 "...부", "...기", "모듈" 등의 용어는 본 명세서에서 설명되는 적어도 하나의 기능이나 동작을 처리할 수 있는 단위를 의미할 수 있으며, 이는 하드웨어나 소프트웨어 또는 하드웨어 및 소프트웨어의 결합으로 구현될 수 있다.
도 1은 본 발명의 일 실시 예에 따른 메모리 액세스를 위한 직렬 통신 시스템을 설명하기 위한 도면이다.
도 1을 참조하면, 본 발명의 일 실시 예에 따른 메모리 액세스를 위한 직렬 통신 시스템(1)은, 가속기 코어(12), 메모리 확장기(10), 외부 메모리 인터페이스(20) 및 메모리 장치(22)를 포함할 수 있다. 메모리 확장기(10)와 외부 메모리 인터페이스(20)는 케이블 어셈블리(30)를 통해 전기적으로 접속될 수 있다.
가속기 코어(12)는 처리 성능을 높이기 위한 하드웨어 가속 장치의 코어일 수 있다. 여기서 하드웨어 가속 장치는 GPU(Graphics Processing Units), FPGA(Field-Programmable Gate Arrays), ASIC(Application-Specific Integrated Circuits), DSP(Digital Signal Processor) 등을 포함할 수 있으나, 본 발명의 범위가 이에 제한되는 것은 아니며, 임의의 가속 장치의 코어를 포함할 수 있고, 심지어 가속기 코어(12)는 CPU(Central Processing Unit)을 비롯한 임의의 프로세싱 코어를 포함할 수도 있다.
메모리 확장기(10)는, 하드웨어 가속 장치, 구체적으로 가속기 코어(12)로부터 요청 트랜잭션을 병렬 통신으로 수신하고, 미리 정해진 패킷 프로토콜에 따라 요청 트랜잭션을 패킷으로 변환하여 직렬 전송할 수 있다. 또한, 메모리 확장기(10)는 미리 정해진 패킷 프로토콜에 따라 직렬 전송된 패킷을 수신하고, 수신한 패킷을 응답 트랜잭션으로 변환하여, 병렬 통신으로 가속기 코어(12)에 제공할 수 있다. 여기서, 요청 트랜잭션 및 응답 트랜잭션은 SoC 버스 인터페이스에서 사용 가능한 포맷일 수 있고, 패킷은 직렬 전송 시 사용 가능한 포맷일 수 있다.
구체적으로, 요청 트랜잭션은 가속기 코어(12)가 메모리 장치(22)를 액세스하기 위한 요청(예를 들어, 읽기 또는 쓰기)에 대한 트랜잭션을 의미하고, 응답 트랜잭션은 요청 트랜잭션에 대한 응답으로 메모리 장치(22) 또는 메모리 제어기(260)에 의해 생성되어 가속기 코어(12)로 전송되는 트랜잭션(예를 들어, 메모리 장치(22)로부터 읽은 데이터)을 의미할 수 있다.
또한, 메모리 확장기(10)와 외부 메모리 인터페이스(20)는 케이블 어셈블리(30)를 통해 서로 패킷을 주고받을 수 있으며, 이를 위해, 메모리 확장기(10)와 외부 메모리 인터페이스(20) 사이에는 미리 정해진 패킷 프로토콜이 정의될 수 있다. 패킷 프로토콜의 구현 예들에 대해서는 도 2 내지 도 8을 통해 후술하도록 한다.
구체적으로, 메모리 확장기(10)는, 하드웨어 가속 장치로부터 요청 트랜잭션을 수신하는 SoC 버스 인터페이스(120); 미리 정해진 패킷 프로토콜에 따라, SoC 버스 인터페이스(120)를 통해 수신한 요청 트랜잭션을 패킷으로 변환하는 마스터 프로토콜 처리기(100); 및 변환된 패킷을 직렬 전송하는 직렬 트랜시버(140)를 포함할 수 있다.
외부 메모리 인터페이스(20)는, 미리 정해진 패킷 프로토콜에 따라 직렬 전송된 패킷을 수신하고, 수신한 패킷을 요청 트랜잭션으로 변환하여, 병렬 통신으로 메모리 장치(22)를 액세스할 수 있다. 또한, 외부 메모리 인터페이스(20)는 해당 요청 트랜잭션에 대응하는 응답 트랜잭션을 패킷으로 변환하여 직렬 전송할 수 있다. 여기서, 요청 트랜잭션 및 응답 트랜잭션은 SoC 버스 인터페이스에서 사용 가능한 포맷일 수 있고, 패킷은 직렬 전송 시 사용 가능한 포맷일 수 있다.
구체적으로, 요청 트랜잭션은 가속기 코어(12)가 메모리 장치(22)를 액세스하기 위한 요청(예를 들어, 읽기 또는 쓰기)에 대한 트랜잭션을 의미하고, 응답 트랜잭션은 요청 트랜잭션에 대한 응답으로 메모리 장치(22) 또는 메모리 제어기(260)에 의해 생성되어 가속기 코어(12)로 전송되는 트랜잭션(예를 들어, 메모리 장치(22)로부터 읽은 데이터)을 의미할 수 있다.
구체적으로, 외부 메모리 인터페이스(20)는, SoC 버스 호환 메모리 제어기(260)에 의해 액세스되는 SoC 버스 인터페이스(220); 미리 정해진 패킷 프로토콜에 따라 생성된 패킷을 직렬 수신하는 직렬 트랜시버(240); 및 직렬 트랜시버(240)를 통해 수신한 패킷을 변환하여 SoC 버스 인터페이스(220)에 제공하는 슬레이브 프로토콜 처리기(200)를 포함할 수 있다. 또한, 외부 메모리 인터페이스(20)는, 메모리 장치(22)를 제어하는 메모리 제어기(260) 및 메모리 제어기(260)와 메모리 장치(22) 사이의 인터페이스를 제공하는 메모리 인터페이스(280)를 더 포함할 수 있다.
메모리 장치(22)는 가속기 코어(12)로부터 데이터를 수신하여 저장하거나, 가속기 코어(12)가 요청하는 데이터를 읽어서 가속기 코어(12)에 전송할 수 있다. 예를 들어, 메모리 장치(22)는 가속기 코어(12)가 처리한 결과 데이터를 수신하여 저장하거나, 가속기 코어(12)가 처리하기 위한 데이터를 읽어서 가속기 코어(12)에 전송할 수 있다.
메모리 장치(22)는 DRAM(Dynamic Random Access Memory), SRAM(Static Random Access Memory)를 비롯한 휘발성 메모리 장치로 구현되거나, 플래시 메모리를 비롯한 비휘발성 메모리 장치로 구현되거나, 휘발성 메모리 장치와 비휘발성 메모리 장치의 조합으로 구현될 수도 있다.
특히, 메모리 장치(22)는 가속기 코어(12)가 탑재된 컴퓨팅 장치의 외부에 구현될 수 있다. 예를 들어, 가속기 코어(12)가 처리하는 데이터 량은 매우 크기 때문에, 메모리 장치(22)를 외부 메모리의 형태로 가속기 코어(12)에 제공함으로써, 가속기 코어(12)로 하여금 대량의 데이터를 메모리 장치(22)로부터 읽어 들여 처리하도록 하거나, 그 처리한 결과를 메모리 장치(22)에 기록하도록 할 수 있다. 이하에서는 메모리 장치(22)가 외부 메모리로 구현된 경우를 주로 설명할 것이지만, 본 발명의 범위가 이에 제한되는 것은 아니며, 메모리 장치(22)가 내부 메모리로서 가속기 코어(12)와 함께 컴퓨팅 장치에 탑재된 경우에도 동일하게 적용할 수 있다.
도 2는 본 발명의 일 실시 예에 따른 메모리 확장기를 설명하기 위한 도면이다.
도 2를 참조하면, 본 발명의 일 실시 예에 따른 메모리 확장기(10)는, 마스터 프로토콜 처리기(100), SoC 버스 인터페이스(120) 및 직렬 트랜시버(140)를 포함할 수 있다.
마스터 프로토콜 처리기(100)는 SoC 버스 인터페이스(120)와, 미리 정해진 패킷 프로토콜 간의 상호 변환을 담당하며, 예를 들어, 패킷 생성, 패킷 소모, 패킷 포매팅, 패킷 검사(분석), 데이터 흐름 제어, 데이터 무결성 처리 등을 담당할 수 있다. 이를 위해, 마스터 프로토콜 처리기(100)는 패킷 생성 모듈(102), 패킷 소비 모듈(104) 및 복수의 레인을 포함할 수 있다. 여기서 복수의 레인은, 복수의 전송 레인(106 내지 109) 및 복수의 수신 레인(116 내지 119)을 포함할 수 있으며, 전송 레인(106)은 수신 레인(116)에 대응되어 하나의 전송 경로를 형성하고, 전송 레인(107)은 수신 레인(117)에 대응되어 하나의 전송 경로를 형성할 수 있으며, 이러한 구조는 레인(108, 109, 118, 119)에 대해서도 동일하게 적용된다.
패킷 생성 모듈(102)은, SoC 버스 인터페이스(120)를 통해 수신한 요청 트랜잭션으로부터 헤더 패킷 및 데이터 패킷을 생성할 수 있다. 구체적으로, 읽기 요청에 대한 트랜잭션인 경우 패킷 생성 모듈(102)은 읽기 요청임을 나타내는 헤더 패킷을 생성할 수 있으며, 헤더 패킷은 메모리 장치(22)를 읽기 위한 주소 정보를 포함할 수 있다. 이와 다르게, 쓰기 요청에 대한 트랜잭션인 경우 패킷 생성 모듈(102)은 쓰기 요청임을 나타내는 헤더 패킷과, 메모리 장치(22)에 쓰기 위한 데이터에 대한 데이터 패킷을 생성할 수 있으며, 헤더 패킷은 메모리 장치(22) 상에서 쓰기가 수행될 주소 정보를 포함할 수 있다.
복수의 전송 레인(106 내지 109) 중 제1 전송 레인(106)은, 헤더 패킷 및 데이터 패킷을 함께 직렬 트랜시버(140)에 전송할 수 있고, 하나 이상의 제2 전송 레인(107 내지 109)은, 데이터 패킷만을 직렬 트랜시버(140)에 전송할 수 있다. 즉, 하나 이상의 제2 전송 레인(107 내지 109)은, 제1 전송 레인(106)이 전송하는 헤더 패킷에 맞추어 데이터 패킷만을 전송할 수 있다.
제1 전송 레인(106)은 요청 헤더 버퍼(1061), 요청 페이로드 버퍼(1062), 요청 페이로드 길이 버퍼(1063) 및 요청 패킷 포매터(1069)를 포함할 수 있다. 요청 헤더 버퍼(1061)는 패킷 생성 모듈(102)에 의해 생성된 헤더 패킷을 저장할 수 있고, 요청 페이로드 버퍼(1062)는 패킷 생성 모듈(102)에 의해 생성된 데이터 패킷을 저장할 수 있다. 요청 페이로드 길이 버퍼(1063)는 요청 페이로드 버퍼(1062)에 저장된 데이터의 길이를 저장할 수 있고, 요청 패킷 포매터(1069)는, 요청 헤더 버퍼(1061), 요청 페이로드 버퍼(1062) 및 요청 페이로드 길이 버퍼(1063)에 저장된 데이터에 기초하여 패킷 포매팅을 수행할 수 있다.
여기서 패킷 포매팅은, 패킷 생성 모듈(102)에 의해 생성된 헤더 패킷 및 데이터 패킷을 미리 정해진 패킷 프로토콜에 따라 전송하기 위한 패킷화 작업을 의미할 수 있다. 즉, 요청 패킷 포매터(1069)는, 패킷 생성 모듈(102)에 의해 생성된 헤더 패킷 및 데이터 패킷을 요청 헤더 버퍼(1061) 및 요청 페이로드 버퍼(1062)로부터 수신한 후, 수신된 헤더 패킷 및 데이터 패킷을, 직렬 전송기(142)가 요구하는 패킷의 형태로 인코딩할 수 있다.
또한, 제1 전송 레인(106)은 재시도 헤더 버퍼(1064), 재시도 페이로드 버퍼(1065), 재시도 페이로드 주소 버퍼(1066), 재시도 길이 버퍼(1067) 및 재시도 제어기(1068)을 더 포함할 수 있다. 재시도 제어기(1068)는, 재시도 헤더 버퍼(1064), 재시도 페이로드 버퍼(1065), 재시도 페이로드 주소 버퍼(1066) 및 재시도 길이 버퍼(1067)를 제어할 수 있다. 요청 헤더 버퍼(1061), 요청 페이로드 버퍼(1062) 및 요청 페이로드 길이 버퍼(1063)에 저장된 데이터가 요청 패킷 포매터(1069)에 전송되는 경우, 해당 데이터는 재시도 헤더 버퍼(1064), 재시도 페이로드 버퍼(1065) 및 재시도 길이 버퍼(1067)에도 저장되고, 재시도 페이로드 버퍼(1065)에서 데이터를 읽기 위한 주소도 재시도 페이로드 주소 버퍼(1066)에 저장되어, 패킷 전송이 잘못된 경우 패킷 재전송을 위해 사용될 수 있다.
한편, 하나 이상의 제2 전송 레인(107 내지 109) 중 전송 레인(107)은 요청 페이로드 버퍼(1071), 요청 페이로드 길이 버퍼(1072) 및 요청 패킷 포매터(1077)를 포함할 수 있다. 요청 페이로드 버퍼(1071)는 패킷 생성 모듈(102)에 의해 생성된 데이터 패킷을 저장할 수 있고, 요청 페이로드 길이 버퍼(1072)는 요청 페이로드 버퍼(1071)에 저장된 데이터의 길이를 저장할 수 있고, 요청 패킷 포매터(1077)는, 요청 페이로드 버퍼(1071) 및 요청 페이로드 길이 버퍼(1072)에 저장된 데이터에 기초하여 패킷 포매팅을 수행할 수 있다. 요청 패킷 포매터(1077)는, 패킷 생성 모듈(102)에 의해 생성된 데이터 패킷을 요청 페이로드 버퍼(1071)로부터 수신한 후, 수신된 데이터 패킷을, 직렬 전송기(142)가 요구하는 패킷의 형태로 인코딩할 수 있다.
또한, 전송 레인(107)은 재시도 페이로드 버퍼(1073), 재시도 페이로드 주소 버퍼(1074), 재시도 길이 버퍼(1075) 및 재시도 제어기(1076)를 더 포함할 수 있다. 재시도 제어기(1076)는, 재시도 페이로드 버퍼(1073), 재시도 페이로드 주소 버퍼(1074) 및 재시도 길이 버퍼(1075)를 제어할 수 있다. 요청 페이로드 버퍼(1071) 및 요청 페이로드 길이 버퍼(1072)에 저장된 데이터가 요청 패킷 포매터(1077)에 전송되는 경우, 해당 데이터는 재시도 페이로드 버퍼(1073) 및 재시도 길이 버퍼(1075)에도 저장되고, 재시도 페이로드 버퍼(1073)에서 데이터를 읽기 위한 주소도 재시도 페이로드 주소 버퍼(1074)에 저장되어, 패킷 전송이 잘못된 경우 패킷 재전송을 위해 사용될 수 있다.
도 2에는 생략되었으나, 전송 레인(108 및 109)는 전송 레인(107)과 동일한 형태로 구현될 수 있으므로, 중복되는 설명은 생략하도록 한다.
복수의 전송 레인(106 내지 109)의 출력은 직렬 트랜시버(140)의 직렬 전송기(142)에 전달되며, 직렬 전송기(142)는 복수의 전송 레인(106 내지 109)에 대응하는 다중 레인을 통해 외부 메모리 인터페이스(20)로 데이터를 전송할 수 있다.
한편, 직렬 트랜시버(140)의 직렬 수신기(144)는 복수의 수신 레인(116 내지 119)에 대응하는 다중 레인을 통해 외부 메모리 인터페이스(20)로부터 데이터를 수신하며, 수신한 데이터를 복수의 수신 레인(116 내지 119)에 전달할 수 있다. 여기서, 직렬 수신기(144)가 수신하는 데이터는 완료 패킷을 포함할 수 있다.
패킷 소비 모듈(104)은 복수의 수신 레인(116 내지 119)을 통해 수신한 데이터를 SoC 버스 인터페이스(120)에 제공할 수 있다.
먼저, 흐름 제어 업데이트 요청 버퍼(112)는 흐름 제어(flow control)를 위해 사용될 수 있다. 흐름 제어는 수신 버퍼(예를 들어 도 2에서 완료 페이로드 버퍼(1162))의 상태를 상대편 송신기에게 통지함으로써, 수신 버퍼에 오버플로(overflow)가 발생하지 않도록, 상대편 송신기로부터 전송되는 패킷의 양을 조절하는 메커니즘을 의미할 수 있다. 이를 위해, 패킷 소비 모듈(104)은, 수신 버퍼에 데이터가 얼마나 있는지, 그 양을 검출할 수 있으며, 그 검출한 데이터 양에 대한 정보를 흐름 제어 업데이트 요청 버퍼(112)에 저장할 수 있다. 그러면, 요청 패킷 포매터(1069)가 흐름 제어 업데이트 요청 버퍼(112)에 저장된 값을 읽고, 읽은 값에 기초하여 흐름 제어 업데이트 패킷을 생성하며, 흐름 제어 업데이트 패킷은 직렬 전송기(142)를 통해 상대편에게 전송될 수 있다.
수신 레인(116)은 완료 패킷 분석 모듈(1163), 완료 길이 버퍼(1161) 및 완료 페이로드 버퍼(1162)를 포함할 수 있다. 완료 패킷 분석 모듈(1163)은 외부 메모리 인터페이스(20)로부터 직렬 수신기(144)를 통해 수신된 완료 패킷을 검사할 수 있다. 완료 페이로드 버퍼(1162)는 검사가 완료된 완료 패킷을 저장할 수 있고, 완료 길이 버퍼(1161)는 완료 페이로드 버퍼(1162)에 저장된 데이터의 길이를 저장할 수 있다.
설명의 명확성을 위해 도 2에는 생략되었지만, 수신 레인(117 내지 119)은 수신 레인(116)과 동일한 형태로 구현될 수 있으므로, 중복되는 설명은 생략하도록 한다.
이후 수신 레인(116 내지 119)의 데이터가 가용 상태(available)가 되면, 패킷 소비 모듈(104)은 완료 길이 버퍼(1161) 및 완료 페이로드 버퍼(1162)에 저장된 데이터를 읽어서, 예를 들어, 읽기 요청에 대한 응답으로 SoC 버스 인터페이스(120)에 제공할 수 있다.
수신 레인(116)의 완료 패킷 분석 모듈(1163)은 데이터 무결성 정보를 요청 패킷 포매터(1069)에 전달하고, 이에 따라 요청 패킷 포매터(1069)는 흐름 제어 패킷을 생성할 수 있다. 여기서 데이터 무결성 정보는, 수신된 패킷이 정상인 경우에는 Ack를 생성하고 비정상인 경우에는 Nak를 생성하라는 정보(즉, Ack/Nak를 발생시키기 위한 트리거 신호)와, 수신된 패킷의 시퀀스 넘버를 포함할 수 있다. 이에 따라 요청 패킷 포매터(1069)는 데이터 무결성 검사(Ack/Nak) 패킷을 생성할 수 있다. 데이터 무결성 검사 패킷은 패킷의 정상 수신 정보 뿐 아니라 패킷 버퍼의 상태 정보 또한 포함할 수 있다.
한편, 흐름 제어 패킷은 현재 상대방으로부터의 패킷 수신 상태를 점검하기 위해 사용될 수 있는 정보들을 포함할 수 있다. 예를 들어, 흐름 제어 패킷은, 흐름 제어의 종류(초기화, 초기화 확인, 현재 상태 업데이트), 페이로드 버퍼의 크기, 헤더 버퍼의 크기 등의 정보를 포함하며, 추가로 패킷의 정상 수신 정보를 포함할 수 있다.
흐름 제어 패킷과 데이터 무결성 검사 패킷에 포함되는 정보들은 유사할 수 있으나, 흐름 제어 패킷은 버퍼에 변화가 발생하였을 때 송신되고 데이터 무결성 검사 패킷은 패킷이 수신된 때 송신된다는 점에서 그 송신 시점 상 차이가 있다. 또한, 흐름 제어 패킷은 주기적으로 송신이 이루어지나 데이터 무결성 검사 패킷은 메모리 트랜잭션 패킷을 수신한 때에만 송신된다는 점에서 그 송신 빈도 상 차이도 존재한다.
수신 레인(116)의 완료 패킷 분석 모듈(1163)이 Ack(positive acknowledgement) 또는 Nak(negative acknowledgement)를 수신한 경우, 완료 패킷 분석 모듈(1163)은 이를 전송 레인(106)의 재시도 제어기(1068)에 통지할 수 있다.
재시도 제어기(1068)는, Ack를 수신한 경우, 재시도 버퍼 공간을 확보하기 위해, 재시도 헤더 버퍼(1064), 재시도 페이로드 버퍼(1065), 재시도 페이로드 주소 버퍼(1066) 및 재시도 길이 버퍼(1067)를 가리키는 포인터들을 정상적으로 전송된 것으로 판단된 패킷 다음으로 옮길 수 있다. 한편, 재시도 제어기(1068)는, Nak를 수신한 경우, 재시도 헤더 버퍼(1064), 재시도 페이로드 버퍼(1065), 재시도 페이로드 주소 버퍼(1066) 및 재시도 길이 버퍼(1067)에 저장된 데이터를 읽어서 패킷 재전송을 수행할 수 있다.
이와 유사하게, 재시도 제어기(1076)는, Ack를 수신한 경우, 재시도 버퍼 공간을 확보하기 위해, 재시도 페이로드 버퍼(1073), 재시도 페이로드 주소 버퍼(1074) 및 재시도 길이 버퍼(1075)를 가리키는 포인터들을 정상적으로 전송된 것으로 판단된 패킷 다음으로 옮길 수 있다. 한편, 재시도 제어기(1076)는, Nak를 수신한 경우, 재시도 페이로드 버퍼(1073), 재시도 페이로드 주소 버퍼(1074) 및 재시도 길이 버퍼(1075)에 저장된 데이터를 읽어서 패킷 재전송을 수행할 수 있다.
물론, 이와 같은 패킷 재전송은 재시도 제어기(1068, 1074)가 Nak를 수신한 경우뿐 아니라, 메모리 확장기(10)가 패킷을 송신한 후, 송신한 패킷에 대응하는 Ack 또는 Nak를 미리 정해진 시간 동안 수신하지 않은 경우에도 수행될 수 있다.
패킷 재전송이 수행되는 경우, 재전송에 따라 버퍼에서 삭제되는 데이터는 다시 재시도 버퍼에 저장되어, 패킷 재전송에 대한 Ack를 수신할 때까지 패킷 재전송을 추가로 수행할 수 있도록 할 수 있다. 즉, 패킷 재전송이 수행되는 데이터는 다시 헤더 버퍼(1064), 재시도 페이로드 버퍼(1065, 1073), 재시도 페이로드 주소 버퍼(1066, 1074) 및 재시도 길이 버퍼(1067, 1075)에 저장될 수 있다.
설명의 명확성을 위해 도 2에는 생략되었지만, 수신 레인(117 내지 119)은 수신 레인(116)과 동일한 형태로 구현될 수 있으므로, 중복되는 설명은 생략하도록 한다.
또한, 도 2에서는 복수의 레인이 4 개의 레인(각각 전송 레인 및 수신 레인을 포함함)으로 구현된 경우를 도시하였으나, 이는 설명의 편의를 위한 것으로 본 발명의 범위가 이에 제한되는 것은 아니며, 구체적인 구현 목적에 따라 복수의 레인은 임의의 개수의 레인을 포함하도록 구현될 수 있음은 물론이다. 복수의 레인이 4 개의 레인으로 구현되는 경우, 각각의 레인은 SoC 버스 대역폭의 1/4씩 담당하게 되어, 메모리 확장기(10)와 외부 메모리 인터페이스(20) 사이에 다중 레인 기반 데이터 송수신이 구현될 수 있다.
이러한 방식으로, 메모리 확장기(10)에서 외부 메모리 인터페이스(20)를 통해 메모리 장치(22)를 액세스할 때 패킷의 무결성을 보장하면서도, 패킷 흐름을 원활하게 할 수 있다.
도 3 내지 도 6은 본 발명의 일 실시 예에 따른 메모리 액세스를 위한 직렬 통신 시스템에서 사용될 수 있는 패킷 프로토콜의 구현 예들을 설명하기 위한 도면들이다.
도 3을 참조하면, 메모리 확장기(10)와 외부 메모리 인터페이스(20) 사이의 패킷 프로토콜의 일 구현 예에 따른 헤더 패킷은, 요청 트랜잭션이 메모리 읽기인지 메모리 쓰기인지 여부를 식별하는 필드(W), 데이터의 길이(Data Length), 주소(Address), 첫번째 데이터의 바이트 인에이블(First Data's Byte Enable) 및 마지막 데이터의 바이트 인에이블(Last Data's Byte Enable) 등을 포함할 수 있다.
이와 같은 헤더 패킷의 구조는 네트워크 부하에 미치는 영향을 최소화하기 위해 최소한의 필요한 정보만을 포함하도록 구현되어, 불필요한 필드 낭비를 방지하고, 전송 지연도 최소화할 수 있다.
이어서, 도 4를 참조하면, 메모리 확장기(10)와 외부 메모리 인터페이스(20) 사이의 패킷 프로토콜의 일 구현 예에 따른 데이터 패킷은, 128 비트 단위로 구현되며, 128 비트 단위의 데이터 패킷이 여러 개 추가(append)될 수 있다.
한편, 도 5를 참조하면, 메모리 확장기(10)와 외부 메모리 인터페이스(20) 사이의 패킷 프로토콜의 일 구현 예에 따른 흐름 제어 패킷은, 트랜잭션 제어 패킷임을 식별하는 필드(TC), 트랜잭션 제어 패킷의 클래스를 나타내는 필드(FC), 트랜잭션 제어 패킷의 서브 클래스를 나타내는 필드(Init/Ack/U) 및 예약 필드(Rsv)를 포함할 수 있다. 여기서 서브 클래스는 흐름 제어의 종류(초기화, 초기화 확인, 현재 상태 업데이트)를 나타낼 수 있다.
또한, 흐름 제어 패킷은, 페이로드 버퍼의 크기, 즉 데이터 크레딧(Data Credit)을 나타내는 필드, 헤더 버퍼의 크기, 즉 헤더 크레딧(Header Credit)을 나타내는 필드를 포함할 수 있다.
또한, 흐름 제어 패킷은, 선택적으로, 향후 흐름 제어 패킷과 데이터 인테그리티 패킷의 통합을 고려하기 위해 수신한 시퀀스 넘버를 표시하는 필드, 즉 패킷의 정상 수신 정보(Ack/Nacked Sequence Number) 필드를 포함할 수도 있다. 패킷의 정상 수신 정보(Ack/Nacked Sequence Number) 필드를 포함하지 않는 경우에 해당 공간은 예약 필드로 남겨둘 수 있다.
이어서, 도 6을 참조하면, 메모리 확장기(10)와 외부 메모리 인터페이스(20) 사이의 패킷 프로토콜의 일 구현 예에 따른 데이터 무결성 검사 패킷은, 트랜잭션 제어 패킷임을 식별하는 필드(TC), 트랜잭션 제어 패킷의 클래스를 나타내는 필드(DI), Ack/Nak의 종류를 식별하는 필드(Ack/Nak) 및 예약 필드(Rsv)를 포함할 수 있다.
또한, 데이터 무결성 검사 패킷은, 패킷의 정상 수신 여부를 식별하기 위한 패킷의 정상 수신 정보(Ack/Nacked Sequence Number) 필드를 포함할 수 있다.
한편, 데이터 무결성 검사 패킷은, 선택적으로, 페이로드 버퍼의 크기, 즉 데이터 크레딧(Data Credit)을 나타내는 필드, 헤더 버퍼의 크기, 즉 헤더 크레딧(Header Credit)을 나타내는 필드를 더 포함할 수도 있다.
물론, 도 3 내지 도 7에 도시된 패킷들의 형태는 오로지 예시적인 것에 불과하며, 구현 목적에 따라 패킷들의 구조 및 각 필드의 크기 등 그 구체적인 사항들은 얼마든지 변경될 수 있다.
도 7은 본 발명의 일 실시 예에 따른 외부 메모리 인터페이스를 설명하기 위한 도면이다.
도 7을 참조하면, 본 발명의 일 실시 예에 따른 외부 메모리 인터페이스(20)는, 슬레이브 프로토콜 처리기(200), SoC 버스 인터페이스(220) 및 직렬 트랜시버(240)를 포함할 수 있다.
슬레이브 프로토콜 처리기(200)는 마스터 프로토콜 처리기(100)에서 생성한 패킷화된 요청 트랜잭션과 SoC 버스 인터페이스(220) 간의 상호 변환을 담당하며, 예를 들어, 요청 패킷 소모, 응답 패킷 생성, 패킷 포매팅, 패킷 검사(분석), 데이터 흐름 제어, 데이터 무결성 처리 등을 담당할 수 있다. 이를 위해, 슬레이브 프로토콜 처리기(200)는 패킷 소비 모듈(202), 패킷 생성 모듈(204) 및 복수의 레인을 포함할 수 있다. 여기서 복수의 레인은, 복수의 수신 레인(206 내지 209) 및 복수의 전송 레인(216 내지 219)을 포함할 수 있으며, 수신 레인(206)은 전송 레인(216)에 대응되어 하나의 전송 경로를 형성하고, 수신 레인(207)은 전송 레인(217)에 대응되어 하나의 전송 경로를 형성할 수 있으며, 이러한 구조는 레인(208, 209, 218, 219)에 대해서도 동일하게 적용된다.
직렬 트랜시버(240)의 직렬 수신기(242)는 복수의 수신 레인(206 내지 209)에 대응하는 다중 레인을 통해 메모리 확장기(10)로부터 데이터를 수신하며, 수신한 데이터를 복수의 수신 레인(206 내지 209)에 전달할 수 있다
복수의 수신 레인(206 내지 209) 중 제1 수신 레인(206)은, 직렬 트랜시버(240)를 통해 수신한 헤더 패킷 및 데이터 패킷을 함께 패킷 소비 모듈(202)에 전송할 수 있고, 하나 이상의 제2 수신 레인(207 내지 209)은, 데이터 패킷만을 패킷 소비 모듈(202)에 전송할 수 있다. 즉, 하나 이상의 제2 수신 레인(207 내지 209)은, 제1 수신 레인(206)이 전송하는 헤더 패킷에 맞추어 데이터 패킷만을 전송할 수 있다.
패킷 소비 모듈(202)은 복수의 수신 레인(206 내지 209)을 통해 수신한 데이터를 SoC 버스 인터페이스(220)에 제공할 수 있다.
제1 수신 레인(206)은, 요청 패킷 분석 모듈(2061), 요청 헤더 버퍼(2062), 요청 페이로드 버퍼(2063) 및 요청 길이 버퍼(2064)를 포함할 수 있다. 요청 패킷 분석 모듈(2061)은 직렬 트랜시버(240)를 통해 수신한 헤더 패킷 및 데이터 패킷을 검사할 수 있다. 요청 헤더 버퍼(2062)는 검사가 완료된 헤더 패킷을 저장할 수 있다. 요청 페이로드 버퍼(2063)는 검사가 완료된 데이터 패킷을 저장할 수 있고, 요청 길이 버퍼(2064)는 요청 페이로드 버퍼(2063)에 저장된 데이터의 길이를 저장할 수 있다.
한편, 하나 이상의 제2 수신 레인(207 내지 209) 중 수신 레인(207)은, 요청 패킷 분석 모듈(2071), 요청 페이로드 버퍼(2072) 및 요청 길이 버퍼(2073)를 포함할 수 있다. 요청 패킷 분석 모듈(2071)은 직렬 트랜시버(240)를 통해 수신한 데이터 패킷을 검사할 수 있다. 요청 페이로드 버퍼(2063)는 검사가 완료된 데이터 패킷을 저장할 수 있고, 요청 길이 버퍼(2064)는 요청 페이로드 버퍼(2063)에 저장된 데이터의 길이를 저장할 수 있다.
설명의 명확성을 위해 도 7에는 생략되었지만, 수신 레인(208 및 209)는 수신 레인(207)과 동일한 형태로 구현될 수 있으므로, 중복되는 설명은 생략하도록 한다.
이후 수신 레인(206 내지 209)의 데이터가 가용 상태(available)가 되면, 패킷 소비 모듈(202)은 요청 헤더 버퍼(2062), 요청 페이로드 버퍼(2063, 2072) 및 요청 길이 버퍼(2064, 2073)에 저장된 데이터를 읽어서, 예를 들어, 메모리 쓰기 신호 또는 메모리 읽기 신호를 생성한 후 이를 SoC 버스 인터페이스(220)를 통해 최종적으로 메모리 제어기(260)에 제공할 수 있다.
한편, 패킷 생성 모듈(204)은, SoC 버스 인터페이스(220)를 통해 수신한 응답 트랜잭션으로부터 완료 패킷을 생성할 수 있다. 예를 들어, 메모리 읽기 신호에 대한 응답 트랜잭션을 완료 패킷으로 생성할 수 있으며, 완료 패킷은 메모리 장치(22)로부터 읽은 데이터를 포함할 수 있다.
전송 레인(216)은 완료 패킷을 직렬 트랜시버(240)에 전송할 수 있다. 전송 레인(216)은 완료 페이로드 버퍼(2167), 완료 페이로드 길이 버퍼(2166) 및 완료 패킷 포매터(2161)를 포함할 수 있다. 완료 페이로드 버퍼(2167)는 패킷 생성 모듈(204)에 의해 생성된 완료 패킷을 저장할 수 있고, 완료 페이로드 길이 버퍼(2166)는 완료 페이로드 버퍼(2167)에 저장된 데이터의 길이를 저장할 수 있고, 완료 패킷 포매터(2161)는, 완료 페이로드 버퍼(2167) 및 완료 페이로드 길이 버퍼(2166)에 저장된 데이터에 기초하여 패킷 포매팅을 수행할 수 있다.
또한, 전송 레인(216)은 재시도 페이로드 버퍼(2165), 재시도 페이로드 주소 버퍼(2164), 재시도 길이 버퍼(2163) 및 재시도 제어기(2162)를 더 포함할 수 있다. 재시도 제어기(2162)는, 재시도 페이로드 버퍼(2165), 재시도 페이로드 주소 버퍼(2164), 재시도 길이 버퍼(2163)를 제어할 수 있다. 완료 페이로드 버퍼(2167), 완료 페이로드 길이 버퍼(2166)에 저장된 데이터가 완료 패킷 포매터(2161)에 전송되는 경우, 해당 데이터는 재시도 페이로드 버퍼(2165) 및 재시도 길이 버퍼(2163)에도 저장되고, 재시도 페이로드 버퍼(2165)에서 데이터를 읽기 위한 주소도 재시도 페이로드 주소 버퍼(2164)에 저장되어, 패킷 전송이 잘못된 경우 패킷 재전송을 위해 사용될 수 있다.
설명의 명확성을 위해 도 7에는 생략되었지만, 전송 레인(217 내지 219)는 전송 레인(216)과 동일한 형태로 구현될 수 있으므로, 중복되는 설명은 생략하도록 한다.
복수의 전송 레인(216 내지 219)의 출력은 직렬 트랜시버(240)의 직렬 전송기(242)에 전달되며, 직렬 전송기(242)는 복수의 전송 레인(216 내지 219)에 대응하는 다중 레인을 통해 메모리 확장기(10)로 데이터를 전송할 수 있다.
수신 레인(206)의 요청 패킷 분석 모듈(2061)은 데이터 무결점 정보를 완료 패킷 포매터(2161)에 전달하고, 이에 따라 완료 패킷 포매터(2161)는 흐름 제어 패킷을 생성할 수 있다. 여기서 데이터 무결성 정보는, 수신된 패킷이 정상인 경우에는 Ack를 생성하고 비정상인 경우에는 Nak를 생성하라는 정보(즉, Ack/Nak를 발생시키기 위한 트리거 신호)와, 수신된 패킷의 시퀀스 넘버를 포함할 수 있다. 이에 따라 완료 패킷 포매터(2161)는 데이터 무결성 검사(Ack/Nak) 패킷을 생성할 수 있다. 데이터 무결성 검사 패킷은 패킷의 정상 수신 정보 뿐 아니라 패킷 버퍼의 상태 정보 또한 포함할 수 있다.
한편, 흐름 제어 패킷은 현재 상대방으로부터의 패킷 수신 상태를 점검하기 위해 사용될 수 있는 정보들을 포함할 수 있다. 예를 들어, 흐름 제어 패킷은, 흐름 제어의 종류(초기화, 초기화 확인, 현재 상태 업데이트), 페이로드 버퍼의 크기, 헤더 버퍼의 크기 등의 정보를 포함하며, 추가로 패킷의 정상 수신 정보를 포함할 수 있다.
수신 레인(206)의 요청 패킷 분석 모듈(2061)이 Ack(positive acknowledgement) 또는 Nak(negative acknowledgement)를 수신한 경우, 요청 패킷 분석 모듈(2061)은 이를 전송 레인(216)의 재시도 제어기(2162)에 통지할 수 있다.
재시도 제어기(2162)는, Ack를 수신한 경우, 재시도 버퍼 공간을 확보하기 위해, 재시도 페이로드 버퍼(2165), 재시도 페이로드 주소 버퍼(2164) 및 재시도 길이 버퍼(2163)를 가리키는 포인터들을 정상적으로 전송된 것으로 판단된 패킷 다음으로 옮길 수 있다. 한편, 재시도 제어기(2162)는, Nak를 수신한 경우, 재시도 페이로드 버퍼(2165), 재시도 페이로드 주소 버퍼(2164) 및 재시도 길이 버퍼(2163)에 저장된 데이터를 읽어서 패킷 재전송을 수행할 수 있다.
물론, 이와 같은 패킷 재전송은 재시도 제어기(2162)가 Nak를 수신한 경우뿐 아니라, 외부 메모리 인터페이스(20)가 패킷을 송신한 후, 송신한 패킷에 대응하는 Ack 또는 Nak를 미리 정해진 시간 동안 수신하지 않은 경우에도 수행될 수 있다.
패킷 재전송이 수행되는 경우, 재전송에 따라 버퍼에서 삭제되는 데이터는 다시 재시도 버퍼에 저장되어, 패킷 재전송에 대한 Ack를 수신할 때까지 패킷 재전송을 추가로 수행할 수 있도록 할 수 있다. 즉, 패킷 재전송이 수행되는 데이터는 다시 재시도 페이로드 버퍼(2165), 재시도 페이로드 주소 버퍼(2164) 및 재시도 길이 버퍼(2163)에 저장될 수 있다.
설명의 명확성을 위해 도 7에는 생략되었지만, 수신 레인(207 내지 209)은 수신 레인(206)과 동일한 형태로 구현될 수 있으므로, 중복되는 설명은 생략하도록 한다.
또한, 도 7에서는 복수의 레인이 4 개의 레인(각각 전송 레인 및 수신 레인을 포함함)으로 구현된 경우를 도시하였으나, 이는 설명의 편의를 위한 것으로 본 발명의 범위가 이에 제한되는 것은 아니며, 구체적인 구현 목적에 따라 복수의 레인은 임의의 개수의 레인을 포함하도록 구현될 수 있음은 물론이다. 복수의 레인이 4 개의 레인으로 구현되는 경우, 각각의 레인은 SoC 버스 대역폭의 1/4씩 담당하게 되어, 메모리 확장기(10)와 외부 메모리 인터페이스(20) 사이에 다중 레인 기반 데이터 송수신이 구현될 수 있다.
이러한 방식으로, 메모리 확장기(10)에서 외부 메모리 인터페이스(20)를 통해 메모리 장치(22)를 액세스할 때 패킷의 무결성을 보장하면서도, 패킷 흐름을 원활하게 할 수 있다.
도 8은 본 발명의 일 실시 예에 따른 메모리 액세스를 위한 직렬 통신 시스템을 설명하기 위한 도면이다.
도 8을 참조하면, 본 발명의 일 실시 예에 따른 메모리 액세스를 위한 직렬 통신 시스템(2)은, 외부 메모리 인터페이스(20)가 복수의 하드웨어 가속 장치(또는 가속기 코어)와 연결될 수 있도록, 복수의 직렬 트랜시버(240a, 240b) 및 복수의 슬레이브 프로토콜 처리기(200a, 220b)를 포함할 수 있다.
즉, 복수의 하드웨어 가속 장치는 제1 하드웨어 가속 장치 및 제2 하드웨어 가속 장치를 포함하고, 복수의 직렬 트랜시버(240a, 240b)는, 미리 정해진 프로토콜에 따라 제1 하드웨어 가속 장치의 요청 트랜잭션을 패킷으로 변환하여 직렬 전송하는 제1 메모리 확장기와, 미리 정해진 프로토콜에 따라 제2 하드웨어 가속 장치의 요청 트랜잭션을 패킷으로 변환하여 직렬 전송하는 제2 메모리 확장기를 통해 직렬 전송되는 패킷을 수신할 수 있다.
그리고 복수의 슬레이브 프로토콜 처리기(200a, 220b) 중 제1 슬레이브 프로토콜 처리기(200a)는, 제1 메모리 확장기로부터 패킷화된 요청 트랜잭션을 수신하여 메모리 장치(22)를 액세스할 수 있으며, 제2 슬레이브 프로토콜 처리기(200b)는, 제2 메모리 확장기로부터 패킷화된 요청 트랜잭션을 수신하여 메모리 장치(22)를 액세스할 수 있다.
즉, 외부 메모리 인터페이스(20)는 하드웨어 가속 장치의 개수만큼 복수의 직렬 트랜시버(240a, 240b) 및 복수의 슬레이브 프로토콜 처리기(200a, 220b)를 구비할 수 있다.
본 발명의 일부 실시 예에서, 복수의 슬레이브 프로토콜 처리기(200a, 220b)가 하나의 메모리 제어기(260)를 사용하기 위해 경합하는 경우, 이를 중재하기 위한 아비트레이션 로직(arbitration logic)이 외부 메모리 인터페이스(20)에 추가로 구현될 수도 있다.
도 9는 본 발명의 실시 예들에 따른 메모리 액세스를 위한 직렬 통신 장치 및 시스템을 구현하기 위한 컴퓨팅 장치를 설명하기 위한 블록도이다.
도 9를 참조하면, 본 발명의 실시 예들에 따른 메모리 액세스를 위한 직렬 통신 장치 및 시스템은 컴퓨팅 장치(50)를 이용하여 구현될 수 있다.
컴퓨팅 장치(50)는 버스(520)를 통해 통신하는 프로세서(510), 메모리(530), 사용자 인터페이스 입력 장치(540), 사용자 인터페이스 출력 장치(550) 및 저장 장치(560) 중 적어도 하나를 포함할 수 있다. 컴퓨팅 장치(50)는 또한 네트워크(40), 예컨대 무선 네트워크에 전기적으로 접속되는 네트워크 인터페이스(570)를 포함할 수 있다. 네트워크 인터페이스(570)는 네트워크(40)를 통해 다른 개체와 신호를 송신 또는 수신할 수 있다.
프로세서(510)는 AP(Application Processor), CPU(Central Processing Unit), GPU(Graphic Processing Unit) 등과 같은 다양한 종류들로 구현될 수 있으며, 메모리(530) 또는 저장 장치(560)에 저장된 명령을 실행하는 임의의 반도체 장치일 수 있다. 프로세서(510)는 도 1 내지 도 8에서 설명한 기능 및 방법들을 구현하도록 구성될 수 있다.
메모리(530) 및 저장 장치(560)는 다양한 형태의 휘발성 또는 비 휘발성 저장 매체를 포함할 수 있다. 예를 들어, 메모리는 ROM(read-only memory)(531) 및 RAM(random access memory)(532)를 포함할 수 있다. 본 발명의 일 실시 예에서 메모리(530)는 프로세서(510)의 내부 또는 외부에 위치할 수 있고, 메모리(530)는 이미 알려진 다양한 수단을 통해 프로세서(510)와 연결될 수 있다.
또한, 본 발명의 실시 예들에 따른 메모리 액세스를 위한 직렬 통신 장치 및 시스템은 컴퓨팅 장치(50)에서 실행되는 프로그램 또는 소프트웨어로 구현될 수 있고, 프로그램 또는 소프트웨어는 컴퓨터로 판독 가능한 매체에 저장될 수 있다.
또한, 본 발명의 실시 예들에 따른 메모리 액세스를 위한 직렬 통신 장치 및 시스템은 컴퓨팅 장치(50)와 전기적으로 접속될 수 있는 하드웨어로 구현될 수도 있다.
이제까지 설명한 본 발명의 실시 예들에 따르면, 특히 하드웨어 가속 장치가 사용되는 환경에서, 외부 메모리를 하드웨어 가속 장치에 제공하여 대량의 데이터를 처리하거나, 그 처리 결과를 저장할 수 있는 메모리 용량을 제공할 수 있을 뿐 아니라, 하드웨어 가속 장치와 외부 메모리 사이에서 대량의 데이터 처리 결과의 전송 성능 및 효율성을 개선하여 네트워크 부하를 최소화할 수 있다. 또한, 하드웨어 가속 장치는 제약 없이 다양한 종류의 메모리 장치를 사용할 수 있다.
이상에서 본 발명의 실시 예에 대하여 상세하게 설명하였지만 본 발명의 권리 범위는 이에 한정되는 것은 아니고, 다음의 청구범위에서 정의하고 있는 본 발명의 기본 개념을 이용한, 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자의 여러 변형 및 개량 형태 또한 본 발명의 권리 범위에 속한다.

Claims (20)

  1. 하드웨어 가속 장치로부터 요청 트랜잭션을 수신하는 SoC(System-on-Chip) 버스 인터페이스;
    미리 정해진 패킷 프로토콜에 따라, 상기 SoC 버스 인터페이스를 통해 수신한 요청 트랜잭션을 패킷으로 변환하는 마스터 프로토콜 처리기; 및
    상기 패킷을 직렬 전송하는 직렬 트랜시버를 포함하는
    메모리 액세스를 위한 직렬 통신 장치.
  2. 제1항에 있어서,
    상기 마스터 프로토콜 처리기는,
    상기 SoC 버스 인터페이스를 통해 수신한 요청 트랜잭션으로부터 헤더 패킷 및 데이터 패킷을 생성하는 패킷 생성 모듈;
    상기 직렬 트랜시버에 상기 헤더 패킷 및 상기 데이터 패킷을 함께 전송하는 제1 전송 레인; 및
    상기 직렬 트랜시버에 상기 데이터 패킷만을 전송하는 하나 이상의 제2 전송 레인을 포함하는, 메모리 액세스를 위한 직렬 통신 장치.
  3. 제2항에 있어서,
    상기 제1 전송 레인 및 상기 하나 이상의 제2 전송 레인은,
    상기 데이터 패킷을 저장하는 요청 페이로드 버퍼;
    상기 요청 페이로드 버퍼에 저장된 데이터의 길이를 저장하는 요청 페이로드 길이 버퍼; 및
    상기 요청 페이로드 버퍼 및 상기 요청 페이로드 길이 버퍼에 저장된 데이터에 기초하여 패킷 포매팅(packet formatting)을 수행하는 요청 패킷 포매터(packet formatter)를 포함하는, 메모리 액세스를 위한 직렬 통신 장치.
  4. 제3항에 있어서,
    상기 하나 이상의 제2 전송 레인은,
    재시도 페이로드 버퍼, 재시도 페이로드 주소 버퍼 및 재시도 길이 버퍼와, 상기 재시도 페이로드 버퍼, 상기 재시도 페이로드 주소 버퍼 및 상기 재시도 길이 버퍼를 제어하는 재시도 제어기를 더 포함하는, 메모리 액세스를 위한 직렬 통신 장치.
  5. 제3항에 있어서,
    상기 제1 전송 레인은,
    상기 헤더 패킷을 저장하는 요청 헤더 버퍼를 더 포함하고,
    상기 요청 패킷 포매터는,
    상기 요청 헤더 버퍼, 상기 요청 페이로드 버퍼 및 상기 요청 페이로드 길이 버퍼에 저장된 데이터에 기초하여 패킷 포매팅을 수행하는, 메모리 액세스를 위한 직렬 통신 장치.
  6. 제5항에 있어서,
    상기 제1 전송 레인은,
    재시도 헤더 버퍼, 재시도 페이로드 버퍼, 재시도 페이로드 주소 버퍼 및 재시도 길이 버퍼와, 상기 재시도 헤더 버퍼, 상기 재시도 페이로드 버퍼, 상기 재시도 페이로드 주소 버퍼 및 상기 재시도 길이 버퍼를 제어하는 재시도 제어기를 더 포함하는, 메모리 액세스를 위한 직렬 통신 장치.
  7. 제3항에 있어서,
    상기 마스터 프로토콜 처리기는,
    상기 직렬 트랜시버로부터 완료 패킷을 수신하는 복수의 수신 레인; 및
    상기 복수의 수신 레인을 통해 수신한 데이터를 상기 SoC 버스 인터페이스에 제공하는 패킷 소비 모듈을 포함하는, 메모리 액세스를 위한 직렬 통신 장치.
  8. 제7항에 있어서,
    상기 복수의 수신 레인은 상기 완료 패킷을 검사하는 완료 패킷 분석 모듈을 포함하고,
    상기 완료 패킷 분석 모듈은 수신한 패킷에 대한 데이터 무결성 정보를 생성하여 상기 요청 패킷 포매터에 제공하는, 메모리 액세스를 위한 직렬 통신 장치.
  9. 제8항에 있어서,
    상기 요청 패킷 포매터는 상기 데이터 무결성 정보에 기초하여, 수신된 패킷이 정상인 경우에는 Ack를 생성하고 비정상인 경우에는 Nak를 생성하는, 메모리 액세스를 위한 직렬 통신 장치.
  10. SoC(System-on-Chip) 버스 호환 메모리 제어기에 의해 액세스되는 SoC 버스 인터페이스;
    미리 정해진 패킷 프로토콜에 따라 생성된 패킷을 직렬 수신하는 직렬 트랜시버; 및
    상기 직렬 트랜시버를 통해 수신한 상기 패킷을 변환하여 상기 SoC 버스 인터페이스에 제공하는 슬레이브 프로토콜 처리기를 포함하는
    메모리 액세스를 위한 직렬 통신 장치.
  11. 제10항에 있어서,
    상기 슬레이브 프로토콜 처리기는,
    상기 직렬 트랜시버를 통해 수신한 헤더 패킷 및 데이터 패킷을 함께 전송하는 제1 수신 레인;
    상기 데이터 패킷만을 하나 이상의 제2 수신 레인; 및
    상기 제1 수신 레인 및 상기 하나 이상의 제2 수신 레인을 통해 수신한 데이터를 상기 SoC 버스 인터페이스에 전송하는 패킷 소비 모듈을 포함하는, 메모리 액세스를 위한 직렬 통신 장치.
  12. 제11항에 있어서,
    상기 제1 수신 레인 및 상기 하나 이상의 제2 수신 레인은,
    상기 직렬 트랜시버를 통해 수신한 상기 데이터 패킷을 검사하는 요청 패킷 분석 모듈;
    상기 데이터 패킷을 저장하는 요청 페이로드 버퍼; 및
    상기 요청 페이로드 버퍼에 저장된 데이터의 길이를 저장하는 요청 길이 버퍼를 포함하는, 메모리 액세스를 위한 직렬 통신 장치.
  13. 제12항에 있어서,
    상기 제1 수신 레인의 상기 요청 패킷 분석 모듈은, 상기 직렬 트랜시버를 통해 수신한 상기 헤더 패킷을 추가로 검사하고,
    상기 제1 수신 레인은, 상기 헤더 패킷을 저장하는 요청 헤더 버퍼를 더 포함하는, 메모리 액세스를 위한 직렬 통신 장치.
  14. 제12항에 있어서,
    상기 슬레이브 프로토콜 처리기는,
    상기 SoC 버스 인터페이스를 통해 수신한 응답 트랜잭션으로부터 완료 패킷을 생성하는 패킷 생성 모듈; 및
    상기 직렬 트랜시버에 상기 완료 패킷을 전송하는 제1 전송 레인을 포함하는, 메모리 액세스를 위한 직렬 통신 장치.
  15. 제14항에 있어서,
    상기 제1 전송 레인은,
    상기 완료 패킷을 저장하는 완료 페이로드 버퍼;
    상기 완료 페이로드 버퍼에 저장된 데이터의 길이를 저장하는 완료 페이로드 길이 버퍼; 및
    상기 완료 페이로드 버퍼 및 상기 완료 페이로드 길이 버퍼에 저장된 데이터에 기초하여 패킷 포매팅(packet formatting)을 수행하는 완료 패킷 포매터(packet formatter)를 포함하는, 메모리 액세스를 위한 직렬 통신 장치.
  16. 제15항에 있어서,
    상기 제1 전송 레인은,
    재시도 페이로드 버퍼, 재시도 페이로드 주소 버퍼 및 재시도 길이 버퍼와, 상기 재시도 페이로드 버퍼, 상기 재시도 페이로드 주소 버퍼 및 상기 재시도 길이 버퍼를 제어하는 재시도 제어기를 더 포함하는, 메모리 액세스를 위한 직렬 통신 장치.
  17. 제15항에 있어서,
    상기 요청 패킷 분석 모듈은 수신한 패킷에 대한 데이터 무결성 정보를 생성하여 상기 완료 패킷 포매터에 제공하는, 메모리 액세스를 위한 직렬 통신 장치.
  18. 제15항에 있어서,
    상기 완료 패킷 포매터는 상기 데이터 무결성 정보에 기초하여, 수신된 패킷이 정상인 경우에는 Ack를 생성하고 비정상인 경우에는 Nak를 생성하는, 메모리 액세스를 위한 직렬 통신 장치.
  19. 하드웨어 가속 장치로부터 요청 트랜잭션을 수신하고, 미리 정해진 패킷 프로토콜에 따라 상기 요청 트랜잭션을 패킷으로 변환하여 직렬 전송하는 메모리 확장기; 및
    상기 미리 정해진 패킷 프로토콜에 따라 상기 직렬 전송된 상기 패킷을 수신하고, 상기 패킷을 상기 요청 트랜잭션으로 변환하여, 메모리 장치를 액세스하는 외부 메모리 인터페이스를 포함하고,
    상기 외부 메모리 인터페이스는,
    상기 직렬 전송된 상기 패킷을 상기 요청 트랜잭션으로 변환하는 복수의 슬레이브 프로토콜 처리기를 포함하는,
    메모리 액세스를 위한 직렬 통신 시스템.
  20. 제19항에 있어서,
    상기 메모리 확장기는 제1 메모리 확장기 및 제2 메모리 확장기를 포함하고,
    상기 복수의 슬레이브 프로토콜 처리기는,
    상기 제1 메모리 확장기로부터 패킷화된 요청 트랜잭션을 수신하여 상기 메모리 장치를 액세스하는 제1 슬레이브 프로토콜 처리기; 및
    상기 제2 메모리 확장기로부터 패킷화된 요청 트랜잭션을 수신하여 상기 메모리 장치를 액세스하는 제2 슬레이브 프로토콜 처리기를 포함하는, 메모리 액세스를 위한 직렬 통신 시스템.
KR1020210045717A 2021-04-08 2021-04-08 메모리 액세스를 위한 직렬 통신 장치 및 시스템 KR20220139578A (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020210045717A KR20220139578A (ko) 2021-04-08 2021-04-08 메모리 액세스를 위한 직렬 통신 장치 및 시스템
US17/559,248 US11836106B2 (en) 2021-04-08 2021-12-22 Serial communication device and system for memory access

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020210045717A KR20220139578A (ko) 2021-04-08 2021-04-08 메모리 액세스를 위한 직렬 통신 장치 및 시스템

Publications (1)

Publication Number Publication Date
KR20220139578A true KR20220139578A (ko) 2022-10-17

Family

ID=83509274

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020210045717A KR20220139578A (ko) 2021-04-08 2021-04-08 메모리 액세스를 위한 직렬 통신 장치 및 시스템

Country Status (2)

Country Link
US (1) US11836106B2 (ko)
KR (1) KR20220139578A (ko)

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7328270B1 (en) * 1999-02-25 2008-02-05 Advanced Micro Devices, Inc. Communication protocol processor having multiple microprocessor cores connected in series and dynamically reprogrammed during operation via instructions transmitted along the same data paths used to convey communication data
KR100934227B1 (ko) 2007-09-21 2009-12-29 한국전자통신연구원 개방형 시리얼 정합 방식을 이용한 메모리 스위칭 컨트롤장치, 그의 동작 방법 및 이에 적용되는 데이터 저장 장치
JP5333200B2 (ja) 2009-12-25 2013-11-06 富士通株式会社 パケット通信制御装置、メモリアクセス制御装置及び情報処理システム
US9053251B2 (en) * 2011-11-29 2015-06-09 Intel Corporation Providing a sideband message interface for system on a chip (SoC)
KR20150085915A (ko) 2014-01-17 2015-07-27 한국전자통신연구원 전자 장치 사이에서 신호를 송수신하기 위한 인터페이스 회로, 그리고 그것을 포함하는 반도체 메모리 칩 및 연산 처리 장치
KR20180023543A (ko) 2016-08-26 2018-03-07 삼성전자주식회사 시리얼 통신으로 메모리를 제공하기 위한 장치 및 방법

Also Published As

Publication number Publication date
US20220327085A1 (en) 2022-10-13
US11836106B2 (en) 2023-12-05

Similar Documents

Publication Publication Date Title
US11954055B2 (en) Mapping high-speed, point-to-point interface channels to packet virtual channels
US7246191B2 (en) Method and apparatus for memory interface
US11403247B2 (en) Methods and apparatus for network interface fabric send/receive operations
JP5591729B2 (ja) トレースデータの優先度の選択
US10924591B2 (en) Low-latency link compression schemes
US8051222B2 (en) Concatenating secure digital input output (SDIO) interface
US11777864B2 (en) Transparent packet splitting and recombining
US20070002827A1 (en) Automated serial protocol target port transport layer retry mechanism
KR20160018987A (ko) 인터페이스 회로 및 그것의 패킷 전송 방법
US7460531B2 (en) Method, system, and program for constructing a packet
CN116089343A (zh) 一种基于axi的数据存储方法、装置、存储介质及设备
US10938622B2 (en) Interconnection network for integrated circuit with fault detection circuitry provided locally to an upstream location
CN112148651A (zh) 一种增强型rapidio互联装置及设备
US10489322B2 (en) Apparatus and method to improve performance in DMA transfer of data
JP3733699B2 (ja) シリアルインタフェース回路
KR20220139578A (ko) 메모리 액세스를 위한 직렬 통신 장치 및 시스템
CN112817774A (zh) 用于片上网络中的事务广播的系统和方法
WO2022199357A1 (zh) 数据处理方法及装置、电子设备、计算机可读存储介质
US20080320178A1 (en) DMA transfer apparatus
CN110602211B (zh) 一种带异步通知的乱序rdma方法与装置
US9379824B2 (en) Apparatus and method for interfacing between central processing unit and main memory unit
US10452579B2 (en) Managing input/output core processing via two different bus protocols using remote direct memory access (RDMA) off-loading processing system
KR20220135562A (ko) 메모리 액세스를 위한 직렬 통신 방법 및 시스템
CN102984599A (zh) 基于RapidIO协议网络的视频采集传输装置及方法
CN116226027B (zh) 数据传输系统、方法、装置、通信设备及存储介质

Legal Events

Date Code Title Description
E902 Notification of reason for refusal