KR20220135562A - 메모리 액세스를 위한 직렬 통신 방법 및 시스템 - Google Patents
메모리 액세스를 위한 직렬 통신 방법 및 시스템 Download PDFInfo
- Publication number
- KR20220135562A KR20220135562A KR1020210041403A KR20210041403A KR20220135562A KR 20220135562 A KR20220135562 A KR 20220135562A KR 1020210041403 A KR1020210041403 A KR 1020210041403A KR 20210041403 A KR20210041403 A KR 20210041403A KR 20220135562 A KR20220135562 A KR 20220135562A
- Authority
- KR
- South Korea
- Prior art keywords
- memory
- packet
- processor
- side processor
- flow control
- Prior art date
Links
- 238000004891 communication Methods 0.000 title claims abstract description 59
- 238000000034 method Methods 0.000 title claims abstract description 40
- 239000000872 buffer Substances 0.000 claims description 52
- 230000005540 biological transmission Effects 0.000 claims description 49
- 238000012549 training Methods 0.000 claims description 42
- 230000004044 response Effects 0.000 claims description 20
- 238000010586 diagram Methods 0.000 description 10
- 238000012545 processing Methods 0.000 description 5
- 230000006872 improvement Effects 0.000 description 3
- 230000008569 process Effects 0.000 description 3
- 230000007704 transition Effects 0.000 description 3
- 230000004913 activation Effects 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 238000003491 array Methods 0.000 description 1
- 238000012790 confirmation Methods 0.000 description 1
- 230000007423 decrease Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 239000000284 extract Substances 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 230000004083 survival effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1668—Details of memory controller
- G06F13/1689—Synchronisation and timing concerns
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/42—Bus transfer protocol, e.g. handshake; Synchronisation
- G06F13/4282—Bus transfer protocol, e.g. handshake; Synchronisation on a serial bus, e.g. I2C bus, SPI bus
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1605—Handling requests for interconnection or transfer for access to memory bus based on arbitration
- G06F13/1652—Handling requests for interconnection or transfer for access to memory bus based on arbitration in a multiprocessor architecture
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1668—Details of memory controller
- G06F13/1673—Details of memory controller using buffers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/16—Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
- G06F15/177—Initialisation or configuration control
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F18/00—Pattern recognition
- G06F18/20—Analysing
- G06F18/21—Design or setup of recognition systems or techniques; Extraction of features in feature space; Blind source separation
- G06F18/214—Generating training patterns; Bootstrap methods, e.g. bagging or boosting
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0604—Improving or facilitating administration, e.g. storage management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0629—Configuration or reconfiguration of storage systems
- G06F3/0632—Configuration or reconfiguration of storage systems by initialisation or re-initialisation of storage systems
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Computer Hardware Design (AREA)
- Data Mining & Analysis (AREA)
- Human Computer Interaction (AREA)
- Software Systems (AREA)
- Bioinformatics & Cheminformatics (AREA)
- Evolutionary Computation (AREA)
- Evolutionary Biology (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Bioinformatics & Computational Biology (AREA)
- Artificial Intelligence (AREA)
- Life Sciences & Earth Sciences (AREA)
- Communication Control (AREA)
Abstract
메모리 액세스를 위한 직렬 통신 방법 및 시스템이 제공된다. 메모리 액세스를 위한 직렬 통신 시스템은, 프로세서로부터 메모리 트랜잭션을 수신하고, 미리 정해진 페이즈(phase)에 따라 상기 메모리 트랜잭션을 패킷으로 변환하여 직렬 전송하는 프로세서측 처리기; 및 상기 미리 정해진 페이즈에 따라 상기 직렬 전송된 상기 패킷을 수신하고, 상기 패킷을 상기 메모리 트랜잭션으로 변환하여 메모리를 액세스하는 메모리측 처리기를 포함하고, 상기 미리 정해진 페이즈는, 채널 설정 페이즈(channel establishment phase), 흐름 제어 초기화 페이즈(flow control initialization phase) 및 메모리 트랜잭션 페이즈(memory transaction phase)를 포함할 수 있다.
Description
본 발명은 메모리 액세스를 위한 직렬 통신 방법 및 시스템에 관한 것이다.
신호선(signal line)에서 동작 가능한 클럭 주파수의 한계로 인해, 컴퓨터 시스템에서 프로세서와 메모리 간의 통신을 위해 병렬 통신이 사용되어 왔다. 병렬 통신을 사용하는 경우, 동작 가능한 클럭 주파수의 범위가 제한적인 경우에도 대역폭을 높일 수 있었으나, 많은 신호선을 필요로 하기 때문에 신호선 라우팅이 어렵고 확장성이 낮았다. 또한, 병렬 통신의 경우 복수의 프로세서가 하나의 메모리를 공유하는 아키텍처에서 구현 난이도 및 복잡도가 높다.
최근에는 신호선에서 동작 가능한 클럭 주파수가 충분히 높아질 수 있기 때문에, 원하는 대역폭을 확보하면서 직렬 통신을 사용할 수 있게 되었다. 그런데 아직까지는 프로세서와 메모리 사이의 통신 인터페이스가 병렬 통신 구조로 구현되기 때문에, 병렬 통신 구조를 직렬 통신 구조로 변환할 수 있는 기술이 요구되고 있다. 특히, 최근에는 복수의 프로세서가 단일 메모리를 공유하는 구조가 주목받고 있는 바, 프로세서와 메모리 사이의 병렬 통신 구조를 직렬 통신 구조로 변환하는 기술에 대한 중요성은 더욱 크다.
본 발명이 해결하고자 하는 과제는, 프로세서와 메모리 사이의 병렬 통신 구조를 직렬 통신 구조로 변환할 수 있는 직렬 통신 방법 및 시스템을 제공하는 것이다.
본 발명의 일 실시 예에 따른 메모리 액세스를 위한 직렬 통신 시스템은, 프로세서로부터 메모리 트랜잭션을 수신하고, 미리 정해진 페이즈(phase)에 따라 상기 메모리 트랜잭션을 패킷으로 변환하여 직렬 전송하는 프로세서측 처리기; 및 상기 미리 정해진 페이즈에 따라 상기 직렬 전송된 상기 패킷을 수신하고, 상기 패킷을 상기 메모리 트랜잭션으로 변환하여 메모리를 액세스하는 메모리측 처리기를 포함하고, 상기 미리 정해진 페이즈는, 채널 설정 페이즈(channel establishment phase), 흐름 제어 초기화 페이즈(flow control initialization phase) 및 메모리 트랜잭션 페이즈(memory transaction phase)를 포함할 수 있다.
본 발명의 일부 실시 예에서, 상기 채널 설정 페이즈는, 상기 프로세서측 처리기와 상기 메모리측 처리기가 트레이닝 시퀀스(Training Sequence) 패킷 및 트레이닝 시퀀스 확인 응답(Training Sequence Acknowledgement) 패킷을 서로 송수신하여 전송 채널의 생존여부(aliveness)를 확인하는 단계를 포함할 수 있다.
본 발명의 일부 실시 예에서, 상기 채널 설정 페이즈는, 상기 메모리측 처리기가 전송 채널 번호를 지정한 트레이닝 시퀀스 패킷을 상기 프로세서측 처리기에 전송하는 단계; 상기 프로세서측 처리기가 상기 전송 채널 번호를 저장하는 단계; 및 상기 프로세서측 처리기가 트레이닝 시퀀스 확인 응답 패킷을 상기 메모리측 처리기에 전송하는 단계를 포함할 수 있다.
본 발명의 일부 실시 예에서, 상기 채널 설정 페이즈는, 상기 메모리측 처리기가 전송 레인 번호를 지정한 트레이닝 시퀀스 패킷을 상기 프로세서측 처리기에 전송하는 단계; 상기 프로세서측 처리기가 상기 전송 레인 번호를 저장하는 단계; 및 상기 프로세서측 처리기가 트레이닝 시퀀스 확인 응답 패킷을 상기 메모리측 처리기에 전송하는 단계를 포함할 수 있다.
본 발명의 일부 실시 예에서, 상기 채널 설정 페이즈는, 전송 채널 번호 및 전송 레인 번호에 대한 설정이 완료된 후, 상기 프로세서측 처리기와 상기 메모리측 처리기가 트레이닝 시퀀스 확인 응답 패킷을 서로 송수신하여 상기 전송 채널 및 상기 전송 레인의 설정을 완료하는 단계를 포함할 수 있다.
본 발명의 일부 실시 예에서, 상기 흐름 제어 초기화 페이즈는, 상기 프로세서측 처리기와 상기 메모리측 처리기가 흐름 제어 초기화(Flow Control Initialize) 패킷 및 흐름 제어 초기화 확인 응답(Flow Control Initialize Acknowledgement) 패킷을 서로 송수신하여 흐름 제어 초기화를 수행하는 단계를 포함할 수 있다.
본 발명의 일부 실시 예에서, 상기 흐름 제어 초기화를 수행하는 단계는, 상기 프로세서측 처리기가 페이로드 수신 버퍼의 상태를 나타내는 흐름 제어 초기화 패킷을 상기 메모리측 처리기에 전송하는 단계; 상기 메모리측 처리기가 상기 페이로드 수신 버퍼의 상태를 기록하는 단계; 및 상기 메모리측 처리기가 흐름 제어 초기화 확인 응답을 상기 프로세서측 처리기에 전송하는 단계를 포함할 수 있다.
본 발명의 일부 실시 예에서, 상기 흐름 제어 초기화를 수행하는 단계는, 상기 메모리측 처리기가 헤더 및 페이로드 수신 버퍼의 상태를 나타내는 흐름 제어 초기화 패킷을 상기 프로세서측 처리기에 전송하는 단계; 상기 프로세서측 처리기가 상기 헤더 및 페이로드 수신 버퍼의 상태를 기록하는 단계; 및 상기 프로세서측 처리기가 흐름 제어 초기화 확인 응답을 상기 메모리측 처리기에 전송하는 단계를 포함할 수 있다.
본 발명의 일부 실시 예에서, 상기 메모리 트랜잭션 페이즈는, 상기 프로세서측 처리기가 메모리 쓰기(Memory Write) 패킷을 상기 메모리측 처리기에 전송하는 단계; 상기 메모리측 처리기가 메모리 쓰기 확인 응답(Memory Write Acknowledgement) 패킷을 상기 프로세서측 처리기에 전송하는 단계; 상기 메모리측 처리기가 상기 메모리에 대해 메모리 쓰기 트랜잭션을 수행하는 단계; 및 상기 메모리측 처리기의 수신 버퍼 상태를 업데이트하기 위한 흐름 제어 업데이트(Flow Control Update) 패킷을 상기 프로세서측 처리기에 전송하는 단계를 포함할 수 있다.
본 발명의 일부 실시 예에서, 상기 메모리 트랜잭션 페이즈는, 상기 프로세서측 처리기가 메모리 읽기(Memory Read) 패킷을 상기 메모리측 처리기에 전송하는 단계; 상기 메모리측 처리기가 메모리 읽기 확인 응답(Memory Read Acknowledgement) 패킷을 상기 프로세서측 처리기에 전송하는 단계; 상기 메모리측 처리기의 수신 버퍼 상태를 업데이트하기 위한 흐름 제어 업데이트 패킷을 상기 프로세서측 처리기에 전송하는 단계; 상기 메모리측 처리기가 메모리 읽기 응답(Memory Read Response) 패킷을 상기 프로세서측 처리기에 전송하는 단계; 및 상기 프로세서측 처리기의 수신 버퍼 상태를 업데이트하기 위한 흐름 제어 업데이트 패킷을 상기 메모리측 처리기에 전송하는 단계를 포함할 수 있다.
본 발명의 일 실시 예에 따른 메모리 액세스를 위한 직렬 통신 방법은, 프로세서로부터 메모리 트랜잭션을 수신하는 단계; 미리 정해진 페이즈에 따라 상기 메모리 트랜잭션을 패킷으로 변환하는 단계; 및 상기 패킷을 직렬 패킷 신호선을 통해 직렬 전송하는 단계를 포함하고, 상기 미리 정해진 페이즈는, 채널 설정 페이즈, 흐름 제어 초기화 페이즈 및 메모리 트랜잭션 페이즈를 포함할 수 있다.
본 발명의 일부 실시 예에서, 상기 채널 설정 페이즈는, 상기 직렬 패킷 신호선을 통해 전송 채널 번호 및 전송 레인 번호 중 적어도 하나를 지정한 트레이닝 시퀀스 패킷을 수신하는 단계; 상기 전송 채널 번호 및 전송 레인 번호 중 적어도 하나를 저장하는 단계; 및 상기 직렬 패킷 신호선을 통해 트레이닝 시퀀스 확인 응답 패킷을 전송하는 단계를 포함할 수 있다.
본 발명의 일부 실시 예에서, 상기 흐름 제어 초기화 페이즈는, 상기 직렬 패킷 신호선을 통해 헤더 및 페이로드 수신 버퍼의 상태를 나타내는 흐름 제어 초기화 패킷을 수신하는 단계; 상기 헤더 및 페이로드 수신 버퍼의 상태를 기록하는 단계; 및 상기 직렬 패킷 신호선을 통해 흐름 제어 초기화 확인 응답을 전송하는 단계를 포함할 수 있다.
본 발명의 일부 실시 예에서, 상기 메모리 트랜잭션 페이즈는, 상기 직렬 패킷 신호선을 통해 메모리 쓰기 패킷을 전송하는 단계; 상기 직렬 패킷 신호선을 통해 메모리 쓰기 확인 응답 패킷을 수신하는 단계; 및 상기 직렬 패킷 신호선을 통해 흐름 제어 업데이트 패킷을 수신하는 단계를 포함할 수 있다.
본 발명의 일부 실시 예에서, 상기 메모리 트랜잭션 페이즈는, 상기 직렬 패킷 신호선을 통해 메모리 읽기 패킷을 전송하는 단계; 상기 직렬 패킷 신호선을 통해 메모리 읽기 확인 응답 패킷을 수신하는 단계; 상기 직렬 패킷 신호선을 통해 제1 흐름 제어 업데이트 패킷을 수신하는 단계; 상기 직렬 패킷 신호선을 통해 메모리 읽기 응답 패킷을 수신하는 단계; 및 상기 직렬 패킷 신호선을 통해 제2 흐름 제어 업데이트 패킷을 전송하는 단계를 포함할 수 있다.
본 발명의 일 실시 예에 따른 메모리 액세스를 위한 직렬 통신 방법은, 미리 정해진 페이즈에 따라 직렬 패킷 신호선을 통해 직렬 전송되는 패킷을 수신하는 단계; 상기 패킷을 메모리 트랜잭션으로 변환하는 단계; 및 상기 메모리 트랜잭션에 따라 메모리를 액세스하는 단계를 포함하고, 상기 미리 정해진 페이즈는, 채널 설정 페이즈, 흐름 제어 초기화 페이즈 및 메모리 트랜잭션 페이즈를 포함할 수 있다.
본 발명의 일부 실시 예에서, 상기 채널 설정 페이즈는, 상기 직렬 패킷 신호선을 통해 전송 채널 번호 및 전송 레인 번호 중 적어도 하나를 지정한 트레이닝 시퀀스 패킷을 전송하는 단계; 및 직렬 패킷 신호선을 통해 트레이닝 시퀀스 확인 응답 패킷을 수신하는 단계를 포함할 수 있다.
본 발명의 일부 실시 예에서, 상기 흐름 제어 초기화 페이즈는, 상기 직렬 패킷 신호선을 통해 페이로드 수신 버퍼의 상태를 나타내는 흐름 제어 초기화 패킷을 수신하는 단계; 상기 페이로드 수신 버퍼의 상태를 기록하는 단계; 및 상기 직렬 패킷 신호선을 통해 흐름 제어 초기화 확인 응답을 전송하는 단계를 포함할 수 있다.
본 발명의 일부 실시 예에서, 상기 메모리 트랜잭션 페이즈는, 상기 직렬 패킷 신호선을 통해 메모리 쓰기 패킷을 수신하는 단계; 상기 직렬 패킷 신호선을 통해 메모리 쓰기 확인 응답 패킷을 전송하는 단계; 상기 메모리에 대해 메모리 쓰기 트랜잭션을 수행하는 단계; 및 상기 직렬 패킷 신호선을 통해 흐름 제어 업데이트 패킷을 전송하는 단계를 포함할 수 있다.
본 발명의 일부 실시 예에서, 상기 메모리 트랜잭션 페이즈는, 상기 직렬 패킷 신호선을 통해 메모리 읽기 패킷을 수신하는 단계; 상기 직렬 패킷 신호선을 통해 메모리 읽기 확인 응답 패킷을 전송하는 단계; 상기 직렬 패킷 신호선을 통해 제1 흐름 제어 업데이트 패킷을 전송하는 단계; 상기 직렬 패킷 신호선을 통해 메모리 읽기 응답 패킷을 전송하는 단계; 및 상기 직렬 패킷 신호선을 통해 제2 흐름 제어 업데이트 패킷을 수신하는 단계를 포함할 수 있다.
본 발명의 실시 예들에 따르면, 프로세서와 메모리 사이에 직렬 통신을 제공함에 따라, 프로세서와 메모리 간의 라우팅이 유연하고 성능 향상을 위한 대역폭 확장이 용이하며, 프로세서와 메모리 사이의 직렬 패킷 통신에 최적화된 헤더 구조를 채택함에 따라 불필요한 오버헤드를 줄여 전체적인 대역폭 성능을 높일 수 있다. 또한, 복수의 프로세서가 하나의 메모리를 공유하는 아키텍처의 구현 가능성 및 용이성을 높이고, 복수의 프로세서 간 데이터 교환과 같은 응용도 가능하다.
도 1은 본 발명의 일 실시 예에 따른 메모리 액세스를 위한 직렬 통신 시스템을 설명하기 위한 도면이다.
도 2는 본 발명의 일 실시 예에 따른 메모리 액세스를 위한 직렬 통신 시스템의 동작을 설명하기 위한 도면이다.
도 3은 본 발명의 일 실시 예에 따른 메모리 액세스를 위한 직렬 통신 방법을 설명하기 위한 도면이다.
도 4 내지 도 14는 본 발명의 일 실시 예에 따른 메모리 액세스를 위한 직렬 통신 시스템에서 사용되는 패킷의 예시적인 구현 예들을 나타낸 도면들이다.
도 15는 본 발명의 실시 예들에 따른 메모리 액세스를 위한 직렬 통신 방법 및 시스템을 구현하기 위한 컴퓨팅 장치를 설명하기 위한 블록도이다.
도 2는 본 발명의 일 실시 예에 따른 메모리 액세스를 위한 직렬 통신 시스템의 동작을 설명하기 위한 도면이다.
도 3은 본 발명의 일 실시 예에 따른 메모리 액세스를 위한 직렬 통신 방법을 설명하기 위한 도면이다.
도 4 내지 도 14는 본 발명의 일 실시 예에 따른 메모리 액세스를 위한 직렬 통신 시스템에서 사용되는 패킷의 예시적인 구현 예들을 나타낸 도면들이다.
도 15는 본 발명의 실시 예들에 따른 메모리 액세스를 위한 직렬 통신 방법 및 시스템을 구현하기 위한 컴퓨팅 장치를 설명하기 위한 블록도이다.
아래에서는 첨부한 도면을 참조하여 본 발명의 실시 예에 대하여 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자가 용이하게 실시할 수 있도록 상세히 설명한다. 그러나 본 발명은 여러 가지 상이한 형태로 구현될 수 있으며 여기에서 설명하는 실시 예에 한정되지 않는다. 그리고 도면에서 본 발명을 명확하게 설명하기 위해서 설명과 관계없는 부분은 생략하였으며, 명세서 전체를 통하여 유사한 부분에 대해서는 유사한 도면 부호를 붙였다.
명세서 및 청구범위 전체에서, 어떤 부분이 어떤 구성 요소를 "포함"한다고 할 때, 이는 특별히 반대되는 기재가 없는 한 다른 구성요소를 제외하는 것이 아니라 다른 구성 요소를 더 포함할 수 있는 것을 의미한다.
또한, 명세서에 기재된 "...부", "...기", "모듈" 등의 용어는 본 명세서에서 설명되는 적어도 하나의 기능이나 동작을 처리할 수 있는 단위를 의미할 수 있으며, 이는 하드웨어나 소프트웨어 또는 하드웨어 및 소프트웨어의 결합으로 구현될 수 있다.
도 1은 본 발명의 일 실시 예에 따른 메모리 액세스를 위한 직렬 통신 시스템을 설명하기 위한 도면이다.
도 1을 참조하면, 본 발명의 일 실시 예에 따른 메모리 액세스를 위한 직렬 통신 시스템(1)은 프로세서측 처리기(10), 프로세서(12), 병렬 버스(14), 메모리측 처리기(20), 메모리(22), 병렬 버스(24) 및 직렬 패킷 신호선(30)을 포함할 수 있다.
프로세서측 처리기(10)는 프로세서(12)로부터 메모리 트랜잭션을 수신하고, 메모리 트랜잭션을 직렬 전송용 패킷으로 변환할 수 있다. 구체적으로, 프로세서측 처리기(10)는 병렬 버스(14)를 통해 프로세서(12)와 전기적으로 연결되며, 미리 정해진 페이즈(phase)에 따라, 병렬 버스(14)를 통해 수신 받은 메모리 트랜잭션을 패킷으로 변환할 수 있다. 프로세서측 처리기(10)는 변환한 패킷을 직렬 패킷 신호선(30)을 통해 직렬 전송할 수 있다.
여기서 프로세서(12)는 CPU(Central Processing Unit), AP(Application Processor), GPU(Graphics Processing Units), FPGA(Field-Programmable Gate Arrays), ASIC(Application-Specific Integrated Circuits), DSP(Digital Signal Processor) 등을 포함할 수 있으나, 본 발명의 범위가 이에 제한되는 것은 아니다.
한편, 메모리측 처리기(20)는 직렬 전송된 패킷을 수신하고, 패킷을 메모리 트랜잭션으로 변환하여 메모리(22)를 액세스할 수 있다. 구체적으로, 메모리측 처리기(20)는, 미리 정해진 페이즈에 따라, 직렬 패킷 신호선(30)을 통해 패킷을 수신하고, 병렬 버스(14)를 통해 메모리 액세스를 수행할 수 있다. 도 1에는 도시되지 않았으나, 메모리(22)는 그 내부에 메모리 컨트롤러와 메모리 셀 영역을 포함할 수 있다.
여기서 메모리(22)는 DRAM(Dynamic Random Access Memory), SRAM(Static Random Access Memory)를 비롯한 휘발성 메모리 장치로 구현되거나, 플래시 메모리를 비롯한 비휘발성 메모리 장치로 구현되거나, 휘발성 메모리 장치와 비휘발성 메모리 장치의 조합으로 구현될 수도 있다.
직렬 패킷 신호선(30)은 프로세서측 처리기(10)와 메모리측 처리기(20) 사이의 직렬 패킷 통신을 지원하는 신호선으로, 예를 들어 케이블 어셈블리로 구현될 수 있으나, 본 발명의 범위가 이에 제한되는 것은 아니다. 한편, 병렬 버스(14, 24)는 SoC(System-on-Chip) 버스 인터페이스로 구현될 수 있으나 본 발명의 범위가 이에 제한되는 것은 아니다.
즉, 본 발명의 다양한 실시 예에 따르면, 패킷 통신을 기반으로, 프로세서(12)와 메모리(22) 사이에 병렬 신호를 송수신하는 구조를, 패킷을 직렬 신호로 송수신하는 구조로 변환할 수 있다. 이어서 도 2를 참조하여 프로세서측 처리기(10)와 메모리측 처리기(30)의 동작 단계를 정의하는 3 단계의 미리 정해진 페이즈에 대해 설명하도록 한다.
도 2는 본 발명의 일 실시 예에 따른 메모리 액세스를 위한 직렬 통신 시스템의 동작을 설명하기 위한 도면이다.
도 2를 참조하면, 프로세서측 처리기(10)와 메모리측 처리기(30)는 3 단계의 미리 정해진 페이즈에 따라 동작할 수 있다. 구체적으로, 미리 정해진 페이즈는, 채널 설정 페이즈(channel establishment phase)(S21), 흐름 제어 초기화 페이즈(flow control initialization phase)(S23) 및 메모리 트랜잭션 페이즈(memory transaction phase)(S25)를 포함할 수 있다.
채널 설정 페이즈(S21)는 프로세서측 처리기(10)와 메모리측 처리기(20) 사이의 전송 채널의 생존여부(aliveness)를 상호 확인하며, 전송 채널 및 전송 레인의 번호 및 개수를 지정하는 등의 과정을 통해 전송 채널을 설정하는 페이즈이다.
흐름 제어 초기화 페이즈(S23)는 흐름 제어를 위해 패킷을 수신하는 요소의 버퍼 정보를 패킷을 전송하는 요소에 알리는 페이즈이다.
메모리 트랜잭션 페이즈(S25)는 메모리 쓰기, 메모리 읽기, 메모리 읽기 응답 패킷이 송수신되면서 메모리(22)를 액세스하는 페이즈로서, 버퍼의 상태를 지속적으로 업데이트하기 위해 흐름 제어가 함께 수행되는 페이즈이다.
채널 설정 페이즈(S21)를 통해 전송 채널이 설정되면(Channel Established) 흐름 제어 초기화 페이즈(S23)로 트랜지션되며, 흐름 제어 초기화 페이즈(S23)를 통해 흐름 제어 초기화가 완료되면(FC Initialized) 메모리 트랜잭션 페이즈(S25)로 트랜지션되어 메모리 액세스가 수행되고, 전원 재인가 등 리셋 조건이 충족되는 경우에는(Rst) 다시 채널 설정 페이즈(S21)로 트랜지션될 수 있다.
도 3은 본 발명의 일 실시 예에 따른 메모리 액세스를 위한 직렬 통신 방법을 설명하기 위한 도면이다.
도 3을 참조하면, 본 발명의 일 실시 예에 따른 메모리 액세스를 위한 직렬 통신 방법은 채널 설정 페이즈(S21), 흐름 제어 초기화 페이즈 (S23) 및 메모리 트랜잭션 페이즈(S25)에서 프로세서측 처리기(10)와 메모리측 처리기(20) 사이의 동작을 나타낸다.
메모리 액세스를 위한 직렬 통신 시스템에 전원이 인가되면, 미리 정해진 방식에 따라 시스템 초기화가 진행될 수 있다. 예를 들어, 프로세서측 처리기(10)와 메모리측 처리기(20)에 전원이 인가되면 파워 온 리셋(Power-On-Reset)이 어서팅(assert)되고, 이어서 리셋(Reset)이 어서팅된 후, 프로세서측 처리기(10)와 메모리측 처리기(20)는 채널 설정 페이즈(S21)에 진입할 수 있다.
먼저, 채널 설정 페이즈(S21)는, 프로세서측 처리기(10)와 메모리측 처리기(20)가 트레이닝 시퀀스(Training Sequence) 패킷 및 트레이닝 시퀀스 확인 응답(Training Sequence Acknowledgement) 패킷을 서로 송수신하여 전송 채널의 생존여부를 확인하는 단계(SA)를 포함할 수 있다. 구체적으로, 단계(SA)에서, 프로세서측 처리기(10)와 메모리측 처리기(20)는 각각 전송 채널 번호(C#)와 전송 레인 번호(L#)가 미 지정된 트레이닝 시퀀스 패킷을 상대방에게 전송하며, 전송 채널 번호(C#)와 전송 레인 번호(L#)가 미 지정된 트레이닝 시퀀스 패킷을 수신한 경우 시퀀스 확인 응답 패킷을 상대방에게 전송하는 방식으로 전송 채널의 생존여부를 확인할 수 있다.
다음으로, 채널 설정 페이즈(S21)는, 메모리측 처리기(20)가 전송 채널 번호(C#)를 지정한 트레이닝 시퀀스 패킷을 프로세서측 처리기(10)에 전송하고, 프로세서측 처리기(10)가 전송 채널 번호(C#)를 저장한 후, 프로세서측 처리기(10)가 트레이닝 시퀀스 확인 응답 패킷을 메모리측 처리기(20)에 전송하는 단계(SB)를 포함할 수 있다. 여기에서 프로세서측 처리기(10)가 메모리측 처리기(20)에 전송하는 트레이닝 시퀀스 확인 응답 패킷에는 메모리측 처리기(20)가 지정한 전송 채널 번호(C#)가 반영되어 있다.
또한, 채널 설정 페이즈(S21)는, 메모리측 처리기(20)가 전송 레인 번호(L#)를 지정한 트레이닝 시퀀스 패킷을 프로세서측 처리기(10)에 전송하고, 프로세서측 처리기(10)가 전송 레인 번호(L#)를 저장한 후, 프로세서측 처리기(10)가 트레이닝 시퀀스 확인 응답 패킷을 메모리측 처리기(20)에 전송하는 단계(SC)를 포함할 수 있다. 여기에서 프로세서측 처리기(10)가 메모리측 처리기(20)에 전송하는 트레이닝 시퀀스 확인 응답 패킷에는 메모리측 처리기(20)가 지정한 전송 레인 번호(L#)가 반영되어 있다.
단계(SB, SC)에서, 메모리측 처리기(20)가 전송 채널 번호(C#) 및 전송 레인 번호(L#)를 지정하는 이유는 하나의 메모리측 처리기(20)에 복수의 프로세서측 처리기(10)가 연결되는 경우 설정되는 복수의 채널들을 구분하고, 활성화된 채널의 개수와, 채널 내에서 활성화된 채널의 레인의 개수 등을 인지하여, 신호선의 컨디션을 검사하기 위함이다.
다음으로, 채널 설정 페이즈(S21)는 전송 채널 번호 및 전송 레인 번호에 대한 설정이 완료된 후, 프로세서측 처리기(10)와 메모리측 처리기(20)가 트레이닝 시퀀스 확인 응답 패킷을 서로 송수신하여 전송 채널 및 전송 레인의 설정을 완료하는 단계(SD)를 포함할 수 있다. 구체적으로, 메모리측 처리기(20)는 단계(SB, SC)에서 프로세서측 처리기(10)로부터 자신이 지정한 전송 채널 번호(C#) 및 전송 레인 번호(L#)로 설정된 트레이닝 시퀀스 확인 응답 패킷을 수신하면 채널 설정이 완료된 것으로 간주할 수 있고, 단계(SD)에서, 메모리측 처리기(20)는 프로세서측 처리기(10)에 트레이닝 시퀀스 확인 응답 패킷을 전송할 수 있다. 트레이닝 시퀀스 확인 응답 패킷을 수신한 프로세서측 처리기(10)도 채널 설정이 완료된 것으로 간주할 수 있다.
채널 설정이 완료된 것으로 간주한 프로세서측 처리기(10) 및 메모리측 처리기(20)는 각각 흐름 제어 초기화 페이즈(S23)에 진입할 수 있다.
흐름 제어 초기화 페이즈(S23)는, 프로세서측 처리기(10)와 메모리측 처리기(20)가 흐름 제어 초기화(Flow Control Initialize) 패킷 및 흐름 제어 초기화 확인 응답(Flow Control Initialize Acknowledgement) 패킷을 서로 송수신하여 흐름 제어 초기화를 수행하는 단계를 포함할 수 있다.
그런데, 프로세서측 처리기(10)는 메모리측 처리기(20)에 메모리 쓰기 패킷 또는 메모리 읽기 패킷을 전송하므로 메모리측 처리기(20)는 수신 버퍼로서 메모리 쓰기 패킷 또는 메모리 읽기 패킷에 관련된 헤더 버퍼와 페이로드 버퍼를 구비해야 하는 반면, 메모리측 처리기(20)는 프로세서측 처리기(10)에 메모리 읽기 응답 패킷을 전송하므로 프로세서측 처리기(10)는 수신 버퍼로서 페이로드 버퍼만 구비할 수 있다. 그러므로 프로세서측 처리기(10)와 메모리측 처리기(20)가 흐름 제어 초기화를 위해 상대방에게 전달하는 정보는 서로 다를 수 있다.
구체적으로, 흐름 제어 초기화 페이즈(S23)에서 흐름 제어 초기화를 수행하는 단계는, 프로세서측 처리기(10)가 페이로드 수신 버퍼의 상태(예를 들어, 크기)를 나타내는 흐름 제어 초기화 패킷을 메모리측 처리기(20)에 전송하는 단계; 메모리측 처리기(20)가 페이로드 수신 버퍼의 상태를 기록하는 단계; 및 메모리측 처리기(20)가 흐름 제어 초기화 확인 응답을 프로세서측 처리기(10)에 전송하는 단계를 포함할 수 있다.
한편, 흐름 제어 초기화 페이즈(S23)에서 흐름 제어 초기화를 수행하는 단계는, 메모리측 처리기(20)가 헤더 및 페이로드 수신 버퍼의 상태(예를 들어, 크기)를 나타내는 흐름 제어 초기화 패킷을 프로세서측 처리기(10)에 전송하는 단계; 프로세서측 처리기(10)가 헤더 및 페이로드 수신 버퍼의 상태를 기록하는 단계; 및 프로세서측 처리기(10)가 흐름 제어 초기화 확인 응답을 메모리측 처리기(20)에 전송하는 단계를 포함할 수 있다.
이후 상대방으로부터 흐름 제어 초기화 확인 응답을 수신한 프로세서측 처리기(10) 및 메모리측 처리기(20)는 흐름 제어 초기화가 완료된 것으로 간주하고, 각각 메모리 트랜잭션 페이즈(또는 정상 패킷 송수신 페이즈)(S25)에 진입할 수 있다.
메모리 트랜잭션 페이즈(또는 정상 패킷 송수신 페이즈)(S25)에서 프로세서측 처리기(10)는 메모리 쓰기(Memory Write) 패킷 또는 메모리 읽기(Memory Read) 패킷을 메모리측 처리기(20)에 전송하며, 메모리측 처리기(20)는 메모리 읽기 응답(Memory Read Response) 패킷을 프로세서측 처리기(10)에 전송할 수 있다. 또한, 프로세서측 처리기(10) 및 메모리측 처리기(20)는 패킷의 정상 수신 여부를 나타내는 확인 응답(Acknowledgement) 패킷을 상대방에게 전송할 수 있는데, 확인 응답 패킷은 긍정적 확인 응답 패킷(Ack) 또는 부정적 확인 응답 패킷(Nak)을 포함할 수 있다.
한편, 메모리 트랜잭션 페이즈(S25)에서 프로세서측 처리기(10) 및 메모리측 처리기(20)는 흐름 제어 업데이트(Flow Control Update) 패킷을 전송할 수 있는데, 프로세서측 처리기(10) 및 메모리측 처리기(20)는 패킷을 수신하면 버퍼의 크기가 감소하며, 수신한 패킷을 소모하였을 때 버퍼의 크기가 증가하게 되므로, 이러한 버퍼의 크기 변화를 (주기적으로 또는 비주기적으로) 상대방에게 전달하여 버퍼의 오버플로(overflow)를 방지하기 위함이다.
구체적으로, 메모리 트랜잭션 페이즈(S25)는, 프로세서측 처리기(10)가 메모리 쓰기(Memory Write) 패킷을 메모리측 처리기(20)에 전송하는 단계; 메모리측 처리기(20)가 메모리 쓰기 확인 응답(Memory Write Acknowledgement) 패킷을 프로세서측 처리기(10)에 전송하는 단계; 메모리측 처리기(20)가 메모리(22)에 대해 메모리 쓰기 트랜잭션을 수행하는 단계; 및 메모리측 처리기(20)의 수신 버퍼 상태를 업데이트하기 위한 흐름 제어 업데이트(Flow Control Update) 패킷을 프로세서측 처리기(10)에 전송하는 단계를 포함할 수 있다. 여기에서 메모리 쓰기 패킷은 헤더와 데이터(페이로드)를 포함할 수 있다.
유의할 점은, 메모리측 처리기(20)가 메모리(22)에 대해 메모리 쓰기 트랜잭션을 수행하는 단계는, 메모리측 처리기(20)가 메모리 쓰기 확인 응답 패킷을 프로세서측 처리기(10)에 전송하는 단계와 메모리측 처리기(20)의 수신 버퍼 상태를 업데이트하기 위한 흐름 제어 업데이트 패킷을 프로세서측 처리기(10)에 전송하는 단계 사이에 수행된다는 것을 의미하는 것이 아니며, 그 수행 순서는 특정 순서로 제한되지 않고 구체적인 구현 목적 또는 방식에 따라 달라질 수 있다.
메모리측 처리기(20)가 메모리(22)에 대해 메모리 쓰기 트랜잭션을 수행하는 단계는, 수신한 메모리 쓰기 패킷에서 지정한 어드레스와 바이트 활성화 정보를 추출하여 이를 메모리 인터페이스 형태로 메모리 컨트롤러에 전달하고, 이와 함께 메모리 쓰기 페이로드 패킷을 메모리 컨트롤러에 전달하는 것을 포함할 수 있다. 그리고 메모리 컨트롤러는 메모리 쓰기와 관련된 신호를 생성하여 메모리(22)에 액세스함으로써 데이터 쓰기를 수행할 수 있다.
한편, 메모리 트랜잭션 페이즈(S25)는, 프로세서측 처리기(10)가 메모리 읽기(Memory Read) 패킷을 메모리측 처리기(20)에 전송하는 단계; 메모리측 처리기(20)가 메모리 읽기 확인 응답(Memory Read Acknowledgement) 패킷을 프로세서측 처리기(10)에 전송하는 단계; 메모리측 처리기(20)의 수신 버퍼 상태를 업데이트하기 위한 흐름 제어 업데이트 패킷을 프로세서측 처리기(10)에 전송하는 단계; 메모리측 처리기(20)가 메모리 읽기 응답(Memory Read Response) 패킷을 프로세서측 처리기(10)에 전송하는 단계; 및 프로세서측 처리기(10)의 수신 버퍼 상태를 업데이트하기 위한 흐름 제어 업데이트 패킷을 메모리측 처리기(20)에 전송하는 단계를 포함할 수 있다. 여기에서 메모리 읽기 패킷은 헤더만을 포함할 수 있다.
메모리측 처리기(20)는 수신한 메모리 읽기 패킷에서 지정한 어드레스와 바이트 활성화 정보를 추출하여 이를 메모리 인터페이스 형태로 메모리 컨트롤러에 전달하고, 메모리 컨트롤러는 메모리 읽기와 관련된 신호를 생성하여 메모리(22)에 액세스함으로써 데이터 읽기를 수행할 수 있다. 읽은 데이터는 다시 메모리 읽기 응답 패킷으로 변환되어 프로세서측 처리기(10)에 전송되고, 프로세서측 처리기(10)는 이에 대한 응답으로 확인 응답 패킷을 생성하여 메모리측 처리기(20)에 전송할 수 있다.
한편, 본 발명의 일부 실시 예에서, 메모리 액세스를 위한 직렬 통신 방법은 메모리 트랜잭션 오류를 처리하기 위한 방법을 더 포함할 수 있다.
구체적으로, 송신측에서는 자신이 송신한 패킷의 복사본을 가지고 있다가, 수신측으로부터 긍정적 확인 응답(Acknowledged) 패킷을 수신하면, 긍정적 확인 응답(Acknowledged) 패킷에 지정된 시퀀스까지의 저장된 복사본을 버리게 되며, 부정적 확인 응답(Not Acknowledged) 패킷을 수신하게 되면, 부정적 확인 응답(Not Acknowledged) 패킷에서 수신된 시퀀스 넘버부터, 가장 최근에 송신한 패킷까지 재전송을 수행할 수 있다. 물론, 재전송은 부정적 확인 응답(Nak)을 수신하였을 때 뿐만 아니라 일정 시간 동안 긍정적 확인 응답(Ack)이나 부정적 확인 응답(Nak)을 수신하지 않은 경우에도 수행될 수 있다. 따라서, 정상적으로 패킷을 수신하였지만 긍정적 확인 응답(Ack)이나 부정적 확인 응답(Nak)을 전송하는 과정에서의 오류일 수도 있으므로, 수신측에서는 재전송된 패킷을 수신하였을 때 이미 수신한 패킷의 시퀀스 넘버를 가지고 있는 패킷이라면 이 패킷에 대해서는 오류로 인식하지 않고 이를 조용히 버리는 메커니즘을 구비할 수 있다.
한편, 본 발명의 일부 실시 예에서, 메모리 액세스를 위한 직렬 통신 방법은 대역폭을 확장하기 방법을 더 포함할 수 있다.
구체적으로, 전송 채널은 한 개의 레인만으로 구성될 수도 있고 이 때 대역폭은 각 레인의 비트 폭 x 동작 주파수로 계산될 수 있다. 이와 다르게 본 발명의 일부 실시 예에서는 전송 채널이 멀티 레인으로 구성될 수도 있다.
대역폭을 증가시키기 위해 동일한 처리기를 정수배로 증가시킬 수 있다. 단 메모리 쓰기 패킷을 생성하는 경우에 헤더는 한 개의 레인에서만 생성하면 되며, 나머지 레인에서는 데이터로 구성된 패킷만을 생성하면 된다. 타 통신 체계의 경우에는 데이터를 레인에 스프레딩하는 방식을 취하고 있기 때문에 레인별로 데이터의 도달 시간이 다를 경우 데이터를 조합하는 데 있어서 문제가 발생하므로 레인간 스큐를 조정하여야 하나, 본 발명의 통신체계에서는 데이터의 비트 필드별로 레인을 달리한다. 예를 들어, 두 개의 레인을 이용하는 경우 첫 번째 레인에서는 프로세서측 버스폭의 1/2의 데이터를 담당하고 두 번째 레인에서는 나머지 1/2의 데이터를 담당한다. 이에 따라, 데이터가 서로 다른 시간에 도착하더라도 내부에 버퍼를 두어서 버퍼에 데이터 컴포넌트의 모든 부분이 도착하였는지 여부를 검사하여 모든 부분이 도착하였을 때에만 메모리 버스로의 액세스를 할 수 있게 함으로써 레인간의 스큐에 대해 신경 쓰지 않고 데이터를 처리할 수 있다.
확장된 레인은 데이터만 다루기 때문에 확장된 레인에서 다루는 패킷의 형태는 메모리 읽기 응답 패킷의 형태와 동일한 형태를 가질 수 있다. 본 발명의 통신체계에서 각 레인별로 데이터 무결성을 취급할 수 있도록 하여 데이터 무결성 패킷은 각 레인마다 생성/소모되고, 또한 재전송 버퍼도 레인마다 가지고 있게 된다. 하지만, 흐름 제어 패킷의 경우는 레인이 확장되더라도 한 개의 데이터로 취급하여야 하므로 한 개의 레인에서만 생성하고, 또한 수신한 버퍼 정보를 모든 레인에서 이용할 수 있도록 할 수 있다.
이하에서는 도 4 내지 도 14를 참조하여, 본 발명의 일 실시 예에 따른 메모리 액세스를 위한 직렬 통신 시스템에서 사용되는 패킷에 대해 설명하도록 한다.
도 4 내지 도 14는 본 발명의 일 실시 예에 따른 메모리 액세스를 위한 직렬 통신 시스템에서 사용되는 패킷의 예시적인 구현 예들을 나타낸 도면들이다.
도 4를 참조하면, 채널 설정 페이즈(S21)에 사용되는 트레이닝 시퀀스(Training Sequence) 패킷 및 트레이닝 시퀀스 확인 응답(Training Sequence Acknowledgement) 패킷은, 예를 들어 16 비트로 구성될 수 있으며, 1 비트로 구성된 채널 설정 패킷임을 식별하기 위한 필드(Ch), 1 비트로 구성된 트레이닝 시퀀스 패킷임을 식별하기 위한 필드(Ts), 1 비트로 구성된 트레이닝 시퀀스 확인 응답인지 여부를 식별하기 위한 필드(Ack), 3 비트로 구성된 예약 필드(Reserved), 6 비트로 구성된 전송 채널 번호 필드(Channel Number) 및 4 비트로 구성된 전송 레인 번호 필드(Lane Number)를 포함할 수 있다.
또한, 전송 채널 번호 필드(Channel Number)의 값이 1인 경우는 전송 채널 번호가 지정되지 않았음을 나타낼 수 있고, 전송 레인 번호 필드(Lane Number)의 값이 1인 경우는 전송 레인 번호가 지정되지 않았음을 나타낼 수 있다. 따라서 전송 채널은 32 개까지 지정이 가능하고 전송 레인은 8 개까지 지정이 가능할 수 있다.
한편, 메모리 트랜잭션 페이즈(S25)에 사용되는 메모리 쓰기 패킷 및 메모리 읽기 패킷은 프리픽스(Prefix), 헤더, 데이터, CRC 컴포넌트를 포함할 수 있다.
도 5를 참조하면, 프리픽스는, 예를 들어 16 비트로 구성될 수 있으며, 8 비트로 구성된 트랜잭션 속성 필드(Transaction Attribute) 및 8 비트로 구성된 시퀀스 번호 필드(Sequence Number)를 포함할 수 있다.
트랜잭션 속성 필드는 트랜잭션의 취급 방법을 지정하기 위한 필드로 향후 통신 체계를 확장하기 위해 사용될 수 있으며, 사용되지 않는 경우에는 예약 필드로 지정해 둘 수 있다.
시퀀스 번호 필드는 트랜잭션에 고유한 번호를 부여한 것으로, 트랜잭션의 전송 시에 오류가 발생하거나, 트랜잭션이 유실되는 경우, 부여된 번호를 기준으로 수신측에서 트랜잭션의 전송 오류 또는 유실을 알릴 수 있으며, 이에 따라 송신측에서도 트랜잭션을 재생성할 수 있다.
도 6을 참조하면, 헤더는, 예를 들어 192 비트로 구성될 수 있으며, 1 비트로 구성된, 메모리 트랜잭션이 메모리 쓰기인지 메모리 읽기인지 여부를 식별하는 필드(W), 7 비트로 구성된 데이터의 길이 필드(Data Length), 56 비트로 구성된 주소 필드(Address), 64 바이트로 구성된 첫번째 데이터의 바이트 인에이블 필드(First Data's Byte Enable) 및 64 바이트로 구성된 마지막 데이터의 바이트 인에이블 필드(Last Data's Byte Enable) 등을 포함할 수 있다.
여기서 메모리 쓰기인 경우 필드(W)의 값은 1로 설정될 수 있고, 데이터의 길이 필드(Data Length)는 7 비트이므로 0 내지 127까지의 길이 인코딩이 가능하지만, 64 개의 128 비트 데이터 읽기를 수행하도록 하여, 1 내지 128까지의 인코딩을 사용하고, 129 이상의 인코딩은 사용하지 않을 수 있다. 또한 제로 길이(zero length)의 읽기도 가능한 통신 체계로 설계하여, 예를 들어 플러시(flush) 동작 등에 응용하도록 할 수 있다.
바이트 인에이블 필드(First Data's Byte Enable, Last Data's Byte Enable)에는 64 비트 씩 할당하며, 한 개의 레인에서는 128 비트로 16 바이트에 대한 바이트 인에이블이 필요하지만, 본 발명의 통신 체계에서는 4 개까지 레인을 확장할 수 있는 구조를 고려하고 있으므로, 이에 따라 바이트 인에이블 필드(First Data's Byte Enable, Last Data's Byte Enable)도 4 개 채널 확장까지 고려하여 64 바이트까지 지정할 수 있도록 하였다. 레인의 개수가 4 개를 초과하는 경우에는, 추가적인 바이트 인에이블 필드가 필요할 수도 있으며, 이에 따라 헤더의 길이가 더 증가할 수도 있다.
도 7을 참조하면, 데이터는 예를 들어 128 비트의 단위로 구현될 수 있으며, 128 비트 단위의 데이터 패킷이 64개까지 추가(append)될 수 있다. 이어서 도 8을 참조하면 CRC 컴포넌트는 예를 들어 32 비트로 구성될 수 있다.
도 9를 참조하면, 메모리 쓰기 패킷은, 16 비트의 프리픽스 컴포넌트, 128 비트의 헤더 컴포넌트, 128 비트 단위로 이어진 하나 이상의 데이터 컴포넌트 및 32 비트의 CRC 컴포넌트를 포함할 수 있다. 여기서 CRC 컴포넌트는 프리픽스 컴포넌트, 헤더 컴포넌트 및 데이터 컴포넌트에 대해 비트 연산을 수행하여 생성된 CRC 값을 포함할 수 있다.
도 10을 참조하면, 메모리 읽기 패킷은, 16 비트의 프리픽스 컴포넌트, 128 비트의 헤더 컴포넌트 및 32 비트의 CRC 컴포넌트를 포함할 수 있다. 여기서 CRC 컴포넌트는 프리픽스 컴포넌트 및 헤더 컴포넌트에 대해 비트 연산을 수행하여 생성된 CRC 값을 포함할 수 있다.
도 11을 참조하면, 메모리 읽기 응답 패킷은, 16 비트의 프리픽스 컴포넌트, 128 비트 단위로 이어진 하나 이상의 데이터 컴포넌트 및 32 비트의 CRC 컴포넌트를 포함할 수 있다. 여기서 CRC 컴포넌트는 프리픽스 컴포넌트 및 데이터 컴포넌트에 대해 비트 연산을 수행하여 생성된 CRC 값을 포함할 수 있다.
도 12를 참조하면, 흐름 제어 초기화 패킷은, 예를 들어 48 비트로 구성될 수 있으며, 32 비트의 패킷 코어와 16 비트의 CRC를 포함할 수 있다.
패킷 코어의 첫 번째 바이트는 트랜잭션 제어 패킷임을 식별하는 필드(TC), 트랜잭션 제어 패킷의 클래스를 나타내는 필드(Class), 트랜잭션 제어 패킷의 서브 클래스를 나타내는 필드(SubClass) 및 예약 필드(Rsv)를 포함할 수 있다. 패킷 코어의 두 번째 내지 네 번째 바이트는 필드(Class) 및 필드(SubClass)의 내용에 따라 의미하는 내용이 달라질 수 있다.
도 13을 참조하면, 흐름 제어 패킷은, 32 비트의 패킷 코어와 추가적인 CRC를 포함할 수 있다.
패킷 코어에서 최하위 바이트에는 흐름 제어임을 나타내는 필드(FC)와 흐름 제어 패킷 중에서 초기화인지 초기화 Ack인지 Update인지를 식별하는 필드(Init/Ack/U)를 가지고 있다. 두 번째 바이트는 버퍼 중 데이터 크레딧(Data Credit)을 나타내며, 크레딧의 단위는 128비트 버퍼 단위이다. 세 번째 바이트는 헤더 크레딧(Header Credit)으로 이 크레딧의 단위 또한 128비트 버퍼 단위이다. 마지막 네 번째 바이트는 예약 필드(Reserved)로 남겨두어도 되나 향후 흐름 제어 패킷과 데이터 인테그리티 패킷의 통합을 고려하기 위해 수신한 시퀀스 넘버를 표시하는 필드를 전송하도록 할 수도 있다.
흐름 제어 패킷 중 초기화와 Ack 패킷은 흐름 제어 초기화 페이즈(S21)에서 사용되며, Update 패킷은 메모리 트랜잭션 페이즈(S25)에서 사용되며, 역할은 수신 버퍼의 상태를 나타내는 것이다. 프로세서측 처리기(10)는 메모리 요청 트랜잭션을 발생시키며 메모리 요청 트랜잭션은 헤더와 데이터가 결합되어 있거나(메모리 쓰기의 경우) 헤더만으로(메모리 읽기의 경우) 구성되므로 메모리측 처리기(20)에서는 이를 수신할 버퍼를 가지고 있어야 한다. 따라서 메모리측 처리기(20)에서는 관련되는 버퍼에 관해 헤더 크레딧과 데이터 크레딧을 송신하게 된다. 반대로 메모리측 처리기(20)는 메모리 읽기 응답을 생성하며, 메모리 읽기 응답은 프로세서측 처리기(10)에 전달되므로 프로세서측 처리기(10)는 데이터 버퍼만을 가지고 있으면 된다. 따라서, 이에 관련하여 프로세서측 처리기(10)와 메모리측 처리기(20)는 자신의 버퍼 크기를 송신하며, 메모리측 처리기(20)는 헤더 크레딧과 데이터 크레딧을 모두 전송하지만, 프로세서측 처리기(10)에는 헤더 버퍼가 없으므로, 헤더 크레딧의 내용 필드는 사용하지 않는다.
수신측에서 패킷을 정상적으로 수신한 경우에는 현재까지 정상적으로 수신된 시퀀스 넘버를 가지고 있는 긍정적 확인 응답(Acknowledgement) 패킷이 송신되며, 패킷을 정상적으로 수신하지 못한 경우에는 현재까지 정상적으로 수신된 시퀀스 넘버를 가지고 있는 부정적 확인 응답(Not Acknowledged) 패킷이 송신되며, 패킷의 코어 구조는 도 14와 같이 구현될 수 있다.
물론, 도 4 내지 도 14에 도시된 패킷들의 형태는 오로지 예시적인 것에 불과하며, 구현 목적에 따라 패킷들의 구조 및 각 필드의 크기 등 그 구체적인 사항들은 얼마든지 변경될 수 있다.
도 15는 본 발명의 실시 예들에 따른 메모리 액세스를 위한 직렬 통신 방법 및 시스템을 구현하기 위한 컴퓨팅 장치를 설명하기 위한 블록도이다.
도 15를 참조하면, 본 발명의 실시 예들에 따른 메모리 액세스를 위한 직렬 통신 방법 및 시스템은 컴퓨팅 장치(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 내지 도 14에서 설명한 기능 및 방법들을 구현하도록 구성될 수 있다.
메모리(530) 및 저장 장치(560)는 다양한 형태의 휘발성 또는 비 휘발성 저장 매체를 포함할 수 있다. 예를 들어, 메모리는 ROM(read-only memory)(531) 및 RAM(random access memory)(532)를 포함할 수 있다. 본 발명의 일 실시 예에서 메모리(530)는 프로세서(510)의 내부 또는 외부에 위치할 수 있고, 메모리(530)는 이미 알려진 다양한 수단을 통해 프로세서(510)와 연결될 수 있다.
또한, 본 발명의 실시 예들에 따른 메모리 액세스를 위한 직렬 통신 방법 및 시스템은 컴퓨팅 장치(50)에서 실행되는 프로그램 또는 소프트웨어로 구현될 수 있고, 프로그램 또는 소프트웨어는 컴퓨터로 판독 가능한 매체에 저장될 수 있다.
또한, 본 발명의 실시 예들에 따른 메모리 액세스를 위한 직렬 통신 방법 및 시스템은 컴퓨팅 장치(50)와 전기적으로 접속될 수 있는 하드웨어로 구현될 수도 있다.
이제까지 설명한 본 발명의 실시 예들에 따르면, 프로세서와 메모리 사이에 직렬 통신을 제공함에 따라, 프로세서와 메모리 간의 라우팅이 유연하고 성능 향상을 위한 대역폭 확장이 용이하며, 프로세서와 메모리 사이의 직렬 패킷 통신에 최적화된 헤더 구조를 채택함에 따라 불필요한 오버헤드를 줄여 전체적인 대역폭 성능을 높일 수 있다. 또한, 복수의 프로세서가 하나의 메모리를 공유하는 아키텍처의 구현 가능성 및 용이성을 높이고, 복수의 프로세서 간 데이터 교환과 같은 응용도 가능하다.
이상에서 본 발명의 실시 예에 대하여 상세하게 설명하였지만 본 발명의 권리 범위는 이에 한정되는 것은 아니고, 다음의 청구범위에서 정의하고 있는 본 발명의 기본 개념을 이용한, 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자의 여러 변형 및 개량 형태 또한 본 발명의 권리 범위에 속한다.
Claims (20)
- 프로세서로부터 메모리 트랜잭션을 수신하고, 미리 정해진 페이즈(phase)에 따라 상기 메모리 트랜잭션을 패킷으로 변환하여 직렬 전송하는 프로세서측 처리기; 및
상기 미리 정해진 페이즈에 따라 상기 직렬 전송된 상기 패킷을 수신하고, 상기 패킷을 상기 메모리 트랜잭션으로 변환하여 메모리를 액세스하는 메모리측 처리기를 포함하고,
상기 미리 정해진 페이즈는, 채널 설정 페이즈(channel establishment phase), 흐름 제어 초기화 페이즈(flow control initialization phase) 및 메모리 트랜잭션 페이즈(memory transaction phase)를 포함하는,
메모리 액세스를 위한 직렬 통신 시스템. - 제1항에 있어서,
상기 채널 설정 페이즈는,
상기 프로세서측 처리기와 상기 메모리측 처리기가 트레이닝 시퀀스(Training Sequence) 패킷 및 트레이닝 시퀀스 확인 응답(Training Sequence Acknowledgement) 패킷을 서로 송수신하여 전송 채널의 생존여부(aliveness)를 확인하는 단계를 포함하는, 메모리 액세스를 위한 직렬 통신 시스템. - 제1항에 있어서,
상기 채널 설정 페이즈는,
상기 메모리측 처리기가 전송 채널 번호를 지정한 트레이닝 시퀀스 패킷을 상기 프로세서측 처리기에 전송하는 단계;
상기 프로세서측 처리기가 상기 전송 채널 번호를 저장하는 단계; 및
상기 프로세서측 처리기가 트레이닝 시퀀스 확인 응답 패킷을 상기 메모리측 처리기에 전송하는 단계를 포함하는, 메모리 액세스를 위한 직렬 통신 시스템. - 제1항에 있어서,
상기 채널 설정 페이즈는,
상기 메모리측 처리기가 전송 레인 번호를 지정한 트레이닝 시퀀스 패킷을 상기 프로세서측 처리기에 전송하는 단계;
상기 프로세서측 처리기가 상기 전송 레인 번호를 저장하는 단계; 및
상기 프로세서측 처리기가 트레이닝 시퀀스 확인 응답 패킷을 상기 메모리측 처리기에 전송하는 단계를 포함하는, 메모리 액세스를 위한 직렬 통신 시스템. - 제1항에 있어서,
상기 채널 설정 페이즈는,
전송 채널 번호 및 전송 레인 번호에 대한 설정이 완료된 후, 상기 프로세서측 처리기와 상기 메모리측 처리기가 트레이닝 시퀀스 확인 응답 패킷을 서로 송수신하여 상기 전송 채널 및 상기 전송 레인의 설정을 완료하는 단계를 포함하는, 메모리 액세스를 위한 직렬 통신 시스템. - 제1항에 있어서,
상기 흐름 제어 초기화 페이즈는,
상기 프로세서측 처리기와 상기 메모리측 처리기가 흐름 제어 초기화(Flow Control Initialize) 패킷 및 흐름 제어 초기화 확인 응답(Flow Control Initialize Acknowledgement) 패킷을 서로 송수신하여 흐름 제어 초기화를 수행하는 단계를 포함하는, 메모리 액세스를 위한 직렬 통신 시스템. - 제6항에 있어서,
상기 흐름 제어 초기화를 수행하는 단계는,
상기 프로세서측 처리기가 페이로드 수신 버퍼의 상태를 나타내는 흐름 제어 초기화 패킷을 상기 메모리측 처리기에 전송하는 단계;
상기 메모리측 처리기가 상기 페이로드 수신 버퍼의 상태를 기록하는 단계; 및
상기 메모리측 처리기가 흐름 제어 초기화 확인 응답을 상기 프로세서측 처리기에 전송하는 단계를 포함하는, 메모리 액세스를 위한 직렬 통신 시스템. - 제6항에 있어서,
상기 흐름 제어 초기화를 수행하는 단계는,
상기 메모리측 처리기가 헤더 및 페이로드 수신 버퍼의 상태를 나타내는 흐름 제어 초기화 패킷을 상기 프로세서측 처리기에 전송하는 단계;
상기 프로세서측 처리기가 상기 헤더 및 페이로드 수신 버퍼의 상태를 기록하는 단계; 및
상기 프로세서측 처리기가 흐름 제어 초기화 확인 응답을 상기 메모리측 처리기에 전송하는 단계를 포함하는, 메모리 액세스를 위한 직렬 통신 시스템. - 제1항에 있어서,
상기 메모리 트랜잭션 페이즈는,
상기 프로세서측 처리기가 메모리 쓰기(Memory Write) 패킷을 상기 메모리측 처리기에 전송하는 단계;
상기 메모리측 처리기가 메모리 쓰기 확인 응답(Memory Write Acknowledgement) 패킷을 상기 프로세서측 처리기에 전송하는 단계;
상기 메모리측 처리기가 상기 메모리에 대해 메모리 쓰기 트랜잭션을 수행하는 단계; 및
상기 메모리측 처리기의 수신 버퍼 상태를 업데이트하기 위한 흐름 제어 업데이트(Flow Control Update) 패킷을 상기 프로세서측 처리기에 전송하는 단계를 포함하는, 메모리 액세스를 위한 직렬 통신 시스템. - 제1항에 있어서,
상기 메모리 트랜잭션 페이즈는,
상기 프로세서측 처리기가 메모리 읽기(Memory Read) 패킷을 상기 메모리측 처리기에 전송하는 단계;
상기 메모리측 처리기가 메모리 읽기 확인 응답(Memory Read Acknowledgement) 패킷을 상기 프로세서측 처리기에 전송하는 단계;
상기 메모리측 처리기의 수신 버퍼 상태를 업데이트하기 위한 흐름 제어 업데이트 패킷을 상기 프로세서측 처리기에 전송하는 단계;
상기 메모리측 처리기가 메모리 읽기 응답(Memory Read Response) 패킷을 상기 프로세서측 처리기에 전송하는 단계; 및
상기 프로세서측 처리기의 수신 버퍼 상태를 업데이트하기 위한 흐름 제어 업데이트 패킷을 상기 메모리측 처리기에 전송하는 단계를 포함하는, 메모리 액세스를 위한 직렬 통신 시스템. - 프로세서로부터 메모리 트랜잭션을 수신하는 단계;
미리 정해진 페이즈에 따라 상기 메모리 트랜잭션을 패킷으로 변환하는 단계; 및
상기 패킷을 직렬 패킷 신호선을 통해 직렬 전송하는 단계를 포함하고,
상기 미리 정해진 페이즈는, 채널 설정 페이즈, 흐름 제어 초기화 페이즈 및 메모리 트랜잭션 페이즈를 포함하는,
메모리 액세스를 위한 직렬 통신 방법. - 제11항에 있어서,
상기 채널 설정 페이즈는,
상기 직렬 패킷 신호선을 통해 전송 채널 번호 및 전송 레인 번호 중 적어도 하나를 지정한 트레이닝 시퀀스 패킷을 수신하는 단계;
상기 전송 채널 번호 및 전송 레인 번호 중 적어도 하나를 저장하는 단계; 및
상기 직렬 패킷 신호선을 통해 트레이닝 시퀀스 확인 응답 패킷을 전송하는 단계를 포함하는, 메모리 액세스를 위한 직렬 통신 방법. - 제11항에 있어서,
상기 흐름 제어 초기화 페이즈는,
상기 직렬 패킷 신호선을 통해 헤더 및 페이로드 수신 버퍼의 상태를 나타내는 흐름 제어 초기화 패킷을 수신하는 단계;
상기 헤더 및 페이로드 수신 버퍼의 상태를 기록하는 단계; 및
상기 직렬 패킷 신호선을 통해 흐름 제어 초기화 확인 응답을 전송하는 단계를 포함하는, 메모리 액세스를 위한 직렬 통신 방법. - 제11항에 있어서,
상기 메모리 트랜잭션 페이즈는,
상기 직렬 패킷 신호선을 통해 메모리 쓰기 패킷을 전송하는 단계;
상기 직렬 패킷 신호선을 통해 메모리 쓰기 확인 응답 패킷을 수신하는 단계; 및
상기 직렬 패킷 신호선을 통해 흐름 제어 업데이트 패킷을 수신하는 단계를 포함하는, 메모리 액세스를 위한 직렬 통신 방법. - 제11항에 있어서,
상기 메모리 트랜잭션 페이즈는,
상기 직렬 패킷 신호선을 통해 메모리 읽기 패킷을 전송하는 단계;
상기 직렬 패킷 신호선을 통해 메모리 읽기 확인 응답 패킷을 수신하는 단계;
상기 직렬 패킷 신호선을 통해 제1 흐름 제어 업데이트 패킷을 수신하는 단계;
상기 직렬 패킷 신호선을 통해 메모리 읽기 응답 패킷을 수신하는 단계; 및
상기 직렬 패킷 신호선을 통해 제2 흐름 제어 업데이트 패킷을 전송하는 단계를 포함하는, 메모리 액세스를 위한 직렬 통신 방법. - 미리 정해진 페이즈에 따라 직렬 패킷 신호선을 통해 직렬 전송되는 패킷을 수신하는 단계;
상기 패킷을 메모리 트랜잭션으로 변환하는 단계; 및
상기 메모리 트랜잭션에 따라 메모리를 액세스하는 단계를 포함하고,
상기 미리 정해진 페이즈는, 채널 설정 페이즈, 흐름 제어 초기화 페이즈 및 메모리 트랜잭션 페이즈를 포함하는,
메모리 액세스를 위한 직렬 통신 방법. - 제16항에 있어서,
상기 채널 설정 페이즈는,
상기 직렬 패킷 신호선을 통해 전송 채널 번호 및 전송 레인 번호 중 적어도 하나를 지정한 트레이닝 시퀀스 패킷을 전송하는 단계; 및
직렬 패킷 신호선을 통해 트레이닝 시퀀스 확인 응답 패킷을 수신하는 단계를 포함하는, 메모리 액세스를 위한 직렬 통신 방법. - 제16항에 있어서,
상기 흐름 제어 초기화 페이즈는,
상기 직렬 패킷 신호선을 통해 페이로드 수신 버퍼의 상태를 나타내는 흐름 제어 초기화 패킷을 수신하는 단계;
상기 페이로드 수신 버퍼의 상태를 기록하는 단계; 및
상기 직렬 패킷 신호선을 통해 흐름 제어 초기화 확인 응답을 전송하는 단계를 포함하는, 메모리 액세스를 위한 직렬 통신 방법. - 제16항에 있어서,
상기 메모리 트랜잭션 페이즈는,
상기 직렬 패킷 신호선을 통해 메모리 쓰기 패킷을 수신하는 단계;
상기 직렬 패킷 신호선을 통해 메모리 쓰기 확인 응답 패킷을 전송하는 단계;
상기 메모리에 대해 메모리 쓰기 트랜잭션을 수행하는 단계; 및
상기 직렬 패킷 신호선을 통해 흐름 제어 업데이트 패킷을 전송하는 단계를 포함하는, 메모리 액세스를 위한 직렬 통신 방법. - 제16항에 있어서,
상기 메모리 트랜잭션 페이즈는,
상기 직렬 패킷 신호선을 통해 메모리 읽기 패킷을 수신하는 단계;
상기 직렬 패킷 신호선을 통해 메모리 읽기 확인 응답 패킷을 전송하는 단계;
상기 직렬 패킷 신호선을 통해 제1 흐름 제어 업데이트 패킷을 전송하는 단계;
상기 직렬 패킷 신호선을 통해 메모리 읽기 응답 패킷을 전송하는 단계; 및
상기 직렬 패킷 신호선을 통해 제2 흐름 제어 업데이트 패킷을 수신하는 단계를 포함하는, 메모리 액세스를 위한 직렬 통신 방법.
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020210041403A KR20220135562A (ko) | 2021-03-30 | 2021-03-30 | 메모리 액세스를 위한 직렬 통신 방법 및 시스템 |
US17/518,823 US12019568B2 (en) | 2021-03-30 | 2021-11-04 | Serial communication method and system for memory access |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020210041403A KR20220135562A (ko) | 2021-03-30 | 2021-03-30 | 메모리 액세스를 위한 직렬 통신 방법 및 시스템 |
Publications (1)
Publication Number | Publication Date |
---|---|
KR20220135562A true KR20220135562A (ko) | 2022-10-07 |
Family
ID=83450310
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020210041403A KR20220135562A (ko) | 2021-03-30 | 2021-03-30 | 메모리 액세스를 위한 직렬 통신 방법 및 시스템 |
Country Status (2)
Country | Link |
---|---|
US (1) | US12019568B2 (ko) |
KR (1) | KR20220135562A (ko) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20240143434A1 (en) * | 2022-10-28 | 2024-05-02 | Qualcomm Incorporated | Flow control between peripheral component interconnect express devices |
Family Cites Families (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6188699B1 (en) * | 1997-12-11 | 2001-02-13 | Pmc-Sierra Ltd. | Multi-channel encoder/decoder |
US20050262184A1 (en) * | 2004-05-21 | 2005-11-24 | Naveen Cherukuri | Method and apparatus for interactively training links in a lockstep fashion |
US8073040B1 (en) * | 2004-08-20 | 2011-12-06 | Altera Corporation | Serial communications control plane with optional features |
US7385925B2 (en) * | 2004-11-04 | 2008-06-10 | International Business Machines Corporation | Data flow control method for simultaneous packet reception |
KR100818298B1 (ko) | 2005-12-08 | 2008-03-31 | 한국전자통신연구원 | 가변 시리얼 정합 방식의 메모리 시스템 및 그 메모리액세스 방법 |
BRPI0709871B1 (pt) | 2006-04-12 | 2019-10-15 | Tq Delta, Llc. | Retransmissão de pacote e compartilhamento de memória |
US8578222B2 (en) * | 2011-02-17 | 2013-11-05 | Qualcomm Incorporated | SerDes power throttling as a function of detected error rate |
JP5786492B2 (ja) * | 2011-06-29 | 2015-09-30 | 富士通株式会社 | 通信装置、通信回路および通信方法 |
KR102052866B1 (ko) | 2014-08-26 | 2019-12-09 | 한국전자통신연구원 | 패킷 송수신 시스템, 장치 및 방법 |
KR102457820B1 (ko) | 2016-03-02 | 2022-10-24 | 한국전자통신연구원 | 메모리 인터페이스 장치 |
KR20180023543A (ko) | 2016-08-26 | 2018-03-07 | 삼성전자주식회사 | 시리얼 통신으로 메모리를 제공하기 위한 장치 및 방법 |
-
2021
- 2021-03-30 KR KR1020210041403A patent/KR20220135562A/ko not_active Application Discontinuation
- 2021-11-04 US US17/518,823 patent/US12019568B2/en active Active
Also Published As
Publication number | Publication date |
---|---|
US20220318166A1 (en) | 2022-10-06 |
US12019568B2 (en) | 2024-06-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10802995B2 (en) | Unified address space for multiple hardware accelerators using dedicated low latency links | |
JP4477613B2 (ja) | AXIプロトコルを適用したNoCシステム | |
KR100555394B1 (ko) | Ngio/infiniband 어플리케이션용 리모트 키검증을 위한 방법 및 메커니즘 | |
US6882656B2 (en) | Speculative transmit for system area network latency reduction | |
US7299266B2 (en) | Memory management offload for RDMA enabled network adapters | |
US8812795B2 (en) | Shared memory architecture | |
US8023520B2 (en) | Signaling packet | |
US7916632B1 (en) | Systems and methods for handling packet fragmentation | |
US9411775B2 (en) | iWARP send with immediate data operations | |
US7936758B2 (en) | Logical separation and accessing of descriptor memories | |
US6615282B1 (en) | Adaptive messaging | |
US11777864B2 (en) | Transparent packet splitting and recombining | |
EP1124362A2 (en) | Apparatus for processing TCP/IP by hardware, and operating method therefor | |
US20240232111A1 (en) | Network credit return mechanisms | |
US20050089033A1 (en) | Method, system, and program for constructing a packet | |
US10489322B2 (en) | Apparatus and method to improve performance in DMA transfer of data | |
US10255226B2 (en) | Format agnostic data transfer method | |
KR20220135562A (ko) | 메모리 액세스를 위한 직렬 통신 방법 및 시스템 | |
US5948079A (en) | System for non-sequential transfer of data packet portions with respective portion descriptions from a computer network peripheral device to host memory | |
JPH10228445A (ja) | リングバス入出力制御装置 | |
Parkes et al. | Space wire remote memory access protocol | |
US20060088046A1 (en) | Queue resource sharing for an input/output controller | |
US20060222004A1 (en) | Methods and apparatus for transferring data | |
JPH1117710A (ja) | シリアルインタフェース回路 | |
RU2703231C1 (ru) | Пакетная сеть для мультипроцессорных систем и способ коммутации с использованием такой сети |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
E902 | Notification of reason for refusal |