KR20110090972A - 고속 직렬 링크를 이용하는 메모리 시스템의 코딩 시스템 - Google Patents

고속 직렬 링크를 이용하는 메모리 시스템의 코딩 시스템 Download PDF

Info

Publication number
KR20110090972A
KR20110090972A KR1020117012213A KR20117012213A KR20110090972A KR 20110090972 A KR20110090972 A KR 20110090972A KR 1020117012213 A KR1020117012213 A KR 1020117012213A KR 20117012213 A KR20117012213 A KR 20117012213A KR 20110090972 A KR20110090972 A KR 20110090972A
Authority
KR
South Korea
Prior art keywords
coding
code
run length
block
blocks
Prior art date
Application number
KR1020117012213A
Other languages
English (en)
Other versions
KR101483535B1 (ko
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 실리콘 이미지, 인크.
Publication of KR20110090972A publication Critical patent/KR20110090972A/ko
Application granted granted Critical
Publication of KR101483535B1 publication Critical patent/KR101483535B1/ko

Links

Images

Classifications

    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M5/00Conversion of the form of the representation of individual digits
    • H03M5/02Conversion to or from representation by pulses
    • H03M5/04Conversion to or from representation by pulses the pulses having two levels
    • H03M5/14Code representation, e.g. transition, for a given bit cell depending on the information in one or more adjacent bit cells, e.g. delay modulation code, double density code
    • H03M5/145Conversion to or from block codes or representations thereof
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M5/00Conversion of the form of the representation of individual digits
    • H03M5/02Conversion to or from representation by pulses
    • H03M5/04Conversion to or from representation by pulses the pulses having two levels
    • H03M5/14Code representation, e.g. transition, for a given bit cell depending on the information in one or more adjacent bit cells, e.g. delay modulation code, double density code

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)

Abstract

코더를 이용하는 방법, 장치 및 시스템이 개시되어 있다. 코더는 제1 코드 블록 및 제2 코드 블록을 포함하는 인입하는 스트림을 수신하고, 제1 코드 블록을 제1 소형 코드 블록으로 분할하며, 제2 코드 블록을 제2 소형 코드 블록으로 분할한다. 코더는 또한 통신을 수행하기 위해 하나 이상의 직렬 회선을 사용하는 메모리를 코딩하며, 코딩은 제1 코드 블록의 제1 소형 코드 블록 및 제2 코드 블록의 제2 소형 코드 블록을 코딩하는 것을 포함하고, 제1 및 제2 블록의 코딩은 최대 런 길이가 유지되도록 수행된다.

Description

고속 직렬 링크를 이용하는 메모리 시스템의 코딩 시스템{CODING SYSTEM FOR MEMORY SYSTEMS EMPLOYING HIGH-SPEED SERIAL LINKS}
본 발명의 실시예는 일반적으로 네트워크 및 데이터 전송 분야에 관한 것으로서, 보다 상세하게는, 고속 직렬 링크를 사용하는 메모리 시스템의 코딩 시스템에 관한 것이다.
데이터 통신에서, 데이터 통신 코딩(인코딩/디코딩)이 통상적이다. 예를 들어, PCIe(PC expansion card interface) 및 SATA(serialized hard disk access) 기술은 바이트-지향 DC-균형 런 길이(byte-oriented DC-balanced run length) 8B/10B 코딩을 사용한다(미국 특허 제4,486,739호를 참조하고 또한 16B/20B의 경우 미국 특허 제5,663,724호 및 제6,617,984호를 참조할 것). 이 코딩은 JEDEC(Joint Electron Device Engineering Council) 협회에 의해 표준화되어 있다. 이 종래의 코딩 기법은 2가지 특성을 가지며, 즉 런 길이가 5 이하가 되도록 보장하고 DC-균형 출력을 제공한다.
8B/10B의 제1 특성과 관련하여, 최대 런 길이 특성은 직렬 회선에서의 데이터 변화를 검출하는 데 도움을 주고 비트 오류를 최소화하는 최적의 탐지 위치를 구하려고 시도하는 아날로그 PHY로부터 얻어지는 비트 오류를 최소화하는 데 중요할 수 있다. 그러나, 직렬 데이터가 예상보다 덜 변화된 경우, PHY는 결과에서의 탐지 위치를 결정하기에 부족한 정보를 가질 것이며, 따라서 비트 오류의 확률이 증가된다. 게다가, 최대 허용 거리(maximum allowed distance)가 런 길이 및 반복 심볼의 수 등과 관련하여 정의될 수 있다. 제2 특성과 관련하여, 직렬 링크가 AC-결합으로 구현되는 경우, DC-균형 출력이 중요할 수 있다. 고속 직렬 회선 기술의 대부분은 차동 와이어(differential wire)에 기초하고, 2개의 와이어 간의 차이를 측정함으로써 데이터가 감지된다. 호환성을 향상시키기 위해, DC 성분을 차단하면서 신호 변화만이 목적지로 전달된다. 이 기법을 AC-결합이라고 한다. 이는 구현 측면에서 몇가지 이점이 있지만, 입력 제약조건이 있다: 특정 기간 내에 0의 수 및 1의 수가 균형을 이루고 있어야만 한다. 코드가 이 요구사항을 만족시킬 때, 이를 DC-균형이라고 한다. 8B/10B 코딩은 이러한 양호한 특성을 제공하지만, 레이턴시를 상당히 증가시킨다. 예를 들어, 각각의 바이트가 8B/10B 코드를 사용하여 인코딩될 수 있지만, DC-균형 요구사항을 만족시키기 위해 각각의 코딩이 이전의 결과를 참조해야만 하며, 따라서 계산이 종속적(cascaded)이다. 8B/10B 코딩 기법의 높은 레이턴시로 인해 메모리 성능이 저하되고, 따라서 많은 경우에, 특히 모바일 장치의 경우에 바람직하지 않다. 모바일 장치를 설계할 때, 메모리 성능이 필수적인 인자로 간주된다.
그러나, SPMT(Serial Port Memory Technology)는 메모리 영역에 고속 직렬 링크 기술을 사용한다는 점에서 종래의 메모리 기술과 다르다. SPMT를 사용하여, 레이턴시를 감소시키는 것이 필수적이지만, DC-균형이 필요하지는 않다. 따라서, 어떤 메모리 리소스 문제점도 없이 저레이턴시 코딩(low latency coding)을 제공하는 데이터 통신 코딩 시스템을 가짐으로써 향상된 메모리 성능을 얻는 것이 요망된다.
고속 직렬 링크를 사용하는 메모리 시스템에 대한 코딩 시스템의 일 실시예를 이용하는 방법, 장치 및 시스템이 제공된다. 예를 들어, 17 비트/20 비트(17B/20B) 코딩 시스템이 사용된다. 17B/20B 코딩 시스템은 메모리의 17B/20B 코드를 인코딩/디코딩하는 인코더/디코더로서 동작하는 17 비트/20 비트 코더를 가진다. 간략함 및 명확함을 위해 본 문서 전반에 걸쳐 단지 예로서, 이 17B/20B 코딩 시스템이 사용되고 설명된다. 본 발명의 코딩 시스템 기법의 실시예가 임의의 수의 코딩 시스템과 사용될 수 있고, 예를 들어, 코딩 시스템을 17B/20B보다 크게 확장하는 데 사용될 수 있다는 것이 생각되고 주목된다. 일 실시예에서, 고속 직렬 링크를 사용하는 메모리 시스템에서 코딩 시스템이 이용되고, 이 코딩 시스템은 5와 같은 정의된 수를 초과하지 않는 런 길이를 보장한다. 다시 말하면, 본 문서에서 5 이하의 런 길이가 예로서 사용되고, 임의의 최대 런 길이 수가 결정되거나 사전 결정될 수 있으며, 코딩 시스템의 일 실시예가 그 최대 런 길이 수를 초과하지 않도록 보장하는 데 사용될 수 있다.
일 실시예에서, 장치는 코더(coder)를 포함한다. 코더는 제1 코드 블록 및 제2 코드 블록을 포함하는 인입하는 스트림을 수신하고, 제1 코드 블록을 제1 소형 코드 블록으로 분할하며, 제2 코드 블록을 제2 소형 코드 블록으로 분할하고, 통신을 위해 하나 이상의 직렬 링크를 사용하는 메모리를 코딩하며, 코딩은 제1 코드 블록의 제1 소형 코드 블록 및 제2 코드 블록의 제2 소형 코드 블록을 코딩하는 것을 포함하고, 제1 및 제2 코드 블록의 코딩은 최대 런 길이가 유지되도록 수행된다.
일 실시예에서, 시스템은 코딩 회로를 포함하고, 이 코딩 회로는 제1 코드 블록 및 제2 코드 블록을 포함하는 인입하는 스트림을 수신하고, 제1 코드 블록을 제1 소형 코드 블록으로 분할하며, 제2 코드 블록을 제2 소형 코드 블록으로 분할하고, 통신을 위해 하나 이상의 직렬 링크를 사용하는 메모리를 코딩하며, 코딩은 제1 코드 블록의 제1 소형 코드 블록 및 제2 코드 블록의 제2 소형 코드 블록을 코딩하는 것을 포함하고, 제1 및 제2 코드 블록의 코딩은 최대 런 길이가 유지되도록 수행된다.
일 실시예에서, 방법은 제1 코드 블록 및 제2 코드 블록을 포함하는 인입하는 스트림을 수신하는 단계, 제1 코드 블록을 제1 소형 코드 블록으로 분할하는 단계, 제2 코드 블록을 제2 소형 코드 블록으로 분할하는 단계, 및 통신을 위해 하나 이상의 직렬 링크를 사용하는 메모리를 코딩하는 단계를 포함하며, 코딩은 제1 코드 블록의 제1 소형 코드 블록 및 제2 코드 블록의 제2 소형 코드 블록을 코딩하는 것을 포함하고, 제1 및 제2 코드 블록의 코딩은 최대 런 길이가 유지되도록 수행된다.
유사한 참조 번호가 유사한 구성요소를 지칭하고 있는 첨부 도면의 도면들에, 본 발명의 실시예가 제한이 아닌 예로서 도시되어 있다.
도 1은 SPMT 명령 인코딩을 이용하는 17B/20B 코딩 시스템(100)의 일 실시예를 나타낸 도면이다.
도 2는 17B 코드 및 20B 코드를 17B/20B 코딩 시스템에 매핑하는 것의 일 실시예를 나타낸 도면이다.
도 3a는 17B/20B 코드의 17B 코드를 분할하는 프로세스의 일 실시예를 나타낸 도면이다.
도 3b는 17B/20B 코드의 20B 코드를 분할하는 프로세스의 일 실시예를 나타낸 도면이다.
도 4a 및 도 4b는 최대 런 길이 요구사항을 유지하면서 17B/20B 코딩 시스템의 5B/6B 섹션 매핑의 일 실시예를 나타낸 도면이다.
도 5는 17B/20B 코딩 시스템의 5B/6B 섹션 매핑의 인코딩 테이블의 일 실시예를 나타낸 도면이다.
도 6a 및 도 6b는 최대 런 길이 요구사항을 유지하면서 17B/20B 코딩 시스템의 6B/7B 섹션 매핑의 일 실시예를 나타낸 도면이다.
도 7은 17B/20B 코딩 시스템의 6B/7B 섹션 매핑의 인코딩 테이블의 일 실시예를 나타낸 도면이다.
도 8은 17B/20B 인코딩/디코딩 프로세스의 일 실시예를 나타낸 도면이다.
도 9는 사전 코딩(pre-coding)에 의한 레이턴시 은폐(latency hiding)를 설명하는 테이블의 일 실시예를 나타낸 도면이다.
도 10a는 순차 천이 코드(sequential transition code) 디코딩 및 명령 디코딩을 위한 종래의 프로세스를 나타낸 도면이다.
도 10b는 병렬 천이 코드(parallel transition code) 디코딩 및 명령 디코딩을 위한 프로세스의 일 실시예를 나타낸 도면이다.
도 11은 본 발명의 실시예가 구현될 수 있는 컴퓨터 시스템을 나타낸 도면이다.
본 발명의 실시예는 일반적으로 고속 직렬 링크를 사용하는 메모리 시스템의 코딩 시스템에 관한 것이다.
본 명세서에서 사용되는 바와 같이, "네트워크" 또는 "통신 네트워크"는 장치들 사이에서 디지털 미디어 콘텐츠(음악, 오디오/비디오, 게임, 사진, 및 기타를 포함함)를 전달하는 상호연결 네트워크를 의미한다. 엔터테인먼트 네트워크는 가정에서의 네트워크, 사무 환경에서의 네트워크, 또는 장치 및/또는 구성요소의 임의의 다른 네트워크와 같은 개인 엔터테인먼트 네트워크를 포함할 수 있다. 네트워크에서, 디지털 텔레비전 튜너, 케이블 셋톱 박스, 비디오 저장 서버, 및 기타 소스 장치와 같은 특정 네트워크 장치는 미디어 콘텐츠의 소스일 수 있다. 디지털 텔레비전, 홈 씨어터 시스템, 오디오 시스템, 게임 시스템, 및 기타 장치와 같은 기타 장치는 미디어 콘텐츠를 디스플레이하거나 사용할 수 있다. 게다가, 비디오 및 오디오 저장 서버 등의 특정 장치는 미디어 콘텐츠를 저장하거나 전송하기 위한 것일 수 있다. 특정 장치는 다수의 미디어 기능을 수행할 수 있다. 일부 실시예에서, 네트워크 장치가 하나의 LAN(local area network) 상에 함께 있을 수 있다. 다른 실시예에서, 네트워크 장치는, LAN(local area network) 간의 터널링 등을 통해, 다수의 네트워크 세그먼트에 걸쳐 있을 수 있다. 엔터테인먼트 네트워크는 다수의 데이터 인코딩 및 암호화 프로세스를 포함할 수 있다.
SPMT는 메모리 영역에 고속 직렬 링크 기술을 사용한다는 점에서 종래의 메모리 기술[예를 들어, DRAM(dynamic random access memory)]과 다르다. SPMT를 사용하여, 레이턴시를 감소시키는 것이 필수적이지만, DC-균형이 필요하지는 않다. 예를 들어, (DC-균형과 달리) DC-결합된 링크가 제공되고, 메모리는 납땜된 후에 보드 상에 부착된 채로 있으며, 따라서 DC-균형 코드가 필요하지 않다. 게다가, SPMT의 경우, 메모리 성능이 레이턴시에 민감한데, 그 이유는 직렬 링크가 종래의 DRAM 인터페이스에 비해 많은 추가 사이클을 소요하기 때문이다. 따라서, 8B/10B 코딩과 같은 순차 컴플렉스 코딩 시스템(sequential and complex coding system)이 SPMT에 적합하지 않은데, 그 이유는 하드웨어 레이턴시를 극적으로 증가시켜 버리기 때문이다.
SPMT는, 현재 메모리 기술에서 흔히 발견되는 병렬 인터페이스 아키텍처와 달리, 처음에 DRAM 칩을 대상으로 한, 직렬 인터페이스 아키텍처를 이용하는 새로운 메모리 인터페이스 아키텍처로서 간주된다. SPMT는 통상적으로 메모리 영역에 고속 직렬 링크 기술을 사용하고, 저전력 및 호스트와 메모리 간을 연결할 때의 핀 수 감소의 이점을 제공한다. 그러나, 메모리 대역폭 요구사항이 고속 링크가 지원할 수 있는 것(예를 들어, 수 Gbps)보다 더 높아지는 경우, 다수의 직렬 링크가 사용되어야만 한다. 따라서, 호스트가 대량의 데이터(예를 들어, 판독 데이터, 기록 데이터)를 한번에 전송해야 할 때, 메모리가 다수의 직렬 링크 또는 직렬 채널을 통해 대량의 데이터를 전달하기에 충분한 대역폭을 구비하고 있어야 한다.
메모리의 17 비트/20 비트 코드를 인코딩/디코딩하기 위해 17 비트/20 비트 인코더/디코더를 포함하는 17 비트/20 비트 코딩 시스템을 이용하는 방법, 기기 및 시스템이 제공된다. 일 실시예에서, 17B/20B 코더를 포함하는 장치가 제공된다. 17B/20B 코더는 17B 블록 및 20B 블록을 포함하는 인입하는 스트림을 수신하고, 17B 블록을 제1 블록으로 분할하며, 20B 블록을 제2 블록으로 분할하고, 통신을 수행하기 위해 하나 이상의 직렬 회선을 사용하는 메모리의 17B 내지 20B를 코딩하며, 코딩은 17B 블록의 제1 블록 및 20B 블록의 제2 블록을 코딩하는 것을 포함하고, 제1 및 제2 블록의 코딩은 최대 런 길이가 유지되도록 수행된다. 메모리의 코딩이 명령어의 코딩과 동시에 수행되고, 코딩이 인코딩 또는 디코딩을 포함하며, 명령의 인코딩의 선택이 코드 디코더를 통과하지 않고 명령의 디코딩을 가능하게 한다. 게다가, 인코딩된 17B/20B 코드 블록을 형성하기 위해 제1 블록을 제2 블록에 병합하는 것이 수행되며, 코딩은 DRAM, SRAM(static random access memory), ROM(read only memory), 및 플래시 메모리 등에 적용된다.
본 발명의 실시예는 17 비트 코드를 20 비트 공간으로 또는 그 반대로 매핑하는, 5 비트 이하의 런 길이를 가지는 17B/20B 코딩 시스템을 제공한다. 이 기법은 SPMT, DRAM, 광 섬유 등과 같은 다양한 시스템과 호환된다. 일 실시예에서, 17B/20B 코드의 실시예를 제공하기 위해 16-비트 데이터 페이로드와 함께 명령/데이터를 나타내는 명령어를 포함하는 명령 비트로서 사용되기 위해 추가 비트(17번째 비트)가 제공되고, 따라서 회로가 수작업으로 구성될 때에도(예를 들어, DRAM의 경우에도) 하드웨어 구현이 간단하고 구현하기 더 쉬우며, 그 결과 레이턴시가 최소로 된다. 일 실시예에서, 시스템 최적화를 위해 레이턴시를 감소시키거나 심지어 제거하면서 다양한 데이터 전송 및 저장 시스템의 임의의 수의 코딩 요구사항을 충족시키기 위해 17B/20B 코딩이 사용된다.
도 1은 SPMT 명령 인코딩을 이용하는 17B/20B 코딩 시스템(100)의 일 실시예를 나타낸 것이다. 17B/20B 코딩 시스템(100)의 예시된 실시예는 17-비트 인코딩에 매핑되는 19개의 SPMT 명령(102)(예를 들어, SYNC, SYNC2, MRR, MRW, PDX 등)의 17B/20B 인코딩을 제공한다. 17 비트 인코딩 영역(104)은 명령 필드, 즉 서브-서브-명령(SubSubCMD)(106), 서브-명령(SubCMD)(110), 명령(CMD)(112), 뱅크(108), 및 명령의 유형을 구별하기 위해 명령(C)(116)인지 활성화 명령(ACT)(114)인지를 반영하는 2개의 명령 유형 필드(114, 116)로 나누어진다. ACT 명령(114)(비트 15)은 긴 주소를 포함하기 때문에 특별히 취급되는 명령이다. 열(102)(18번째 비트로 간주될 수 있음)은 명령의 이름을 열거하고 있다.
명령(102)의 명령 유형에 따라, 임의의 수의 비트(122)가 명령(102)을 식별하는 데 사용될 수 있다. 예를 들어, 명령 WDAT(106)의 경우에, 영역(104)의 17번째 비트인 비트 16(C)은 1을 가지는 것(108)을 식별하는 데 사용되고, 다른 16 비트 0-15는 상위 바이트(110) 및 하위 바이트(112)로서 사용된다. 마찬가지로 명령 ACT(114)의 경우에, 영역(104)의 16번째 비트인 비트 15(ACT)은 1을 가지는 것(116)을 식별하는 데 사용되고, 비트 16은 0으로 유지되고 다른 15 비트(비트 0-14)는 하위 행(118)을 포함한다. 게다가, 명령어 PDX(120)의 경우에, 모든 17 비트(비트 0-16)가 명령을 식별하는 데 사용된다.
17B/20B 코딩 시스템(100)의 예시된 실시예는 17 비트의 (인)코딩 영역(104) 및 명령 또는 데이터를 나타내는 단일 비트(116)와 대응하는 데이터 페이로드를 포함하는 16 비트를 포함하는 20 비트의 명령(19개의 명령(102)을 가짐)의 매핑을 이용한다. 회로가 수작업으로 작성될 때에도 코딩 시스템(100)이 다양한 메모리 시스템/아키텍처(DRAM 등)에서 구현될 수 있도록, 코딩 시스템(100)은 또한 5 이하의 런 길이의 매핑, 감소된 레이턴시, 및 단순화된 하드웨어 구현을 제공한다. 런 길이는 0과 1의 순차적인 수를 지칭한다. 예를 들어, 100011의 시퀀스는 3의 런 길이를 가지는데, 그 이유는 시퀀스가 3개의 0을 포함하기 때문이다. 마찬가지로, 10101의 시퀀스는 1의 런 길이를 가지는데, 그 이유는 연속적인 0 또는 1의 시퀀스가 없기 때문이다.
도 2는 17B 코드 및 20B 코드를 17B/20B 코딩 시스템에 매핑하는 것의 일 실시예를 나타낸 것이다. 예시된 실시예에서, 17B/20B 코드(200)는 17B/20B 코드의 분할 이후에 병렬로 컴퓨팅된다. 17B 및 20B 코드(202, 204)가 임의의 수의 방식으로 나누어질 수 있지만, 예시된 실시예에서, 예를 들어, 17B 코드(202)는 5 비트(206), 6 비트(208) 및 6 비트(210)의 3개의 섹션으로 나누어지는 반면, 20B 코드(204)는 6 비트(212), 7 비트(214) 및 7 비트(216)의 3개의 섹션으로 나누어진다. 17B 코드(202)의 3개의 섹션(206-210)은 20B 코드(204)의 섹션(212-216)과 매핑된다.
예시된 바와 같이, 17B 코드(202)의 5B(206)는 20B 코드(204)의 6B(212)와 매핑되고, 유사하게, 6B(208)는 7B(214)와 매핑되고, 6B(210)는 7B(216)와 매핑된다. 이들 매핑된 섹션은 이어서 17B 코드(202) 및 20B 코드(204)에 병합된다. 이 프로세스에 대해서는 도 3a 및 도 3b를 참조하여 더 설명한다. 일 실시예에서, 17B 코드(202) 및 20B 코드(204)를 그 각자의 섹션(206-216)으로 분할한 후에, 17B/20B 코드(200)는 병렬로 컴퓨팅된다. 섹션(206-216)이 병합되고 매핑되어 통신을 하지만, 이들이 개별적으로 병렬로 남아있을 수 있다.
도 3a는 17B/20B 코드의 17B 코드(302)를 분할하는 프로세스의 일 실시예를 나타낸 것이다. 일 실시예에서, 처리 블록(304)에서, 17B 코드(302)는 하나의 5B 코드 및 2개의 6B 코드의 3개의 코드 섹션으로 분할된다. 처리 블록(306)에서, 17B 코드(302)의 5B 코드가 17B/20B 코드의 20B 코드의 6B 코드에 매핑된다. 마찬가지로, 처리 블록(308)에서, 17B 코드(302)의 6B 코드가 20B 코드의 7B 코드에 매핑되는 한편, 처리 블록(310)에서, 17B 코드(302)의 6B 코드가 20B 코드의 7B 코드에 매핑된다. 처리 블록(312)에서, 17B 코드(302)의 3개의 분할된 코드 섹션이 20B 코드의 3개의 분할된 코드 섹션과 병합되어 17B/20B 코드(314)를 형성한다.
도 3b는 17B/20B 코드의 20B 코드(352)를 분할하는 프로세스의 일 실시예를 나타낸 것이다. 일 실시예에서, 처리 블록(354)에서, 20B 코드(352)는 하나의 6B 코드 및 2개의 7B 코드의 3개의 코드 섹션으로 분할된다. 처리 블록(356)에서, 17B/20B 코드의 17B 코드의 5B 코드가 20B 코드(352)의 6B 코드에 매핑된다. 마찬가지로, 처리 블록(358)에서, 17B 코드의 6B 코드가 20B 코드(354)의 7B 코드에 매핑되는 한편, 처리 블록(360)에서, 17B 코드의 6B 코드가 20B 코드(352)의 7B 코드에 매핑된다. 처리 블록(362)에서, 20B 코드(352)의 3개의 분할된 섹션이 17B 코드의 3개의 분할된 섹션과 병합되어 17B/20B 코드(364)를 형성한다. 판정 블록(366)에서, 블록들 중 임의의 블록으로부터 오류가 검출되었는지에 관해 판정이 행해진다. 오류가 검출된 경우, 오류가 던져진다(370). 그렇지 않은 경우, 17B/20B 코드(364)가 유효한 것으로 간주된다(368).
도 4a 및 도 4b는 최대 런 길이 요구사항을 유지하면서 17B/20B 코딩 시스템의 5B/6B 섹션 매핑(400, 450)의 일 실시예를 나타낸 것이다. 17B/20B 천이 코드 등의 천이 코드의 하나의 특성은 최대 런 길이이다. 이 특성을 만족시키기 위해, 각각의 섹션이 이 특성을 만족시키도록 설계된다. 이 특성은 또한 코드의 인접 섹션의 경계 상에서도 만족된다. 예를 들어, 계산을 병렬로 하기 위해, 이하의 조건들이 이용된다: (1) 각각의 섹션의 최대 런 길이를 5 이하로 유지하는 것, (2) 헤더로부터 카운트된 런 길이가 2를 초과하지 않도록 유지하는 것, 및 테일로부터 역으로 카운트된 런 길이가 3을 초과하지 않도록 하는 것. 제2 및 제3 조건을 사용하여, 런 길이 특성이 섹션 경계 및 명령 경계 둘다에서 만족된다. 섹션 코딩은 기본 천이 코드로 간주되는 "반복 코드"에 기초할 수 있고, "반복 코드"에서 각각의 비트를 반복하는 것과 비교하여, 대상 공간에 반복하는 하나의 비트가 존재한다. 각각의 섹션의 헤드 및 테일로부터의 런 길이 특성이 존재하기 때문에, 반복 코드에 대한 적절한 위치가 6 비트 출력 코드 섹션의 3번째 비트 위치 또는 7 비트 출력 코드 섹션의 가운데 4번째 비트이다. 출력 섹션 코드가 이들 3개의 런 길이 특성을 만족시키는 경우, 이는 유효한 출력으로서 제공된다. 그렇지 않은 경우, 중앙 비트 플리핑(flipping center bit) 등의 새로운 알고리즘을 사용하여 코드 섹션이 재매핑된다.
예를 들어, 도 4a를 참조하면, 17B의 섹션 5B(402)와 20B의 섹션 6B(404)의 매핑(400)이 예시되어 있다. 도 4a는 중앙 비트(420, 422)를 복제하는 기본 규칙을 나타낸 것이다. 예시된 바와 같이, 비트 A(406)는 비트 A(416)와 매핑되고, 마찬가지로, 비트 B(408), D(412), E(414)는 각각 비트 B(418), D(424), E(426)와 매핑된다. 전술한 바와 같이, "반복 코드" 기법을 사용하여, 중간 비트 C(410)는 중간 비트 C(420, 422)와 매핑된다. 환언하면, 6 비트 출력 섹션(404)의 중앙 비트가 복제되거나 2번 반복되는데, 그 이유는 C(420) 및 C(422)가 C(410)와 매핑되기 때문이다.
이제 도 4b를 참조하면, 17B의 섹션 5B(452)와 20B의 섹션 6B(454)의 매핑(450)이 예시되어 있다. 도 4b는 기본 규칙의 결과가 하나 이상의 런 길이 요구사항(예를 들어, 5의 런 길이, 2의 헤더 런 길이, 및 3의 테일 런 길이)을 위반할 때의 예외적인 규칙을 나타낸 것이다. 예시된 바와 같이, 비트 A(456)는 비트 A(466)와 매핑되고, 유사하게, 비트 B(458), D(462), E(464)는 각각 비트 B'(468), D'(474), E(476)와 매핑된다. 전술한 바와 같이, "반복 코드" 기법을 사용하여, 중간 비트 C(460)는 중간 비트 C'(470) 및 C(472)와 매핑된다. 환언하면, 6 비트 출력 섹션(454)의 중앙 비트가 C'(470) 및 C(472)로서 복제되거나 2번 반복되고, C(460)와 매핑된다. B(418)이 대상인 것은 "0"을 지칭하는 한편, B'(468)가 대상인 것은 "0" 또는 "1"일 수 있다. 마찬가지로, C(420) 및 D(424)가 대상인 경우, 이들 각각은 "0"을 포함하는 한편, C'(470) 및 D'(474)가 대상인 경우, 이들 각각은 "0" 또는 "1"을 포함한다.
도 5는 17B/20B 코딩 시스템의 5B/6B 섹션 매핑의 인코딩 테이블(500)의 일 실시예를 나타낸 것이다. 예시된 실시예는 5의 최대 런 길이, 2의 최대 헤더 런 길이, 및 3의 최대 테일 런 길이를 유지하면서 5B/6B 매핑에 대한 인코딩 테이블(500)을 제공한다. 3개의 열은 5-비트 시퀀스의 제1 열(502), 반복 코드 기법을 사용하여 제1 열(502)의 5-비트 시퀀스 각각의 3번째 비트를 반복하는 것에 의한 6-비트 출력 시퀀스의 제2 열(504), 및 하나 이상의 런 길이 요구사항을 만족시킬 필요가 있을 때 3번째 디지트를 (예를 들어, 0에서 1로 또는 1에서 0으로) 플리핑하는 것을 필요로 하는 제2 열(504)의 선택된 시퀀스를 가지는 제3 열(506)을 포함한다.
예시된 실시예에서, 시퀀스(508)(00000)는 시퀀스(508)의 3번째 비트 0을 반복한 시퀀스(510)(000000)에 매핑된다. 이제, 시퀀스(510)(000000)의 6개의 "연속적인" 0은 5의 최대 런 길이, 2의 최대 헤더 런 길이, 및 3의 최대 테일 런 길이를 위반한다. 이들 위반을 정정하기 위해, 시퀀스(510)의 3번째 비트 0이 1로 플리핑되어, 예시된 바와 같이, 5 이하의 전체 런 길이(예를 들어, 0도 1도 연속 5회 초과하여 기록되지 않음), 2 이하의 헤더 런 길이(예를 들어, 처음 2개의 연속적인 0), 및 3 이하의 테일 런 길이(예를 들어, 마지막 3개의 연속적인 0)의 3개의 요구사항을 만족시키는 시퀀스(512)(001000)를 제공한다. 예시된 실시예에서, 32개 행 중 14개 행(514-540)은 하나 이상의 런 길이 요구사항의 유사한 위반 문제를 가지고 있고, 이들은 정정되며, 그러한 정정의 결과가 제3 열(506)에 제공된다.
예를 들어, 행(520)의 경우에, 시퀀스(542)(00011)가 복제된 3번째 비트 0을 가지는 시퀀스(544)(000011)로서 제공된다. 이 경우에, 시퀀스(544)(000011)는 5의 런 길이 요구사항을 만족시키는 데, 그 이유는 5개 이하의 연속적인 0 또는 1이 있기 때문이고, 마찬가지로, 3의 테일 런 길이 요구사항을 만족시키는 데, 그 이유는 테일을 형성하는 단지 2개의 연속적인 1이 있기 때문이다. 그러나, 시퀀스(544)(000011)에서, 헤더를 형성하는 4개의 연속적인 0을 갖는 것으로 인해 2의 헤더 요구사항이 위반된다. 시퀀스(544)의 3번째 디지트 0을 1로 플리핑하는 것은 제3 열(506)의 시퀀스(546)(001011)를 형성하며, 이는 2의 헤더 요구사항을 만족시키고 헤더를 형성하는 2개의 0을 가진다. 간략함을 위해, 다른 이러한 행(516-518, 522-540)이 상세히 논의되지 않지만, 행(514, 520)과 관련하여 설명되는 것과 유사한 기법을 이용한다.
테이블(500)을 자세히 살펴보면, 재매핑을 필요로 하는 코드의 시퀀스(예를 들어, 행(514-540))가 2개의 그룹, 즉, 000 또는 111로 시작하거나 000 또는 111로 끝나는 그룹으로 그룹화될 수 있다는 것을 알 것이다. 이들 조건이 주어진 코드 시퀀스에 따라 개별적으로 또는 동시에 만족될 수 있다. 안타깝게도, 상기한 예외적인 규칙이 적용될 때, 2개의 시퀀스 패턴 00111 및 11000의 출력이 다른 출력과 충돌할 수 있다. 예를 들어, 이러한 이상한 경우를 처리하기 위해 다른 규칙이 이용될 수 있다. 그러나, 상기한 예외적인 규칙을 비롯한 모든 규칙 및 인코딩 기법이 다음과 같은 식으로 표현될 수 있다:
Figure pct00001
5B-6B 인코딩 6B-5B 디코딩
도 6a 및 도 6b는 최대 런 길이 요구사항을 유지하면서 17B/20B 코딩 시스템의 6B/7B 섹션 매핑(600, 650)의 일 실시예를 나타낸 것이다. 간략함을 위해, 도 4a 및 도 4b를 참조하여 기술된 특징들이 여기에서 기술되지 않는다. 도 6a를 참조하면, 도 4a의 5B/6B 코드 매핑을 참조하여 기술된 바와 같이, 섹션 코드(604)의 3번째 비트 C(622, 624)를 반복하는 기본 규칙이 이용되고 섹션 코드(602)의 3번째 비트 C(610)와 매핑된다. 예시된 바와 같이, 비트 A(606)는 비트 A(618)와 매핑되고, 마찬가지로, 비트 B(608), D(612), E(614), F(616)는 각각 비트 B(620), D(626), E(628), F(630)와 매핑된다.
이제 도 6b를 참조하면, 도 6b는 기본 규칙의 결과가 하나 이상의 런 길이 요구사항(예를 들어, 5의 런 길이, 2의 헤더 런 길이, 및 3의 테일 런 길이)을 위반할 때의 예외적인 규칙을 나타낸 것이다. 예시된 바와 같이, 비트 A(656)는 비트 A(668)와 매핑되고, 마찬가지로, 비트 B(658), D(662), E(664), F(666)는 각각 비트 B'(670), D(676), E'(678), F(680)와 매핑된다. 전술한 바와 같이, "반복 코드" 기법을 사용하여, 중간 비트 C(660)는 중간 비트 C'(672) 및 C"(674)과 매핑된다. 환언하면, 7B 코드 출력 섹션(654)의 중앙 비트가 C'(672) 및 C"(674)로서 복제되거나 2번 반복되고, 6B 코드 출력 섹션(652)의 C(660)와 매핑된다. 게다가, B(620)이 대상인 것은 "0"을 지칭하는 반면, B'(670)이 대상인 것은 "0" 또는 "1"일 수 있다. 마찬가지로, C'(672), C"(674) 및 E'(678)이 대상인 경우, 이들 각각은 "0" 또는 "1"을 포함한다.
도 7은 17B/20B 코딩 시스템의 6B/7B 섹션 매핑의 인코딩 테이블(700)의 일 실시예를 나타낸 것이다. 간략함을 위해, 도 5와 관련하여 이미 기술한 특징들 중 다수가 여기에서 논의되지 않는다. 예시된 실시예는 5의 최대 런 길이, 2의 최대 헤더 런 길이, 및 3의 최대 테일 런 길이를 유지하면서 6B/7B 매핑에 대한 인코딩 테이블(700)을 제공한다. 3개의 열은 5-비트 시퀀스의 제1 열(702), 반복 코드 기법을 사용하여 제1 열(502)의 5-비트 시퀀스 각각의 3번째 비트를 반복하는 것에 의한 6-비트 출력 시퀀스의 제2 열(704), 및 하나 이상의 런 길이 요구사항을 만족시킬 필요가 있을 때 3번째 디지트를 (예를 들어, 0에서 1로 또는 1에서 0으로) 플리핑하는 것을 필요로 하는 제2 열(504)의 선택된 시퀀스를 가지는 제3 열(706)을 포함한다. 예시된 실시예에서, 42개 행 중 22개 행(714-756)은 런 길이 요구사항을 만족시키기 위해 제3 행(706)을 필요로 한다.
예를 들어, 코드 시퀀스(708)(000001)는 시퀀스(708)의 3번째 비트 0을 반복한 코드 시퀀스(710)(0000001)에 매핑된다. 이제, 코드 시퀀스(710)(0000001)의 6개의 "연속적인" 0은 5의 최대 런 길이 및 2의 최대 헤더 런 길이를 위반한다. 그러나, 마지막 디지트 "1"이 시퀀스(710)의 테일을 나타내는 경우, 3의 최대 테일 런 길이가 만족된다. 다른 2개의 런 길이 위반을 정정하기 위해, 시퀀스(710)의 3번째 비트 0이 1로 플리핑되어, 예시된 바와 같이, 5 이하의 전체 런 길이(예를 들어, 0도 1도 연속 5회 초과하여 기록되지 않음), 2 이하의 헤더 런 길이(예를 들어, 처음 2개의 연속적인 0), 및 3 이하의 테일 런 길이(예를 들어, 마지막 숫자 1)의 3개의 요구사항을 만족시키는 제3 열(706) 내의 시퀀스(712)(0010001)를 제공한다.
도 5에서와 같이, 인코딩 기법 및 런 길이 요구사항을 만족시키기 위해 이용된 예외적인 규칙이 이하의 식에 의해 요약될 수 있다.
Figure pct00002
6B-7B 인코딩 7B-6B 디코딩
도 8은 17B/20B 인코딩/디코딩 프로세스의 일 실시예를 나타낸 것이다. 일 실시예에서, 처리 블록(802)에서, 17B 및 20B 코드 시퀀스는, 17B 코드 시퀀스는 5B, 6B 및 6B 코드 시퀀스로 나누어지는 한편, 20B 코드 시퀀스는 6B, 7B 및 7B 코드 시퀀스로 나누어지는 것과 같이, 다수의 시퀀스로 분할된다. 처리 블록(804)에서, 17B 코드 시퀀스의 3개의 코드 시퀀스가 20B 코드 시퀀스의 3개의 코드 시퀀스와 매핑된다. 코드 시퀀스의 분할이 임의의 수의 크기 또는 수 또는 형태(3개의 더 작은 코드 시퀀스 등)로 행해질 수 있는 것이 생각되거나, 이러한 코드 시퀀스를 다른 코드 시퀀스와 매핑하는 것이 여기에 단지 예로서 제공되고 본 발명의 실시예가 이러한 예로 제한되지 않는다.
처리 블록(806)에서, 레이턴시를 감소 또는 최소화시키기 위해 하나 이상의 레이턴시 감소 기법이 적용된다. 예를 들어, 17B/20B 코드 및 그의 다중 코드 시퀀스의 코드 디코딩 및 명령 디코딩이 도 10에서 언급되는 바와 같이 코드 영역에서 병렬로 수행된다. 게다가, 런 길이 요구사항이 만족되도록 보장하기 위해 다양한 프로세스가 수행된다(808). 이들 프로세스는 도 4a, 도 4b, 도 5, 도 6a, 도 6b, 및 도 7을 참조하여 논의된다. 판정 블록(810)에서, 5의 전체 최대 런 길이 요구사항이 만족되는지에 대해 판정이 행해진다. 만족되지 않는 경우, 처리 블록(812)에서 (코드 시퀀스의 숫자를 플리핑하는 등에 의해) 요구사항이 만족된다. 만족되는 경우, 프로세스는 판정 블록(814)으로 계속하여, 2 비트의 최대 헤더 런 길이 요구사항이 만족되는지에 대해 판정이 행해진다. 만족되지 않는 경우, 처리 블록(816)에서 (코드 시퀀스의 숫자를 플리핑하는 등에 의해) 요구사항이 만족된다. 만족되는 경우, 프로세스는 판정 블록(818)으로 계속하여, 3 비트의 최대 테일 런 길이 요구사항이 만족되는지에 대해 판정이 행해진다. 만족되지 않는 경우, 처리 블록(820)에서 (코드 시퀀스의 숫자를 플리핑하는 등에 의해) 요구사항이 만족된다. 만족되는 경우, 모든 런 길이 요구사항이 만족되고, 블록(822)에서 17B/20B 코드 시퀀스가 제공된다.
도 9는 인코딩된 명령 테이블(900)의 일 실시예를 나타낸 것이다. 일 실시예에서, 17B/20B 코드 기법의 테이블(900)의 결과를 사용하여 레이턴시 은폐는 물론 사전 디코딩을 이용한 레이턴시 은폐도 달성된다. 또한, 17B/20B 코딩 기법의 이점을 사용하여 사전 코딩에 의한 레이턴시 은폐가 달성될 수 있다. 테이블(900)의 예시된 실시예가 20-비트 영역(902)에 정의된 바와 같이 SPMT 명령 인코딩을 포함한다. 이들 19개 SPMT 명령(904)은 20-비트 코드 공간 또는 영역(902)에서 제공된다. 일 실시예에서, 5B/6B 및 6B/7B 코드 방식 또는 시퀀스는, 예를 들어, 코드 시퀀스의 중앙 비트를 반복하는 것과 같은 "코드 반복" 기법에 기초하며, 코드 시퀀스는 그의 헤더 비트 및 테일 비트를 유지하는 특성을 가질 수 있다. 이 특성을 사용하는 것에 의해 디코딩 프로세스의 이전 단계에서 디코딩 명령을 수행하는 것을 가능하게 하며, 이는 이점으로서 역할한다. 명령 비트는 20번째 비트를 나타내는 명령(C)(906)을 포함하며, 이 동작 명령(ACT)(908)이 비트 18(19번째 비트를 나타냄)에 제공된다. 그 다음 몇 비트 14-17은 CMD 필드(910)를 나타내고, 모든 명령이 여기에서 6-비트를 탐색하여 디코딩될 수 있다. 예를 들어, 각각 6 비트를 가지는 임의의 추가의 코드 시퀀스 파티션(예를 들어, 제2 코드 시퀀스, 제3 코드 시퀀스)은 뱅크(914)(비트 5-8을 차지함) 등의 고정되지 않은 필드를 가질 수 있다. 각각의 명령에 대한 인코딩을 주의깊은 선택함으로써, 코드가 뱅크 값에 상관없이 출력 공간에서 고정되어 있는 SubCMD(912)(비트 9-13를 차지함) 또는 SubSubCMD(916)(비트 0-3을 차지함) 등의 다른 필드에 만들어질 수 있다. 달리 말하면, 일 실시예에서, 명령 디코딩이 20-비트 영역(902)에서 수행될 수 있고, 그 결과 사전 코딩에서 레이턴시 은폐가 얻어진다.
도 10a는 순차 천이 코드 디코딩 및 명령 디코딩을 위한 종래의 프로세스를 나타낸 것이다. 예시된 바와 같이, 이 종래의 프로세스에서, 코드 디코딩 및 명령 디코딩이 순차적으로 수행된다. 예를 들어, 20B의 명령이 수신된다(1002). 처리 블록(1004)에서 20B/16B 코드의 코드 디코딩이 수행된다. 이것은 약 2 나노 초(ns)의 시간이 걸린다. 이어서, 명령 디코딩이 16B 영역에서 수행되고, 그 결과 2ns의 시간이 추가된다. 마지막으로, 코드 및 명령의 디코딩된 정보(1008)가 제공되고, 메모리 코어(1010)로 전달되며, 이는 추가의 ns를 부가하며 따라서 총 5 ns가 걸린다.
도 10b는 병렬 천이 코드 디코딩 및 명령 디코딩을 위한 프로세스의 일 실시예를 나타낸 것이다. 일 실시예에서, 20B 영역에서 코드 및 명령의 병렬 및 동시 디코딩(디코딩을 위해 둘다 동일한 논리 단계를 가짐)은 사전 코딩에서 레이턴시 은폐를 제공한다. 예시된 실시예에서, 전체 프로세스가 3 ns 내에 수행되며, 이는 종래의 프로세스보다 2 ns 또는 40% 더 빠르다(도 10a). 따라서, 레이턴시를 40%만큼 저하시킨다. 예시된 바와 같이, 20B의 명령이 수신된다(1052). 이어서, 처리 블록(1054)에서 20B/17B 코드의 디코딩과 동시에 또는 그와 병렬로 명령이 20B 영역 공간(1056)에서 디코딩된다. 이 단계는 2 ns 걸린다. 디코딩이 수행되면, 디코딩 정보(1058)가 수집되고 메모리 코어(1060)에 전달되며, 이는 추가의 ns의 시간이 더 걸리며, 따라서 병렬 명령 및 코드 디코딩을 수행하는 데 총 3 ns가 필요하다. 일 실시예에서, 17B/20B 천이 코딩 시스템을 사용하는 이 병렬 디코딩은 총 레이턴시를 2ns만큼 감소시키고 40%만큼 속도를 향상시킨다. 종래의 프로세스의 속도(도 10a)와 보다 빠르고 향상되며 효율적인 프로세스의 실시예의 속도(도 10b)를 비교하는 데 시간 트랜잭션(1062)이 사용될 수 있다.
도 11은 본 발명의 실시예가 구현될 수 있는 컴퓨터 시스템을 나타낸 것이다. 컴퓨터 시스템(1100)은 정보를 통신하는 시스템 버스(1120), 및 버스(1120)와 결합되어 있는, 정보를 처리하는 프로세서(1110)를 포함한다. 일 실시예에 따르면, 프로세서(1110)는 다수의 마이크로프로세서 중 하나를 사용하여 구현된다. 그럼에도 불구하고, 당업자라면 다른 프로세서가 사용될 수 있다는 것을 잘 알 것이다
컴퓨터 시스템(1100)은 또한 프로세서(1110)에 의해 실행될 명령어 및 정보를 저장하는, 버스(1120)에 연결된 랜덤 액세스 메모리(RAM) 또는 기타 동적 저장 장치(1125)(본 명세서에서 주 메모리라고 지칭함)를 포함한다. 주 메모리(1125)는 또한 프로세서(1110)에 의한 명령어의 실행 동안에 임시 변수 또는 기타 중간 정보를 저장하는 데도 사용될 수 있다. 컴퓨터 시스템(1100)은 또한 프로세서(1110)에 의해 사용되는 정적 정보 및 명령어를 저장하는, 버스(1120)에 연결된 ROM 및/또는 기타 정적 저장 장치(1126)를 포함할 수 있다.
데이터 저장 장치(1125)(자기 디스크 또는 광 디스크 등) 및 그의 대응하는 드라이브가 또한 정보 및 명령어를 저장하기 위해 컴퓨터 시스템(1100)에 연결될 수 있다. 컴퓨터 시스템(1100)은 또한 I/O 인터페이스(1130)를 통해 제2 입/출력(I/O) 버스(1150)에 연결될 수 있다. 디스플레이 장치(1124), 입력 장치(예를 들어, 영숫자 입력 장치(1123) 및/또는 커서 제어 장치(1122))를 포함하는 복수의 I/O 장치가 I/O 버스(1150)에 연결될 수 있다. 통신 장치(1121)는 외부 데이터 네트워크를 통해 다른 컴퓨터(서버 또는 클라이언트)에 액세스하기 위한 것이다. 통신 장치(1121)는 모뎀, 네트워크 인터페이스 카드, 또는 이더넷, 토큰링, 또는 기타 유형의 네트워크에 연결하는 데 사용되는 것과 같은 기타 공지된 인터페이스 장치를 포함할 수 있다. 컴퓨터 시스템(1100)은 네트워크 컴퓨터 장치, 휴대폰, PDA(personal data assistant) 등을 포함하지만, 이들로 제한되지 않는다.
컴퓨터 시스템(1100)은 클라이언트/서버 네트워크 시스템에서 상호연결될 수 있다. 네트워크는 LAN(Local Area Network), WAN(Wide Area Network), MAN(Metropolitan Area Network), 인트라넷, 인터넷 등을 포함할 수 있다. 본 문서의 다른 곳에서 언급하는 바와 같이, 임의의 수의 네트워크 장치가 포트 멀티플라이어(port multiplier)와 종속으로 연결되어 네트워크 내에 네트워크 메커니즘을 형성할 수 있다. 임의의 수의 장치가 네트워크를 통해 연결될 수 있다는 것이 생각된다. 장치는 본 문서에 기술된 프로토콜을 포함하는 다수의 표준 및 비표준 프로토콜을 통해 스트리밍 미디어 데이터와 같은 데이터 스트림을 네트워크 시스템 내의 다른 장치에 전달할 수 있다.
이상의 설명에서, 설명의 목적상, 본 발명에 대한 완전한 이해를 제공하기 위해 수많은 구체적인 상세 내용이 기술되어 있다. 그러나, 본 발명이 이들 구체적인 상세 중 일부가 없어도 실시될 수 있다는 것이 당업자에게는 명백할 것이다. 다른 경우에, 공지의 구조 및 장치가 블록도 형태로 도시되어 있다. 예시된 구성요소들 사이에 중간 구조가 있을 수 있다. 본 명세서에 기술되거나 도시된 구성요소들은 도시되거나 기술되지 않은 부가의 입력 또는 출력을 가질 수 있다.
본 발명의 다양한 실시예는 다양한 프로세스를 포함할 수 있다. 이들 프로세스는 하드웨어 구성요소에 의해 수행될 수 있거나, 명령어를 이용하여 프로그램된 범용 또는 특수 목적 프로세서 또는 논리 회로로 하여금 프로세스를 수행하게 하는 데 사용될 수 있는 컴퓨터 프로그램 또는 머신-실행가능 명령어로 구현될 수 있다. 대안으로서, 프로세스는 하드웨어 및 소프트웨어의 조합에 의해 수행될 수 있다.
본 문서 전반에 걸쳐 기술된 하나 이상의 모듈, 구성요소 또는 요소(포트 멀티플라이어 향상 메커니즘의 실시예 내에 또는 그와 관련하여 도시된 것 등)는 하드웨어, 소프트웨어 및/또는 이들의 조합을 포함할 수 있다. 모듈이 소프트웨어를 포함하는 경우, 소프트웨어 데이터, 명령어 및/또는 구성이 머신/전자 장치/하드웨어에 의한 제조 물품을 통해 제공될 수 있다. 제조 물품은 명령어, 데이터 등을 제공하는 콘텐츠를 가지는 머신 액세스가능/판독가능 매체를 포함할 수 있다. 기술된 다양한 동작 또는 실행을 수행하는 전자 장치, 예를 들어, 본 명세서에 기술된 파일러, 디스크, 또는 디스크 제어기가 콘텐츠로부터 얻어질 수 있다.
본 발명의 다양한 실시예의 일부분이 본 발명의 실시예에 따른 프로세스를 수행하도록 컴퓨터(또는 기타 전자 장치)를 프로그램하는 데 사용될 수 있는 컴퓨터 프로그램 명령어를 저장하고 있는 컴퓨터 판독가능 매체를 포함할 수 있는 컴퓨터 프로그램 제품으로서 제공될 수 있다. 머신-판독가능 매체는 플로피 디스크, 광 디스크, CD-ROM(compact disk read-only memory), 및 광자기 디스크, ROM, RAM(random access memory), EPROM(erasable programmable read-only memory), EEPROM, DRAM, SRAM, 자기 또는 광 카드, 플래시 메모리, 또는 전자 명령어를 저장하기에 적합한 기타 유형의 매체/머신-판독가능 매체를 포함할 수 있지만, 이들로 제한되지 않는다. 더욱이, 본 발명은 또한 컴퓨터 프로그램 제품으로서 다운로드될 수 있고, 이 프로그램은 원격 컴퓨터로부터 요청측 컴퓨터로 전송될 수 있다.
방법들 중 다수가 그의 가장 기본적인 형태로 기술되어 있지만, 본 발명의 기본적인 범위를 벗어나지 않고, 프로세스가 그 방법 중 임의의 것에 추가되거나 그로부터 삭제될 수 있고, 정보가 기술된 메시지 중 임의의 것에 추가되거나 그로부터 제거될 수 있다. 당업자에게는 많은 추가의 수정 및 개조가 행해질 수 있다는 것이 명백할 것이다. 특정의 실시예는 본 발명을 제한하기 위한 것이 아니라 본 발명을 설명하기 위해 제공된 것이다. 본 발명의 실시예의 범위는 이상에 제공된 구체적인 예에 의해서가 아니라 이하의 특허청구범위에 의해서만 결정된다.
구성요소 "A"가 구성요소 "B"와 결합되어 있다고 말해지는 경우, 구성요소 A는 구성요소 B에 직접 결합되어 있을 수 있거나, 예를 들어, 구성요소 C를 통해 간접적으로 결합되어 있을 수 있다. 명세서 또는 청구범위에서 구성요소, 특징, 구조, 프로세스 또는 특성 A가 구성요소, 특징, 구조, 프로세스 또는 특성 B를 야기하는 것으로 되어 있을 때, 이는 "A"가 "B"의 적어도 부분적인 원인이지만 "B"를 야기하는 데 도움을 주는 적어도 하나의 다른 구성요소, 특징, 구조, 프로세스, 또는 특성일 수도 있다는 것을 의미한다. 명세서에서 구성요소, 특징, 구조, 프로세스 또는 특성이 "포함될 수 있는"("may be included", "might be included", 또는 "could be included") 것으로 되어 있는 경우, 그 특정의 구성요소, 특징, 구조, 프로세스 또는 특성이 꼭 포함되도록 요구되는 것은 아니다. 명세서 또는 청구범위에서, 구성요소("a" 또는 "an" element)를 지칭할 경우, 이는 기술된 구성요소가 단 하나만 있는 것을 의미하지 않는다.
실시예는 본 발명의 구현 또는 예이다. 본 명세서에서 "하나의 실시예", "일 실시예", "일부 실시예들", 또는 "다른 실시예들"이라고 하는 것은 그 실시예들과 관련하여 기술된 특정의 특징, 구조 또는 특성이 적어도 일부 실시예들에 포함되어 있지만, 반드시 모든 실시예들에 포함되어 있는 것은 아니라는 것을 의미한다. 여러 군데에서 나타나는 "하나의 실시예", "일 실시예", 또는 "일부 실시예들" 모두가 꼭 동일한 실시예를 말하는 것은 아니다. 본 발명의 예시적인 실시예에 대한 이상의 설명에서, 다양한 특징이 때때로, 설명을 매끄럽게 하기 위해 그리고 다양한 발명 양태 중 하나 이상의 이해를 돕기 위해, 하나의 실시예, 도면 또는 그에 대한 설명에서 서로 그룹화되어 있다는 것을 잘 알 것이다. 그러나, 이러한 개시 방법은 청구된 발명이 각각의 청구항에 명시적으로 기재되어 있는 것보다 더 많은 특징들을 필요로 한다는 의도를 반영하는 것으로 해석되어서는 안 된다. 오히려, 이하의 특허청구범위가 반영하고 있는 바와 같이, 발명의 양태들은 하나의 상기 개시된 단일 실시예의 모든 특징들보다 적다. 따라서, 특허청구범위는 이로써 상세한 설명에 명확히 포함되고, 각각의 청구항은 그것만으로 본 발명의 별개의 실시예이다.

Claims (20)

  1. 코딩 방법으로서,
    제1 코드 블록(code block) 및 제2 코드 블록을 포함하는 인입하는 스트림을 수신하는 단계;
    상기 제1 코드 블록을 제1 소형 코드 블록(small code block)들로 분할하고, 상기 제2 코드 블록을 제2 소형 코드 블록들로 분할하는 단계, 및
    통신을 수행하기 위해 하나 이상의 직렬 링크를 사용하는 메모리를 코딩하는 단계를 포함하며, 코딩은 상기 제1 블록의 상기 제1 소형 코드 블록들 및 상기 제2 블록의 상기 제2 소형 코드 블록들을 코딩하는 것을 포함하고, 상기 제1 및 제2 소형 코드 블록들의 코딩은 최대 런 길이(run length)가 유지되도록 수행되는 코딩 방법.
  2. 제1항에 있어서, 상기 메모리의 코딩은 명령의 코딩과 동시에 수행되고, 상기 코딩은 인코딩 또는 디코딩을 포함하며, 상기 명령의 인코딩의 선택은 코드 디코더를 통과하지 않고 상기 명령의 디코딩을 가능하게 하는 코딩 방법.
  3. 제1항에 있어서, 상기 제1 소형 코드 블록들을 상기 제2 소형 코드 블록들에 매핑하는 단계를 더 포함하고, 상기 제1 소형 코드 블록들은 제1의 5 비트 블록 및 2개의 제1의 6 비트 블록을 포함하는 코딩 방법.
  4. 제3항에 있어서, 상기 제2 소형 코드 블록들은 제1의 6 비트 블록 및 2개의 제1의 7 비트 블록을 포함하는 코딩 방법.
  5. 제1항에 있어서, 상기 제1 및 제2 소형 코드 블록들의 코딩은 레이턴시(latency)를 최소화하기 위해 병렬로 수행되는 코딩 방법.
  6. 제1항에 있어서, 상기 런 길이는 런 길이 요구사항들을 만족시킴으로써 유지되고, 상기 런 길이 요구사항들은 최대 전체 런 길이(maximum overall run length), 최대 헤더 런 길이(maximum header run length), 및 최대 테일 런 길이(maximum tail run length) 중 하나 이상을 포함하는 코딩 방법.
  7. 제1항에 있어서, 상기 제1 소형 코드 블록들을 상기 제2 소형 코드 블록들에 병합하여 코딩된 코드 블록을 형성하는 단계를 더 포함하고, 상기 코딩은 DRAM(dynamic random access memory), SRAM(static random access memory), ROM(read only memory), 및 플래시 메모리 중 하나 이상에 적용되는 코딩 방법.
  8. 코딩 시스템으로서,
    제1 코드 블록 및 제2 코드 블록을 포함하는 인입하는 스트림을 수신하는 코딩 회로를 포함하고,
    상기 코딩 회로는,
    상기 제1 코드 블록을 제1 소형 코드 블록들로 분할하며;
    상기 제2 코드 블록을 제2 소형 코드 블록들로 분할하고;
    통신을 수행하기 위해 하나 이상의 직렬 링크를 사용하는 메모리를 코딩하는 코더를 갖고, 코딩은 상기 제1 코드 블록의 상기 제1 소형 코드 블록들 및 상기 제2 코드 블록의 상기 제2 소형 코드 블록들을 코딩하는 것을 포함하고, 상기 제1 및 제2 블록들의 코딩은 최대 런 길이가 유지되도록 수행되는 코딩 시스템.
  9. 제8항에 있어서, 상기 메모리의 코딩은 명령의 코딩과 동시에 수행되고, 상기 코딩은 인코딩 또는 디코딩을 포함하며, 상기 명령의 인코딩의 선택은 코드 디코더를 통과하지 않고 상기 명령의 디코딩을 가능하게 하는 코딩 시스템.
  10. 제8항에 있어서, 상기 코더는 또한 상기 제1 소형 코드 블록들을 상기 제2 소형 코드 블록들에 매핑하고, 상기 제1 소형 코드 블록들은 제1의 5 비트 블록 및 2개의 제1의 6 비트 블록을 포함하는 코딩 시스템.
  11. 제10항에 있어서, 상기 제2 소형 코드 블록들은 제1의 6 비트 블록 및 2개의 제1의 7 비트 블록을 포함하는 코딩 시스템.
  12. 제8항에 있어서, 상기 제1 및 제2 소형 코드 블록들의 코딩은 레이턴시를 최소화하기 위해 병렬로 수행되는 코딩 시스템.
  13. 제8항에 있어서, 상기 런 길이는 런 길이 요구사항들을 만족시킴으로써 유지되고, 상기 런 길이 요구사항들은 최대 전체 런 길이, 최대 헤더 런 길이, 및 최대 테일 런 길이 중 하나 이상을 포함하는 코딩 시스템.
  14. 제8항에 있어서, 상기 코더는 또한 상기 제1 소형 코드 블록들을 상기 제2 소형 코드 블록들에 병합하여 코딩된 코드 블록을 형성하고, 상기 코딩은 DRAM, SRAM, ROM, 및 플래시 메모리 중 하나 이상에 적용되는 코딩 시스템.
  15. 코더를 포함하는 코딩 장치로서,
    상기 코더는,
    제1 코드 블록 및 제2 코드 블록을 포함하는 인입하는 스트림을 수신하고;
    상기 제1 코드 블록을 제1 소형 코드 블록들로 분할하며;
    상기 제2 코드 블록을 제2 소형 코드 블록들로 분할하고;
    통신을 수행하기 위해 하나 이상의 직렬 링크를 사용하는 메모리를 코딩하며, 코딩은 상기 제1 코드 블록의 상기 제1 소형 코드 블록들 및 상기 제2 코드 블록의 상기 제2 소형 코드 블록들을 코딩하는 것을 포함하고, 상기 제1 및 제2 블록들의 코딩은 최대 런 길이가 유지되도록 수행되는 코딩 장치.
  16. 제15항에 있어서, 상기 메모리의 코딩은 명령의 코딩과 동시에 수행되고, 상기 코딩은 인코딩 또는 디코딩을 포함하며, 상기 명령의 인코딩의 선택은 코드 디코더를 통과하지 않고 상기 명령의 디코딩을 가능하게 하는 코딩 장치.
  17. 제15항에 있어서, 상기 코더는 또한 상기 제1 소형 코드 블록들을 상기 제2 소형 코드 블록들에 매핑하고, 상기 제1 코드 블록들은 제1의 5 비트 블록 및 2개의 제1의 6 비트 블록을 포함하는 코딩 장치.
  18. 제17항에 있어서, 상기 제2 소형 코드 블록들은 제1의 6 비트 블록 및 2개의 제1의 7 비트 블록을 포함하는 코딩 장치.
  19. 제15항에 있어서, 상기 제1 및 제2 코드 블록들의 코딩은 레이턴시를 최소화하기 위해 병렬로 수행되는 코딩 장치.
  20. 제15항에 있어서, 상기 런 길이는 런 길이 요구사항들을 만족시킴으로써 유지되고, 상기 런 길이 요구사항들은 최대 전체 런 길이, 최대 헤더 런 길이, 및 최대 테일 런 길이 중 하나 이상을 포함하는 코딩 장치.
KR1020117012213A 2008-10-29 2009-09-30 고속 직렬 링크를 이용하는 메모리 시스템의 코딩 시스템 KR101483535B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US12/260,972 2008-10-29
US12/260,972 US7777652B2 (en) 2008-10-29 2008-10-29 Coding system for memory systems employing high-speed serial links
PCT/US2009/059096 WO2010053638A2 (en) 2008-10-29 2009-09-30 Coding system for memory systems employing high-speed serial links

Publications (2)

Publication Number Publication Date
KR20110090972A true KR20110090972A (ko) 2011-08-10
KR101483535B1 KR101483535B1 (ko) 2015-01-16

Family

ID=41259832

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020117012213A KR101483535B1 (ko) 2008-10-29 2009-09-30 고속 직렬 링크를 이용하는 메모리 시스템의 코딩 시스템

Country Status (7)

Country Link
US (2) US7777652B2 (ko)
EP (1) EP2359481A2 (ko)
JP (2) JP2012507935A (ko)
KR (1) KR101483535B1 (ko)
CN (1) CN102484482B (ko)
TW (1) TWI543543B (ko)
WO (1) WO2010053638A2 (ko)

Families Citing this family (31)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010512584A (ja) 2006-12-06 2010-04-22 フュージョン マルチシステムズ,インク.(ディービイエイ フュージョン−アイオー) 空データトークン指令を有する要求デバイスからのデータを管理する装置、システムおよび方法
US8706968B2 (en) 2007-12-06 2014-04-22 Fusion-Io, Inc. Apparatus, system, and method for redundant write caching
US8443134B2 (en) 2006-12-06 2013-05-14 Fusion-Io, Inc. Apparatus, system, and method for graceful cache device degradation
US9104599B2 (en) 2007-12-06 2015-08-11 Intelligent Intellectual Property Holdings 2 Llc Apparatus, system, and method for destaging cached data
US8489817B2 (en) 2007-12-06 2013-07-16 Fusion-Io, Inc. Apparatus, system, and method for caching data
US7836226B2 (en) 2007-12-06 2010-11-16 Fusion-Io, Inc. Apparatus, system, and method for coordinating storage requests in a multi-processor/multi-thread environment
US9519540B2 (en) 2007-12-06 2016-12-13 Sandisk Technologies Llc Apparatus, system, and method for destaging cached data
WO2011031899A2 (en) 2009-09-09 2011-03-17 Fusion-Io, Inc. Apparatus, system, and method for power reduction in a storage device
US9223514B2 (en) 2009-09-09 2015-12-29 SanDisk Technologies, Inc. Erase suspend/resume for memory
US9021158B2 (en) 2009-09-09 2015-04-28 SanDisk Technologies, Inc. Program suspend/resume for memory
US8984216B2 (en) 2010-09-09 2015-03-17 Fusion-Io, Llc Apparatus, system, and method for managing lifetime of a storage device
KR101796116B1 (ko) 2010-10-20 2017-11-10 삼성전자 주식회사 반도체 장치, 이를 포함하는 메모리 모듈, 메모리 시스템 및 그 동작방법
US9047178B2 (en) 2010-12-13 2015-06-02 SanDisk Technologies, Inc. Auto-commit memory synchronization
US10817502B2 (en) 2010-12-13 2020-10-27 Sandisk Technologies Llc Persistent memory management
US9218278B2 (en) 2010-12-13 2015-12-22 SanDisk Technologies, Inc. Auto-commit memory
US9208071B2 (en) 2010-12-13 2015-12-08 SanDisk Technologies, Inc. Apparatus, system, and method for accessing memory
US10817421B2 (en) 2010-12-13 2020-10-27 Sandisk Technologies Llc Persistent data structures
EP2652623B1 (en) 2010-12-13 2018-08-01 SanDisk Technologies LLC Apparatus, system, and method for auto-commit memory
US9092337B2 (en) 2011-01-31 2015-07-28 Intelligent Intellectual Property Holdings 2 Llc Apparatus, system, and method for managing eviction of data
WO2012109677A2 (en) 2011-02-11 2012-08-16 Fusion-Io, Inc. Apparatus, system, and method for managing operations for data storage media
WO2012116369A2 (en) 2011-02-25 2012-08-30 Fusion-Io, Inc. Apparatus, system, and method for managing contents of a cache
US9767032B2 (en) 2012-01-12 2017-09-19 Sandisk Technologies Llc Systems and methods for cache endurance
US9251086B2 (en) 2012-01-24 2016-02-02 SanDisk Technologies, Inc. Apparatus, system, and method for managing a cache
WO2013158014A2 (en) * 2012-04-17 2013-10-24 Telefonaktiebolaget L M Ericsson (Publ) Generating and receiving a training sequence
US9666244B2 (en) 2014-03-01 2017-05-30 Fusion-Io, Inc. Dividing a storage procedure
US9621907B2 (en) 2014-08-15 2017-04-11 Lattice Semiconductor Corporation System and method for transcoding data
US9933950B2 (en) 2015-01-16 2018-04-03 Sandisk Technologies Llc Storage operation interrupt
US10091026B2 (en) 2015-03-18 2018-10-02 Lattice Semiconductor Corporation Full duplex radio in wireless tunneling system
US10111269B2 (en) 2015-03-18 2018-10-23 Lattice Semiconductor Corporation Multi-gigabit wireless tunneling system
US10104706B2 (en) 2015-03-18 2018-10-16 Lattice Semiconductor Corporation Apparatus for role identification and power supply control in a wireless tunneling system
CN105847077B (zh) * 2016-03-17 2019-03-08 华为技术有限公司 一种检测多路串行数据冲突的方法及装置、设备

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4591839A (en) * 1982-05-20 1986-05-27 Gulf & Western Manufacturing Company System for detecting low liquid level and probe therefor
US4486739A (en) * 1982-06-30 1984-12-04 International Business Machines Corporation Byte oriented DC balanced (0,4) 8B/10B partitioned block transmission code
AU618680B2 (en) * 1989-07-17 1992-01-02 Digital Equipment Corporation Data and forward error control coding techniques for digital signals
JPH05300377A (ja) * 1992-04-20 1993-11-12 Fujitsu Ltd 画像データ変換処理装置
US5351047A (en) * 1992-09-21 1994-09-27 Laboratory Automation, Inc. Data decoding method and apparatus
JP3617074B2 (ja) * 1994-06-30 2005-02-02 ソニー株式会社 データ変調装置およびデータ復調装置
SG87129A1 (en) * 1999-07-12 2002-03-19 Ibm Data encoding systems
JP3552632B2 (ja) 2000-02-28 2004-08-11 日本電信電話株式会社 符号化装置
JP3535074B2 (ja) 2000-04-20 2004-06-07 日本電信電話株式会社 制御情報の符号化方法及び復号化方法と制御情報の送信器及び受信器
JP2002261619A (ja) * 2001-02-28 2002-09-13 Toshiba Corp データ符号化方法、データ符号化装置及び記憶媒体
JP2002313034A (ja) * 2001-04-16 2002-10-25 Ricoh Co Ltd デジタル復調装置
US6614369B1 (en) * 2002-03-05 2003-09-02 International Business Machines Corporation DC balanced 7B/8B, 9B/10B, and partitioned DC balanced 12B/14B, 17B/20B, and 16B/18B transmission codes
JP2006074075A (ja) * 2004-08-31 2006-03-16 Canon Inc 差動シリアル・ディジタル出力a/d変換手段および撮像装置
JP2006286084A (ja) * 2005-03-31 2006-10-19 Fujitsu Ltd 符号器、復号器および符号化方法
US7599396B2 (en) * 2005-07-11 2009-10-06 Magnalynx, Inc. Method of encoding and synchronizing a serial interface
CN101292221B (zh) * 2005-11-22 2012-05-30 英特尔公司 用于串行链路的基于信号跃迁特征的编码的方法和装置
US7970215B2 (en) * 2007-03-30 2011-06-28 Intel Corporation Automatic generation of compact code tables

Also Published As

Publication number Publication date
US7777652B2 (en) 2010-08-17
KR101483535B1 (ko) 2015-01-16
US7978099B2 (en) 2011-07-12
CN102484482A (zh) 2012-05-30
WO2010053638A2 (en) 2010-05-14
CN102484482B (zh) 2015-12-02
JP2015136136A (ja) 2015-07-27
TW201018097A (en) 2010-05-01
US20100295711A1 (en) 2010-11-25
TWI543543B (zh) 2016-07-21
JP5875205B2 (ja) 2016-03-02
EP2359481A2 (en) 2011-08-24
US20100102999A1 (en) 2010-04-29
JP2012507935A (ja) 2012-03-29

Similar Documents

Publication Publication Date Title
KR101483535B1 (ko) 고속 직렬 링크를 이용하는 메모리 시스템의 코딩 시스템
KR950003199B1 (ko) 정보전달방법 및 신호 변환을 위한 엔코딩 및 디코딩 장치와 기록 캐리어
JP3136796B2 (ja) 可変長符号デコーダ
US8552891B2 (en) Method and apparatus for parallel data interfacing using combined coding and recording medium therefor
EP0543070A1 (en) Coding system and method using quaternary codes
JP5064867B2 (ja) 同時スイッチングノイズを低減するプリアンブルを含むdcバランスエンコーディングされたデータのための送受信方法及びシステム
US4882583A (en) Modified sliding block code for limiting error propagation
JP3477106B2 (ja) 部分応答磁気記録チャネルのためのレート16/17(0,5)変調コードの装置および方法
KR102381999B1 (ko) 가변 길이 코딩된 입력을 디코딩하는 방법 및 시스템, 그리고 코드북을 변경하는 방법
US20060174185A1 (en) Method and apparatus for encoding and precoding digital data within modulation code constraints
US5394144A (en) Variable length code decoding apparatus
JP2000078025A (ja) 符号化されたデ―タを処理する装置
US8724243B1 (en) Systems and methods for run length limited encoding
KR20140046381A (ko) 고착 고장을 갖는 메모리 셀을 수용하기 위한 리던던트 비트의 인코딩 및 디코딩
US7696908B2 (en) Techniques for reducing error propagation using modulation codes having a variable span
US20030123173A1 (en) Method and apparatus for encoding data to guarantee isolated transitions in a magnetic recording system
CN113811947B (zh) 一种二维方形约束的编译码方法及装置
JP4666235B2 (ja) 符号化装置及び方法、並びにプログラム
KR20220127113A (ko) 최소 오버헤드를 갖는 최대 천이 방지 코딩을 구현하는 인코딩 및 디코딩 장치 및 방법
JPH0490267A (ja) 可変長符号の復号回路
JP2001518253A (ja) 位置依存制約を有する最大遷移ランレングス符号用システム及び方式
JPH01221925A (ja) 可変長符号変換方法
JPH0548577A (ja) 可変長符号化データの伝送方法
JPH01221920A (ja) 可変長符号変換方法
JP2001312863A (ja) 符号化方法及び符号器、復号器

Legal Events

Date Code Title Description
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20171228

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20181226

Year of fee payment: 5