KR102512361B1 - 향상된 신호 무결성을 갖는 저-전력 스크램블링 - Google Patents

향상된 신호 무결성을 갖는 저-전력 스크램블링 Download PDF

Info

Publication number
KR102512361B1
KR102512361B1 KR1020177014386A KR20177014386A KR102512361B1 KR 102512361 B1 KR102512361 B1 KR 102512361B1 KR 1020177014386 A KR1020177014386 A KR 1020177014386A KR 20177014386 A KR20177014386 A KR 20177014386A KR 102512361 B1 KR102512361 B1 KR 102512361B1
Authority
KR
South Korea
Prior art keywords
scrambling
scrambling code
signal
bit
bits
Prior art date
Application number
KR1020177014386A
Other languages
English (en)
Other versions
KR20170098804A (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 KR20170098804A publication Critical patent/KR20170098804A/ko
Application granted granted Critical
Publication of KR102512361B1 publication Critical patent/KR102512361B1/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/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory controller
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/20Handling requests for interconnection or transfer for access to input/output bus
    • G06F13/28Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/78Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure storage of data
    • G06F21/79Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure storage of data in semiconductor storage media, e.g. directly-addressable memories
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/27Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes using interleaving techniques
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2211/00Indexing scheme relating to details of data-processing equipment not covered by groups G06F3/00 - G06F13/00
    • G06F2211/007Encryption, En-/decode, En-/decipher, En-/decypher, Scramble, (De-)compress
    • 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 Security & Cryptography (AREA)
  • Computer Hardware Design (AREA)
  • Software Systems (AREA)
  • Probability & Statistics with Applications (AREA)
  • Storage Device Security (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)
  • Synchronisation In Digital Transmission Systems (AREA)
  • Communication Control (AREA)
  • Information Transfer Systems (AREA)

Abstract

I/O 인터페이스는 스크램블링(scrambling)을 지원하는데, 스크램블링은 스크램블링 코드의 비선형 스크램블링, 스크램블링 코드의 동적 버스 인버전(dynamic bus inversion), 또는 스크램블링 코드의 선택된 비트들의 선택적인 스위칭, 또는 이들의 조합을 포함할 수 있다. 전송 디바이스는 스크램블러를 포함하고, 수신 디바이스는 디스크램블러(descrambler)를 포함한다. 스크램블러 및 디스크램블러 양자는 전술된 하나 이상의 기술을 적용하여 수정된 선형 피드백 스크램블링 코드를 생성한다. 수정된 스크램블링 코드는 이전 스크램블링된 출력에 비해 스크램블링된 출력 비트들 중 절반 미만이 토글링(toggling)되게 할 수 있다. 스크램블러는 전송할 신호에 수정된 스크램블링 코드를 적용한다. 디스크램블러는 수신된 신호에 수정된 스크램블링 코드를 적용한다.

Description

향상된 신호 무결성을 갖는 저-전력 스크램블링{LOWER-POWER SCRAMBLING WITH IMPROVED SIGNAL INTEGRITY}
본 발명의 실시예들은 일반적으로 디바이스-간 통신에 관한 것이고, 더 구체적으로 저전력으로 및 향상된 신호 무결성으로 I/O(입력/출력) 인터페이스 상에서 스크램블링(scrambling)하는 것에 관한 것이다.
저작권 고지/허용
이 특허 문서의 개시내용의 일부분들은 저작권 보호를 받는 자료를 포함할 수 있다. 저작권자는 특허 문서 또는 특허 개시내용이 미국 특허청(Patent and Trademark Office) 특허 파일 또는 기록들에 나타남에 따라 누군가에 의한 이들의 재생에 이의가 없으나, 그 외에는 모든 저작권을 보유한다. 저작권 주지는 하기에 설명되는 바와 같은 그리고 첨부 도면들에서의 모든 데이터에, 뿐만 아니라 하기에 설명되는 임의의 소프트웨어에 적용된다: Copyright ® 2014, Intel Corporation, 무단 복제 및 전재 금지.
컴퓨팅 디바이스들은 디바이스-간 인터페이스 또는 접속으로 연결된 집적 회로 구성요소들을 포함한다. 디바이스 크기가 작아지면, 레일-대-레일(rail-to-rail) 전압이 낮아지고, 동작 및 통신 주파수가 높아지고, 전자기 영향은 디바이스-간 통신에 대한 영향을 높인다. 디바이스-간 통신의 실제 구현예는 전력 공급 잡음 및 전자기 간섭으로 인한 신호 무결성 문제들을 종종 겪는다. 스크램블링 코드(scrambling code)는 디바이스-간 통신의 비트 패턴을, 전자기 연결 영향을 감소시키도록 변경함으로써 전력 공급 잡음 및 전자기 간섭의 부정적인 영향을 줄일 수 있다.
그러나, 특히 디바이스 크기가 계속 작아지고 모바일 디바이스의 용도가 더욱 많아지면서, 스크램블링의 전력 소비는 전체 전력 예산에 비해 상당해질 수 있다. 종래에 스크램블링은 하나의 전송에서 다음 전송까지 대략 50% 토글(toggle)을 달성하도록 코드를 적용했다. 이해될 바로서, 잦은 토글링은 드문 토글링보다 동적 전력 소비를 상당히 많이 한다. 따라서, 증가된 디바이스-간 통신 전력 소비의 비용에서 신호 무결성을 유지하기 위해 잦은 토글링을 갖는 스크램블링을 적용해야 하는지에 대한 갈등이 존재한다. 부가적으로, 종래의 스크램블링은 선형 변형에 기초하는데, 이는 의도하지 않은 교차-레인(cross-lane) 및/또는 교차-주기 상관관계를 유발할 수 있다. 교차-레인 상관관계는 인접 신호선들 간의 상관관계를 의미한다. 교차-주기 상관관계는 연속적으로 전송되는 신호들 간의 상관관계를 의미한다. 인접 신호선들 및/또는 연속적인 신호들 간의 상관관계는 전자기 간섭을 증가시키는 결과를 낳는다.
다음의 설명은 본 발명의 실시예에 대한 구현예의 예로서 주어진 도해를 갖는 도면에 대한 설명을 포함한다. 도면은 제한적인 것이 아니라 예로서 이해되어야 한다. 여기에 이용된 바와 같이, 하나 이상의 "실시예"에 대한 언급은 본 발명의 적어도 하나의 구현예에 포함된 특정한 특징, 구조, 및/또는 특성을 설명하는 것으로 이해되어야 한다. 따라서, 여기에 기재된 "일 실시예에서" 또는 "대안적인 실시예에서"와 같은 어구는 본 발명의 다양한 실시예 및 구현예를 설명하는 것일 뿐, 반드시 같은 실시예를 의미하는 것은 아니다. 그러나, 그들이 반드시 서로 배타적인 것도 아니다.
도 1은 전송 디바이스 및 수신 디바이스 양자가 스크램블링 회로 및 디스크램블링 회로(descrambling circuit)를 포함하는 시스템의 실시예에 대한 블록도이다.
도 2는 향상된 스크램블링 코드로, 통신 인터페이스 양 단에서 스크램블링 및 언스크램블링(unscrambling)을 지원하는 시스템의 실시예에 대한 블록도이다.
도 3은 향상된 스크램블링 코드로 스크램블링을 구현하는 처리의 실시예에 대한 순서도이다.
도 4는 비선형 스크램블링 코드, 선택적으로 적용되는 DBI, 및 선택적인 코드 필터링을 포함하는 스크램블링을 지원하는 시스템의 실시예에 대한 블록도이다.
도 5는 비선형 스크램블링 코드, 선택적으로 적용되는 DBI, 및 선택적인 코드 필터링을 포함하는 언스크램블링을 지원하는 시스템의 실시예에 대한 블록도이다.
도 6은 비선형 스크램블링 코드, 또는 선택적으로 적용되는 DBI, 또는 선택적인 코드 필터링을 제공하는 것을 포함하는 스크램블링을 구현하기 위한 처리의 실시예에 대한 순서도이다.
도 7은 비선형 스크램블링 코드, 또는 선택적으로 적용되는 DBI, 또는 선택적인 코드 필터링을 제공하는 것을 포함하는 언스크램블링을 구현하기 위한 처리의 실시예에 대한 순서도이다.
도 8은 향상된 스크램블링 코드로 스크램블링하는 것이 구현될 수 있는 컴퓨팅 시스템의 실시예에 대한 블록도이다.
도 9는 향상된 스크램블링 코드로 스크램블링하는 것이 구현될 수 있는 모바일 디바이스의 실시예에 대한 블록도이다.
이하 설명되는 실시예들의 일부 또는 전부를 묘사할 수 있는, 도면의 설명을 포함하는 특정 세부사항과 구현예에 대한 설명에 뒤이어, 본 명세서에 제시되는 발명 개념의 다른 잠재적 실시예 또는 구현예에 대해 검토하기로 한다.
여기에 설명된 바와 같이, I/O 인터페이스는 향상된 스크램블링 코드에 기초한 보다 강력하고 보다 전력 효율적인 스크램블링을 지원한다. 일 실시예에서, 스크램블링 코드는 비선형 스크램블링, 또는 동적 버스 인버전(dynamic bus inversion), 또는 선택된 비트들의 선택적인 스위칭, 또는 이들을 조합을 포함할 수 있다. 전송 디바이스는 스크램블러를 포함하고, 수신 디바이스는 디스크램블러를 포함한다. 스크램블러 및 디스크램블러 양자는 향상된 스크램블링 코드에 대한 전술된 기술 중 하나 이상을 적용하여 수정된 선형 피드백 스크램블링 코드를 생성한다. 수정된 스크램블링 코드는 이전 스크램블링된 출력에 비해 스크램블링된 출력 비트들 중 절반 미만이 토글링(toggling)되게 할 수 있다. 스크램블러는 전송할 신호에 수정된 스크램블링 코드를 적용한다. 디스크램블러는 수신된 신호에 수정된 스크램블링 코드를 적용한다.
전송기에서 스크램블러를 갖고 수신기에서 디스크램블러를 가지게 되면, 전송된 신호를 올바로 추출하기 위해, 디스크램블러가 스크램블러에 의해 사용되었던 코드와 같은 또는 상호보완적인 코드를 사용하게 하도록, 스크램블러 및 디스크램블러의 동기화가 필요하게 될 것임이 이해될 것이다. 일 실시예에서, 스크램블러 및 디스크램블러 양자는 코드 또는 코드 생성 동작의 패턴 또는 알고리즘을 따른다. 따라서, 그들은 하나의 코드에서 다음 코드로 일제히 증가하거나 움직일 수 있다. 일 실시예에서, 스크램블러 및 디스크램블러는 그들 간의 통신 인터페이스를 통한 커맨드 또는 부가적인 신호를 통해 동기화된다. 일 실시예에서, 스크램블러 및 디스크램블러 양자는 비선형 스크램블링, 또는 동적 버스 인버전(dynamic bus inversion, DBI), 또는 선택된 비트들의 선택적인 스위칭, 또는 이들의 조합을 포함할 수 있는 스크램블링 코드 동작을 수행한다. 종래의 스크램블링은 데이터 버스 상에서만 동작했다. 일 실시예에서, 여기에 설명된 스크램블링은 데이터 버스에 적용될 수 있다. 여기에 설명된 스크램블링은 또한 메모리 서브시스템에 대한 커맨드 및/또는 주소 정보에 적용될 수도 있다.
일 실시예에서, 스크램블링 코드에 비선형성이 제공되면, 신호 무결성이 향상되고 디바이스-간 상호접속을 통한 전자기 간섭이 감소할 수 있다. 디바이스-간 상호접속은 하나의 집적 회로에서 또다른 것으로의 인터페이스를 포함한다. 일 실시예에서, 집적 회로는 개별적인 패키지 부분이다. 일 실시예에서, 집적 회로는 멀티-칩 패키지에 함께 집적된 개별적인 칩 부분이다. 비선형 스크램블링 코드는 교차-레인 상관관계 및 교차-주기 상관관계를 감소시킬 수 있다. DBI를 사용하면, 스크램블링을 적용하기 위해 사용되는 전력의 양을 줄일 수 있다. 선택적인 스위칭을 사용해도 또한 스크램블링을 적용하기 위해 사용되는 전력의 양을 줄일 수 있다. DBI는 하나의 주기에서 다른 주기까지의 토글의 수를 줄이기 위해 적용될 수 있다. 따라서, 스크램블링 코드에 DBI를 적용하면 스크램블링 코드에서 토글의 수를 줄일 수 있고, 이에 따라 DBI를 사용하지 않는 스크램블링의 응용례에 비해 전력 소비를 줄일 수 있다. 선택적인 스위칭은 하나 이상의 레인 또는 신호선을, 하나의 주기에서 다음 주기까지 선택적으로 일정하게 유지하여, 이와 달리 종래의 스크램블링 코드 생성에서 발생하게 되는 토글의 수를 또한 감소시킨다. 이들 기술 중 임의의 하나 이상은 토글의 수를 감소시킬 수 있고, 이는 스크램블링 코드가 신호선에서 50% 미만의 토글 비율을 생성하게 한다.
여기 설명은 호스트 또는 메모리 제어기와 메모리 디바이스 간의 상호접속을 통한 또는 통신 인터페이스를 통한 교환을 위해 스크램블링 통신을 포함하는 예를 참조한다. 일 실시예에서, 여기의 임의의 실시예에 설명된 스크램블링/디스크램블링은 메모리 디바이스에 연결된 인터페이스 외에 I/O (입력/출력) 인터페이스를 위해 수행된다. 따라서, 스크램블링 코드 생성은 메모리 디바이스 외에 디바이스-간 통신을 위해 수행될 수 있다.
메모리 디바이스들에 대한 참조는 상이한 메모리 유형들에 적용될 수 있다. 메모리 디바이스들은 일반적으로 휘발성 메모리 기술들을 의미한다. 휘발성 메모리는, 디바이스에 전력이 차단되면, 상태(및 따라서 그것 상에 저장되어 있는 데이터)가 비결정이 되는 메모리이다. 동적 휘발성 메모리는 상태를 유지하기 위해 디바이스에 저장되어 있는 데이터를 리프레시(refresh)하는 것을 필요로 한다. 동적 휘발성 메모리의 일례는 동적 랜덤 액세스 메모리(dynamic random access memory, DRAM), 또는 동기 DRAM(SDRAM)과 같은 일부 변형물을 포함한다. 본 명세서에 설명된 메모리 서브시스템은, DDR3(듀얼 데이터 레이트 버전 3, 2007년 6월 27일에 JEDEC(Joint Electronic Device Engineering Council)(공동 전자 디바이스 엔지니어링 협회)에 의한 오리지널 릴리즈, 현재는 릴리즈 21), DDR4(DDR 버전 4, JEDEC에 의해 2012년 9월에 공표된 초기 사양), LPDDR3(저전력 DDR 버전 3, JESD209-3B, JEDEC에 의해, 2013년 8월), LPDDR4(LOW POWER DOUBLE DATA RATE (LPDDR)(저전력 더블 데이터 레이트) 버전 4, JESD209-4, 2014년 8월 JEDEC에 의해 원래 공표됨), WIO2(와이드 I/O 2 (WideIO2), JESD229-2, 2014년 8월 JEDEC에 의해 원래 공표됨), HBM (HIGH BANDWIDTH MEMORY DRAM(높은 대역폭 메모리 DRAM), JESD235, 2013년 10월 JEDEC에 의해 원래 공표됨), DDR5 (DDR 버전 5, JEDEC에 의해 현재 논의 중), LPDDR5(JEDEC에 의해 현재 논의 중), WIO3 (와이드 I/O 3, JEDEC에 의해 현재 논의 중), HBM2 (HBM 버전 2), JEDEC에 의해 현재 논의 중) 및/또는 다른 것들과 같은 다수의 메모리 기술들, 및 이러한 사양들의 파생물 또는 확장물에 기초한 기술들과 호환가능할 수 있다. 휘발성 메모리에 더하여 또는 휘발성 메모리에 대해 대안적으로, 일 실시예에서, 메모리 디바이스들에 대한 참조는, 디바이스에 전력이 차단되더라도 그것의 상태가 결정적인 비휘발성 메모리 디바이스를 의미할 수 있다. 따라서, 메모리 디바이스는 또한 3차원 교차점 메모리 디바이스와 같은 차세대 비휘발성 디바이스 또는 다른 발전중인 비휘발성 메모리 디바이스를 포함할 수 있다. 여기에 설명된 메모리 디바이스는 또한 플래시(flash), 위상 변화 메모리(phase change memory), 회전-토크 메모리(spin-torque memory), 또는 다른 비휘발성 메모리 디바이스를 포함할 수 있다.
도 1은 전송 디바이스 및 수신 디바이스 양자가 스크램블링 회로 및 디스크램블링 회로를 포함하는 시스템의 실시예에 대한 블록도이다. 시스템(100)은 향상된 스크램블링 코드 생성이 적용될 수 있는 시스템의 일례를 나타낸다. 시스템(100)은 메모리 서브시스템 요소를 포함할 수 있다. 호스트(102)는 시스템(100)이 그 일부인 디바이스의 호스트 운영 체제를 실행시키는 일차 프로세서(구체적으로 도시하지 않음)을 포함하는, 호스트 시스템을 나타낸다. 코드 및 동작을 프로세서로 실행시키면, 데이터가 하나 이상의 메모리 디바이스(120)에 저장될 필요가 생긴다. 호스트 제어기(110)는 상기 필요들을 만족시키기 위해, 메모리 디바이스(120)에 대한 메모리 액세스 커맨드를 생성할 책임이 있는 호스트(102)에서의 제어기를 나타낸다.
일 실시예에서, 메모리 디바이스(120)는 휘발성 메모리 디바이스이다. 일 실시예에서, 메모리 디바이스(120)는 비휘발성 메모리 디바이스를 포함한다. 모든 메모리 디바이스(120)가 비휘발성 저장소인 경우, 호스트 제어기(110)는 시스템(100) 내의 지속성 데이터 저장소에 액세스하는, 저장소 제어기를 의미할 수 있다. 모든 메모리 디바이스(120)가 휘발성 저장소, 또는 휘발성 저장소와 유사한 액세스 주파수 및 액세스 기술로 동작하는 비휘발성 저장소인 경우, 호스트 제어기(110)는 실행을 위해 로딩된 코드, 및/또는 시스템(100) 내의 일시적인 또는 캐싱된 데이터에 액세스하는 메모리 제어기를 의미할 수 있다.
호스트 제어기(110)는 상호접속(130)을 통해 메모리 디바이스(120)에 연결된다. 호스트 제어기(110)는 메모리 디바이스(120)로의 및 그로부터의 정보 흐름을 제어한다. 일 실시예에서, 호스트 제어기(110)는 호스트(102)의 하나 이상의 처리 코어(processing core)와 같은 집적 회로 상에 집적된다. 일 실시예에서, 호스트 제어기(110)는 메모리 제어기 허브와 같이 개별적인 집적 회로 부분이다. 호스트 제어기(110)는 전송(TX) 데이터 경로(112) 및 수신(RX) 데이터 경로(114)를 포함한다. TX(112) 및 RX(114)는, 호스트 제어기(110)로 하여금, 메모리 디바이스(120)에서 언스크램블링될 전송되는 데이터를 스크램블링하여 I/O 신뢰도를 향상시키게 할 수 있다.
일 실시예에서, 제어 로직(control logic)(116)은 다른 것과는 비상관적인 복수의 수도 랜덤 출력(pseudo random output)을 병렬로 생성한다. TX(112)는, 제어 로직(116)의 요소가 전송 이전에 TX 신호를 스크램블링할 수 있다는 사실을 참조하여 "스크램블"이라 레이블링된다. 유사하게, RX(114)는, 제어 로직(116)의 요소가 RX 신호의 수신 후에 RX 신호를 언스크램블링할 수 있다는 사실을 참조하여 "언스크램블"이라 레이블링된다. 스크램블링은 전송의 부분으로 고려될 수 있다. 언스크램블링은 수신중 처리 또는 수신 처리의 부분으로 고려될 수 있다. TX(112) 및 RX(114)는 호스트 제어기(110)의 호스트 측에서 동작한다. 일 실시예에서, 데이터 버스를 스크램블링하는 것 이외에, 제어 로직(116)는 메모리 액세스 커맨드나 저장 액세스 커맨드, 및/또는 주소를 데이터와 함께 스크램블링하는데 동일한 스크램블링 코드를 사용할 수 있다.
일 실시예에서, 제어 로직(116)은 병렬식 선형 피드백 시프트 레지스터(linear feedback shift register, LFSR)와 LFSR의 출력을 수정하는 재순서화(reordering) 및 리매핑(remapping) 로직의 조합을 사용한다. 일 실시예에서, 제어 로직(116)은 동적 버스 인버전(DBI)을 사용한다. 일 실시예에서, 제어 로직(116)은 토글 최소화 로직을 사용한다. 메모리 디바이스(120)가 호스트 제어기(110)와 유사한 스크램블 로직 특징을 포함하는 것이 관찰될 것이다. 예를 들어, 메모리 디바이스(120)는 RX 경로(124)를 포함하는데, 이는 메모리 디바이스(120)가 호스트 제어기(110)의 TX(112)로부터 수신한 스크램블링된 신호를 언스크램블링한다는 사실을 참조하여 "언스크램블"이라 레이블링된다. 또다른 예로서, 메모리 디바이스(120)는 TX 경로(122)를 포함하는데, 이는 메모리 디바이스(120)가 호스트 제어기(110)에 송신할 신호를 스크램블링할 수 있다는 사실을 참조하여 "스크램블"이라 레이블링된다. 디바이스 제어부(126)는 스크램블링 동작을 수행할 수 있는 로직을 나타낸다. 여기에 사용된 바와 같이, 스크램블링 동작은 일반적으로 스크램블링 코드를 생성하고 스크램블링 코드를 수정하는 것을 포함하는 스크램블링 및 언스크램블링 양자를 위한 동작을 의미할 수 있다.
일 실시예에서, 제어 로직(116) 및/또는 디바이스 제어부(126)는 스크램블링 코드를 생성하기 위해 비선형 스크램블링 동작을 적용한다. 일 실시예에서, 비선형 스크램블링 동작은 선형 스크램블링 코드 출력의 비트 리매핑이다. 일 실시예에서, 제어 로직(116) 및/또는 디바이스 제어부(126)는 선형 스크램블링 코드 출력에 DBI를 적용한다. 일 실시예에서, 제어 로직(116) 및/또는 디바이스 제어부(126)는 스크램블링 코드의 선택된 비트들에 선택적인 스위칭을 적용한다. 선택적인 스위칭은, 수정된 스크램블링 코드에 따라 다른 비트들은 변경하지만, 어떤 비트 또는 어떤 레인들은 하나의 출력 사이클에서 다음 출력 사이클까지 일정하게 유지하는 것을 포함할 수 있다. 선택적인 스위칭은 반드시 선택된 비트들 모두를 토글링하는 것을 의미하는 것이 아님이 이해될 것이다. 그보다는, 코드를 적용하기 위해 선택된 일부 비트들은 변경될 수 있는 반면, 다른 것들은 그러지 않을 수 있다. 선택적이라는 것은, 스크램블링 코드 변경이 비트를 토글링하는지 또는 하지 않는지에 상관없이, 다른 것들에 대해서는 수정이 허용되는 반면, 일부 비트 또는 레인들은 일정하게 유지된다는 것이다. 예를 들어, 그 로직은 어떤 레인들(예를 들어, 짝수 레인들)은 일정하게 유지하고, 다른 레인들(예를 들어, 홀수 레인들)은 변경되도록 허용할 수 있다. 이 예는 제한적인 것이 아니며, 다른 레인 조합들이 사용될 수 있다. 일 실시예에서, 백색 주파수 스펙트럼을 유지하지 위해, 동일한 수의 레인들이 선택될 수 있다. 일 실시예에서, 제어 로직(116) 및/또는 디바이스 제어부(126)는 비선형 스크램블링 동작, 선형 스크램블링 출력의 선택된 비트들에 대한 선택적인 스위칭, 및 DBI 중 2 이상의 조합을 적용한다.
선형 코드를 생성하고 그것을 전술된 스크램블링 동작 중 하나 이상으로 수정하여 스크램블링 코드를 생성한 후, 제어 로직(116) 및/또는 디바이스 제어부(126)는 그 스크램블링 코드로 신호를 처리할 수 있다. 전송을 위해 신호를 처리하는 것은 전송 신호를 스크램블링하기 위해 TX 신호를 스크램블링 코드와 조합하는 것을 포함할 수 있다. 수신을 위해 신호를 처리하는 것은 수신된 신호를 디코딩 또는 언스크램블링하여 그것으로부터 요구된 동작(들)을 수행하는데 필요한 정보를 추출하기 위해 RX 신호를 스크램블링 코드와 조합하는 것을 포함할 수 있다. 메모리 디바이스(120)는 병렬 조합된 다수의 메모리 디바이스들을 나타낼 수 있다는 것이 이해될 것이다. 일 실시예에서, 전송 시, 호스트 제어기(120)는 다수의 메모리 디바이스(120)에 병렬로 송신할 신호를 스크램블링할 수 있는데, 여기서 다수의 메모리 디바이스(120) 각각은 그 신호를 개별적으로 언스크램블링 및 디코딩할 것이다.
일 실시예에서, 제어 로직(116) 및/또는 디바이스 제어부(126)는 새로운 선형 스크램블링 코드를 생성해야 하는 일 없이, 후속 주기를 위한 "새로운" 스크램블링 코드를 선택적으로 생성할 수 있다. 제어기들은 연속적인 전송을 위한 다수의 수정된 스크램블링 코드를 생성하기 위해 동일한 본래의 선형 스크램블링 코드를 사용할 수 있다. 예를 들어, 제어기들은 새로운 선형 스크램블링 코드를 생성하기 위해 필요한 전력을 사용해야 하는 일 없이(예를 들어, LFSR로부터 출력을 생성해야 하는 일 없이), 다수의 고유한 코드들을 생성하기 위해 동일한 선형 스크램블링 코드에 상이한 부가적인 스크램블링 동작들을 적용할 수 있다.
메모리 디바이스(120)는 저장 매체(128)를 포함하고, 이 저장 매체는 데이터를 저장하는 하나 이상의 저장 어레이 또는 다른 메모리 자원을 나타낸다. 전술된 바와 같이, 메모리 디바이스(120)는 비휘발성 또는 휘발성 메모리 디바이스일 수 있고; 따라서, 저장 매체(128)도 휘발성 또는 비휘발성 저장소를 포함할 수 있다. 일 실시예에서, 저장 매체(128)는 휘발성 및 비휘발성 자원들의 조합을 포함한다. 호스트 제어기(110)는 액세스 커맨드로 특정 위치를 어드레싱(addressing)함으로써 저장 매체(128) 내의 특정 메모리 위치에 액세스한다. 일 실시예에서, 디바이스 제어부(126)는 호스트 제어기(110)로부터 RX(124)를 통해 수신한 신호로부터의 주소 및 커맨드 정보를 디스크램블링 또는 언스크램블링한다.
따라서, 제어 로직(116) 및 디바이스 제어부(126)는, 하나씩 상호접속부(130)의 각각의 측에 있는, 2개의 제어기를 나타낼 수 있다. 종래의 스크램블링에서는, 스크램블링이 메모리 디바이스에 투명했기 때문에, 메모리 디바이스는 스크램블링된 데이터를 저장했다가, 사용 전에 언스크램블링하기 위해 메모리 제어기에 스크램블링된 데이터를 반환한다. 그러나, 메모리 디바이스(120)가 데이터를 언스크램블링하게 함으로써, 그것은 또한 호스트 제어기(110)로의 반환 시에 데이터를 독립적으로 스크램블링할 수 있게 되었으며, 이에 따라 디바이스 제어기(126)가 판독 처리과정에 특정한 스크램블링을 조정할 수 있어, 신호 무결성 및 전자기 간섭에 대한 수행능력이 향상될 수 있다. 스크램블링된 데이터를 저장 및 반환하는 것은, 데이터가 액세스되고 저장 매체(128)로부터 전송되는 순서에 따라 메모리 디바이스 측으로부터의 간섭을 결과로 낳을 수 있다는 것이 이해될 것이다.
2개의 개별적인 제어기들을 사용하여, 시스템(100)은, 정보가 하나의 측에서는 상호접속부(130)를 통한 전송 이전에 스크램블링될 수 있고, 다른 측에서는 그것의 수신시에 언스크램블링될 수 있다는 것을, 확실하게 할 필요가 있을 것임이 이해될 것이다. 커맨드이든 주소이든 또는 데이터이든, 상호접속부(130)를 통해 전송되는 모든 정보는 전송 전에 스크램블링되고 수신시에 언스크램블링될 수 있다. 상호접속 인터페이스의 양측에서 스크램블링을 적용하면, 잡음이 상호접속부(130)를 통해 커맨드와 주소뿐만 아니라 데이터에 영향을 주는 것을 억제할 수 있다.
일 실시예에서, 특정 스크램블링 동작들은 시스템(100)이 그 일부인 컴퓨팅 디바이스의 동작 상태 또는 전력 상태에 특정하다. 예를 들어, 제어 로직(116) 및 디바이스 제어부(126)는, 컴퓨팅 디바이스가 부트-업 시퀀스(boot-up sequence)와 같은 메모리 디바이스(120)와의 데이터 교환을 구현하기 위한 전력 상태, 또는 특정한 전력 상태, 또는 다른 동작 모드로 들어가고 및/또는 동작할 때 스크램블링 동작을 수행하도록 구성될 수 있다.
도 2는 향상된 스크램블링 코드로, 통신 인터페이스 양 단에서 스크램블링 및 언스크램블링을 지원하는 시스템의 일 실시예에 대한 블록도이다. 시스템(200)은, 통신의 양 단이 스크램블링 동작에 사용될 향상된 스크램블링 코드를 생성하는 시스템을 나타내며, 도 1의 시스템(100)에 따른 시스템의 일례를 나타낼 수 있다. 시스템(200)의 예에서 특별한 것은, 그것이 메모리 서브시스템 구성요소들을 나타낼 수 있다는 것이다. 메모리 서브시스템 예는 단지 나타내기 위한 것일 뿐, 제한적인 것은 아니다.
호스트 제어기(210)는 메모리 디바이스(230)에의 액세스를 제어하는 호스트 프로세서의 제어기를 나타낸다. 호스트 제어기(210)는 저장소 제어기 또는 메모리 제어기일 수 있다. 호스트 제어기(210)는 전송 하드웨어를 나타내는 TX(212) 및 수신 하드웨어를 나타내는 RX(214)를 포함한다. 전송 및 수신 하드웨어는 드라이버, 시그널링 로직(signaling logic), 패드들(pads), 트레이스들(traces), 및 다른 하드웨어 구성요소들을 포함할 수 있다. 메모리 디바이스(230)도 유사하게 전송 하드웨어 TX(232) 및 수신 하드웨어 RX(234)를 포함한다.
호스트 제어기(210)의 I/O 제어기(220) 및 메모리 디바이스(230)의 I/O 제어기(240)는 각각의 전송 및 수신 하드웨어의 동작을 제어하기 위한 제어 회로 및/또는 다른 로직을 나타낸다. I/O 제어기(220) 내의 스크램블러(222)와 디스크램블러(228) 및 I/O 제어기(240)의 스크램블러(242)와 디스크램블러(248)가 특별히 나타나있다. 스크램블러들(222 및 242)은 전송 신호(TXSIG)를 스크램블링하기 위한 로직을 나타낸다. 디스크램블러들(228 및 248)은 수신 신호(RXSIG)를 언스크램블링 또는 디스크램블링하기 위한 로직을 나타낸다. 스크램블러들 및 디스크램블러들 모두는 그들 각각의 스크램블링 동작을 수행하기 위해 스크램블링 코드를 적용한다. 스크램블링 코드는 여기에 설명된 임의의 스크램블링 코드 및 수정된 스크램블링 코드에 따를 수 있다. 하나의 실시예에서, 각각의 I/O 제어기 내의 스크램블러들 및 디스크램블러들 모두는 스크램블링 코드를 생성하기 위해 같은 하드웨어 로직을 이용한다. 일 실시예에서는, 스크램블러는 스크램블링 코드를 생성하기 위해 디스크램블러에 의해 사용되는 하드웨어와 개별적인 하드웨어를 사용하여 스크램블링 코드를 생성한다. 시스템(200)이 동기화 메커니즘을 특별히 나타내지는 않았지만, 하나의 단에서 전송 신호를 스크램블링하기 위해 사용된 코드가 다른 단에서 수신 신호를 언스크램블링하기 위해 생성된 것과 같은 코드임을 확실하게 하기 위해, I/O 제어기들(220 및 240)은 동기화 메커니즘을 포함할 수 있다는 것이 이해될 것이다. 이러한 메커니즘들은 타이밍 로직, 시그널링 로직, 또는 일부 다른 로직, 또는 조합을 포함할 수 있다.
일 실시예에서, 스크램블러(222)는 TX(212)를 통해 출력되기 위해 TXSIG와 조합될 스크램블링 코드를 생성한다(또는 스크램블링 코드를 생성하는 하드웨어 로직으로부터 스크램블링 코드를 획득함). 일 실시예에서, 조합 로직(224)은 전송될 신호에 수도 랜덤 패턴을 제공하기 위해, TXSIG과 스크램블링 로직의 출력을 XOR하기 위한 XOR 로직이다. 일 실시예에서, 디스크램블러(248)는 스크램블러(222)에 의해 사용된 것과 같은 스크램블링 코드를 생성하고(또는 스크램블링 코드를 생성하는 하드웨어 로직으로부터 스크램블링 코드를 획득하고), 조합 로직(246)을 사용하여 그 스크램블링 코드를 RX(234)를 통해 수신한 스크램블링된 신호와 조합한다. 일 실시예에서, 조합 로직(246)은 수도 랜덤 패턴을 제거하여 언스크램블링된 RXSIG를 생성하기 위해, 인입 신호와 스크램블링 로직의 출력을 XOR하기 위한 XOR 로직이다.
메모리 디바이스(230)가 스크램블링된 신호를 호스트 제어기(210)에 송신할 때는, 동작들이 역으로 행해진다. 따라서, 일 실시예에서, 스크램블러(242)는 TX(232)를 통해 출력하기 위해 TXSIG와 조합할 스크램블링 코드를 생성한다(또는 스크램블링 코드를 생성하는 하드웨어 로직으로부터 디스크램블링 코드를 획득함). 일 실시예에서, 조합 로직(244)은 전송되는 신호에 수도 랜덤 패턴을 제공하기 위해, TXSIG와 스크램블링 로직의 출력을 XOR하기 위한 XOR 로직이다. 일 실시예에서, 디스크램블러(228)는 스크램블러(242)에 의해 사용된 것과 같은 스크램블링 코드를 생성하고(또는 스크램블링 코드를 생성하는 하드웨어 로직으로부터 디스크램블링 코드를 획득하고), 조합 로직(226)을 사용하여 그 스크램블링 코드를 RX(214)를 통해 수신한 스크램블링된 신호와 조합한다. 일 실시예에서, 조합 로직(226)은 수도 랜덤 패턴을 제거하여 언스크램블링된 RXSIG를 생성하기 위해, 인입 신호와 스크램블링 로직의 출력을 XOR하기 위한 XOR 로직이다.
일 실시예에서, I/O 제어기(220) 및 I/O 제어기(240)는 (예를 들어, 신호 재순서화 로직 및/또는 리매핑 로직을 통한) 비선형 양태를 포함하거나, 스크램블링 코드 DBI 로직에 의해 인버팅된 비트들을 포함하거나, 옛 코드 및 새로운 코드를 선택적으로 스위칭함으로써 생성된 스크램블링 코드를 포함하거나, 이들의 조합을 포함하는 스크램블링 코드를 생성한다. 일 실시예에서, I/O 제어기들(220 및 240)은 일련의 연속적인 주기를 위한 스크램블링 코드들을 생성한다. 종래에는, 스크램블러가 각각의 후속 주기를 위해 새로운 비선형 코드를 생성했다. 일 실시예에서, 스크램블링 로직은 단일 비선형 코드에서 후속하거나 연속적인 일련의 스크램블링 코드들을 생성한다. 따라서, 스크램블링 로직은 같은 비선형 시작 코드에서부터 다수의 상이한 스크램블링 코드들을 생성할 수 있다. 예를 들어, 스크램블링 로직은 같은 비선형 시작 코드에 상이한 부가적인 스크램블링 동작들 또는 스크램블링 코드 수정들을 여러 번 적용할 수 있다.
일 실시예에서, I/O 제어기들(220 및 240)은 스크램블링 코드의 폭보다 많은 비트들을 갖는 신호들을 스크램블링 및 언스크램블링할 수 있다. 따라서, 폭이 M 비트인 스크램블러를 고려하자. 스크램블러는 폭이 N-비트인 신호를 스크램블링할 수 있고, 여기서 N>M이다. 일반적으로 M2/4>M이다(예를 들어, 32Λ2는 2Λ10이고, 4로 나누면 2Λ8 또는 256이고, 이것은 32보다 큼). 스크램블링 코드를 M/2 XOR M/2로 분할함으로써, 시스템(200)은 이익 손실을 최소화하면서, 저렴한 스크램블링 코드 생성기 또는 스크램블러를 사용할 수 있게 된다. 예를 들어, 상기 예는, 32 비트 스크램블러가 256 비트 스크램블러 대신 사용될 수 있다는 것을 보여준다. 이러한 결과는 버스를 분할하고 모든 조합들을 XOR함으로써 달성될 수 있다. 따라서, 일 실시예에서, 조합 로직(224, 226, 244, 및 246)은 설명된 버스 분할 및 조합을 가능하게 하는 메커니즘을 포함할 수 있다. 일 실시예에서, 각각의 구성요소(224, 226, 244, 246)는 다수의 XOR 또는 조합 로직 요소들을 나타낼 수 있다.
일반적으로, 스크램블링 로직은 스크램블링 코드를 생성하고 그것을 스크램블링 코드 세그먼트의 Y개 서브세트의 상이한 조합으로 분할함으로써, 적용할 스크램블링 코드들을 생성할 수 있다. 일 실시예에서, 스크램블링 로직은 단일 M-비트 스크램블링 코드로부터 스크램블링 코드의 Y개 서브세트 또는 Y개 코드 세그먼트를 생성할 수 있다. 각각의 세그먼트 또는 서브세트는 M 미만의 비트들을 가질 것임이 이해될 것이다. 그 후 스크램블링 로직은 Y개 서브세트 각각으로부터 선택된 비트들의 상이한 조합을 선택적으로 XOR하여, 수정된 스크램블링 코드를 생성한다. 따라서, 스크램블링 로직은 Y개 코드 세그먼트들로부터 선택된 비트 조합을 XOR하여 수정된 스크램블링 코드를 생성하고, 수정된 스크램블링 코드를 M 초과의 비트들을 갖는 신호에 적용할 수 있다. 일 실시예에서, Y개 서브세트는 같은 수의 비트들의 2개의 서브세트이다. 또다른 실시예에서, M-비트 코드는 상이한 조합의 2개의 그룹으로 다르게 분할되어(M_서브세트 1 XOR M_서브세트 2), M_서브세트 1 곱하기 M_서브세트 2 조합들을 생성하기 위해 XOR될 수 있다. 또다른 실시예에서는, M-비트 코드가 3 이상의 서브세트들로 분할되어, 서브세트들 중 일부 또는 모두로부터의 하나의 비트가 최종 스크램블링 코드 패턴을 생성하기 위해 함께 XOR될 수 있다.
도 3은 향상된 스크램블링 코드로 스크램블링을 구현하는 처리의 실시예에 대한 순서도이다. 처리(300)는 여기에 설명된 임의의 실시예에 따른 스크램블링 로직에 의해 수행될 수 있는 스크램블링 동작의 일례를 나타낸다. 더 구체적으로, 시스템(200)의 I/O 제어기(220 및 240)들 및 시스템(100)의 제어 로직(116) 및 디바이스 제어부(126)가 이 처리를 구현할 수 있다.
일 실시예에서, 스크램블러 또는 스크램블링 코드 생성기는 시드 신호(seed signal)를 수신한다(302). 시드 신호는 스크램블링 코드를 생성하기 위한 생성 로직의 입력 시작점으로서의 수도 랜덤 수일 수 있다. 일 실시예에서, 시드 신호는 이전 스크램블링 코드일 수 있다. 일 실시예에서, 스크램블러는 시드 신호로부터 LFSR 스크램블링 코드 또는 다른 선형-기반 스크램블링 코드를 생성한다(304). 스크램블러는 스크램블링 코드의 비트들을 선택적으로 변경하기 위해 하나 이상의 부가적인 스크램블링 동작을 적용한다(306). 부가적인 스크램블링 동작은 비트들을 선택적으로 변경하여, 평균적으로 이전 코드에 비해 결과 비트들 중 절반 미만이 토글링되는 수정된 스크램블링 코드를 결과로 갖게 된다. 하나의 코드에서 다음 코드까지, 후속한 코드는 동일한 수의 토글들을 가질 수 있을 것이다. 그러나, 평균적으로, 토글링된 비트는 절반 미만이다. 이렇게 변경됨으로써 스크램블러는 보다 낮은 전력을 사용하게 된다. 이러한 결과는 종래의 방법들과 대조적인 것인데, 종래의 방법들은 각각의 연속적인 코드 상에서 절반의 비트를 토글링하려고 하였다.
일 실시예에서, 부가적인 스크램블링 동작은 비선형 스크램블링 동작을 적용하는 것을 포함할 수 있다. 이러한 비선형 스크램블링 동작은 스크램블링 코드 비트들 중 일부를 선택적으로 변경하기 위해 스크램블링 코드의 비트 리매핑을 수행하거나, 스크램블링 코드에 DBI를 적용하거나, 스크램블링 코드의 선택된 비트의 선택적인 스위칭을 적용하거나, 스크램블링 코드의 짝수 레인들 또는 홀수 레인들을 토글링하거나, 이들의 조합을 포함할 수 있지만, 이에 제한되는 것은 아니다. 일 실시예에서, 스크램블러는 상이한 연속적인 수정된 스크램블링 코드들을 생성하기 위해, 같은 LFSR 스크램블링 코드에 상이한 부가적인 스크램블링 동작들을 적용한다.
전송을 위해 수정된 스크램블링 코드를 생성하는 스크램블러에 대해서(308의 TX 분기), 스크램블러는 스크램블링하여 전송할 신호를 수신한다(310). 스크램블러는 신호에 최종의 또는 수정된 스크램블링 코드를 적용하고(312), 스크램블링된 신호를 전송한다(314). 수신 처리를 위해 수정된 스크램블링 코드를 생성하는 스크램블러에 대해서(308의 RX 분기), 스크램블러는 디스크램블링할 신호를 수신한다(316). 스크램블러는 최종의 또는 수정된 스크램블링 코드를 신호에 적용하고(318), 수신된 언스크램블링된 신호를 처리한다(320). 그 후 수신 디바이스는 수신된 신호가 나타내는 동작을 수행할 수 있게 된다. 일 실시예에서, TX 신호는 메모리 또는 저장소 액세스 커맨드의 커맨드 및 주소 정보에 대한 스크램블링된 정보를 포함한다. 따라서, 언스크램블링된 신호는 커맨드 또는 주소 정보를 포함할 수 있다.
도 4는 비선형 스크램블링 코드, 선택적으로 적용되는 DBI, 및 선택적인 코드 필터링을 포함하는 스크램블링을 지원하는 시스템의 실시예에 대한 블록도이다. 회로(400)는 여기에 설명된 임의의 실시예에 따라 스크램블러를 구현하기 위한 로직을 나타내고, 스크램블러(400)로 언급될 수 있다. 스크램블러(400)는 시스템(200)의 I/O 제어기들(220 및 240) 및 시스템(100)의 제어 로직(116) 및 디바이스 제어부(126) 내의 로직의 일례일 수 있다. 스크램블러(400)는 프로세서 디바이스 내에 로직으로 구현될 수 있다.
일 실시예에서, 스크램블러(400)는 고정된 시드(X-비트)로 시작하는데, 이는 수신 단 상의 제어기 또는 스크램블러가 함께 시작할 시드와 같은 시드이다. 일 실시예에서, 스크램블러(400)는 스크램블링 코드를 수정하는 단계에서 수신된 피드백 출력(X-비트)과 함께 시작한다. 일 실시예에서, 스크램블러(400)는 병렬식 LFSR(402)를 포함하는데, 이는 시드 값을 수신하여, X-비트 LFSR 출력을 생성한다. LFSR(402)는 X-비트 입력을 취하고, 다양한 입력들과 함께 XOR함으로써 그것을 X-비트 출력으로 변형시키는 선형 변형 블록일 수 있다. 일 실시예에서, LFSR(402)는 자신의 출력을 재순서화 로직(404)에 제공한다. 재순서화 로직(404)은 LFSR로부터의 출력 비트들을 선택적으로 재순서화해, 출력을 무작위화하여, X-비트 입력으로부터 X-비트 출력을 생성한다. 일 실시예에서, 재순서화 로직(404)은 자신의 출력을 리매핑 로직(406)에 제공한다. 일 실시예에서, 리매핑 로직(406)은 입력 데이터에 비선형 변형을 적용하여 출력을 생성한다. 일 실시예에서, 리매핑 로직(406)은 (X/N) 치환 박스들(substitution boxes)을 이용하는데, 여기서 X는 N의 배수이다. 각각의 치환 박스는 N-비트 입력을 취해, N-비트 비선형 출력을 생성할 수 있다. 리매핑 로직(406)은 X-비트 출력을 생성한다. 일 실시예에서, 스크램블러(400)는 후속 스크램블링 코드를 위한 시드로서, 리매핑 로직(406)의 출력을 병렬식 LFSR(402)에 다시 제공한다. 플롭(flop)(408)은 후속 사용할 데이터를 보유할 수 있는 래치(latch)와 같은 하나 이상의 로직 디바이스를 나타낸다. 플롭(408)은, 반드시 곧바로 후속하는 코드는 아닌, 어떤 후속하는 코드에서 사용할 데이터를 큐잉하기 위한 다수의 레벨을 포함할 수 있다.
LFSR(402) 및 치환 박스(S-박스) 조합을 주의 깊게 선택하면, 모든 출력 비트가 모든 입력 비트에 의존성을 갖는 애벌란시(avalanche)라고 언급되는 속성을 달성할 수 있다는 것을 알게 되었다. 종래의 스크램블러 디자인들에 의해 사용되는 보다 간단한 LFSR들은 애벌란시를 달성할 수 없다. LFSR(402) 및 리매핑 로직(406)에 의해 수행되는 특정 동작들을 선택함으로써(예를 들어, S-박스 디자인 및 동작을 선택함으로써), 스크램블러(400)는 레인들과 주기들 간의 상관관계 및 차분 확률들을 최소화할 수 있다. 레인은 데이터를 전송하기 위해 사용되는 병렬 신호선들을 의미한다. 주기는 연속적인 교환(예를 들어, 전송, 수신) 처리과정을 의미한다. 레인들과 주기들 간의 차분 확률들을 최소화하면, 레인들 및/또는 주기들 간의 상관관계를 최소화하는 보다 무작위한 스크램블링 코드가 유도된다. 다른 실시예들에서, 스크램블러(400)는 레인들/주기들 간의 상관관계를 최적화하는 것 이외의, 또는 그것을 대신하는, 기준을 위해 최적화될 수 있다. 따라서, 상이한 S-박스 구현예들은 상관관계, 잡음, 타이밍, 또는 I/O 인터페이스가 스크램블링되는 것에 관한 다른 기준들과 같은 다수의 상이한 기준들 중 임의의 것을 향상시키기 위한 상이한 리매핑을 위한 스크램블링 로직을 구성할 수 있다.
일 실시예에서, 스크램블러(400)는 스크램블링 코드를 처리하기 위한 DBI 로직(410)을 포함한다. DBI(410)는 리매핑 로직(406)의 출력을 수신하고, 그것을 이전 스크램블링 주기의 스크램블링 코드와 비교할 수 있다. 구현예에 따라서, 일 실시예에서는, 토글링하는 비트의 수가 미리 결정된 임계보다 크면, DBI(410)는 스크램블링 코드 비트를 선택적으로 인버팅한다. 따라서, DBI(410)는 토글링 비트의 수를 감소시킴으로써 스크램블러(400)에 의해 사용되는 전력을 향상시킬 수 있다. 일 실시예에서, 스크램블러(400)는 후속 사용할 데이터를 보유할 수 있는 래치나 다른 로직과 같은 하나 이상의 로직 디바이스를 나타내는 플롭(412)을 포함한다. 일 실시예에서, 플롭(412)은 후속 스크램블링 코드와 비교하기 위해, DBI(410)로부터의 출력을 DBI(410)에 다시 제공한다. 따라서, 스크램블러(400)는, 새로운 스크램블링 코드가 임계보다 큰 수의 비트를 갖는지를 판정할 수 있다. 스크램블링 코드에 DBI(410)를 적용하는 것은 DBI 표시 신호(예를 들어, 신호가 인버팅됐는지 아닌지를 나타내는 DBI 비트)가 전송기에서 수신기로 송신될 필요가 있다는 것을 반드시 의미하는 것은 아님이 이해될 것이다. DBI(410)는 수도 랜덤 코드를 제공하고, 간단히 링크 또는 I/O 인터페이스의 양 측(즉, TX 및 RX) 상에서 반복가능해질 필요가 있고, 수신 단에서는 "원상태로 되돌려질" 필요가 없다. 따라서, I/O 시스템 내의 DBI의 종래의 응용예와 달리, DBI(410)는 표식을 생성 또는 I/O 인터페이스를 거쳐 송신하지 않고서도 적용될 수 있다.
일 실시예에서, 스크램블러(400)는 선택적인 스위칭(414)을 포함한다. 일 실시예에서, 선택적인 스위칭(414)은 DBI(410)의 출력을 2개의 상이한 방식으로 수신한다. 나타낸 바와 같이, 선택적인 스위칭(414)은 DBI(410)의 출력을 바로 수신하도록 연결될 수 있고, DBI(410)의 출력을 플롭(412)을 경유하여 수신하도록 연결될 수도 있다. 선택적인 스위칭(414)은, 스크램블러(400)로 하여금 수행되는 스크램블링 동작에 따라 스크램블링 코드의 레인들 또는 비트들 중 일부는 스위칭하게 하고, 레인들 또는 비트들 중 일부는 코드의 이전 주기와 같게 남아있게 한다. 플롭(412)은 이전 주기의 스크램블링 코드를 보유 및 제공한다. 따라서, 선택적인 스위칭(414)은 현재 주기, 또는 로직(402, 404, 406, 및 410)을 거쳐 생성된 스크램블링 코드의 반복 및 선택적으로 이전의 스크램블링 코드에 기초하여 출력을 생성할 수 있다.
예를 들어, 일 실시예에서, 선택적인 스위칭(414)은 스크램블링 코드의 X개 비트에서 Y개 비트를 선택한다. Y개 비트는 DBI(410)에의 직접 연결에 의해 제공되는 새로운 코드를 채용할 것이다. 선택적인 스위칭은 남아있는 X 빼기 Y개 비트들(X-Y)로 하여금 이전 주기 스크램블링 코드에 기초하여 그들의 비트 값을 유지하게 한다. 일 실시예에서, 선택적인 스위칭(414)은 매 주기 또는 고정된 수의 주기마다 Y개 비트의 상이한 그룹을 선택할 수 있다. 선택적인 스위칭(414)이 매 주기마다 Y개 비트의 상이한 그룹을 선택하면, 평균 출력은 매 주기 대신 Y/X 주기마다 갱신된다. 선택적인 스위칭(414)은 낮은 dI/dT에 대해 일정한 스위칭율을 여전히 유지하면서, 스크램블링 효율과 전력 소비 간의 향상된 균형을 제공할 수 있다. 일 실시예에서, 선택적인 스위칭(414)은 X개 레인들에 걸쳐 균등하게 이격된 Y개 스위칭 레인들을 선택하여, 스위칭을 공간적으로뿐만 아니라 시간적으로 분배시킬 수 있다. 따라서, 선택적인 스위칭(414)은, 총 X개 비트의 출력에 대해서, 스크램블링된 Y개 비트 및 이전 주기에서부터 일정하게 유지된 X-Y개 비트 모두를 생성할 수 있다. Y가 X 미만의 수이지면, X/2보다는 크거나 작을 수 있다는 것이 이해될 것이다.
코드 생성기(416)는 최종 스크램블링 코드 또는 결과의 수정된 스크램블링 코드를 생성한다. 코드 생성기(416)는, 신호를 스크램블링하기 위해 TX 신호에 적용할 수정된 스크램블링 코드를 조합기(418)에 제공한다. 일 실시예에서, TX 신호는 스크램블링된 데이터를 포함하고, 주소 및/또는 커맨드는 TX 신호와 개별적으로 조합된다. 일 실시예에서, TX 신호는 데이터 정보 이외에 커맨드 및/또는 주소 정보를 포함한다. 이 문맥에서 데이터는 데이터 버스를 통해 송신되는 신호를 의미한다고 이해될 것인데, 여기서 데이터 버스는 어느 메모리 위치에서 어느 동작을 수행할지를 나타내는 정보를 제공하는 커맨드/주소(command/address, C/A) 버스와는 개별적일 수 있다.
TX 신호는 폭이 Z개 비트인데, 여기서 Z는 X와는 다른 수일 수 있다. X 및 Z은 같을 수 있다. 일 실시예에서, Z는 X를 초과하고, 스크램블러(400)는 X-비트 스크램블링 코드로 Z-비트 출력 신호를 스크램블링할 수 있다. 조합기(418)는 블록(420)으로 나타낸, 전송 하드웨어를 통해 출력할 TX 스크램블링된 신호(Z-비트 신호)를 생성한다. 일 실시예에서, 스크램블러(400)는 TX 신호의 Z개 비트를 스크램블링하기 위해 X개 비트 스크램블링 코드를 적용하는데, 여기서 Z는 X 미만이거나, 전송될 신호는 스크램블링 코드보다 적은 레인들을 갖는다(Z 레인들 < X 레인들). 일 실시예에서, 스크램블러(400)는 Z개 비트의 TX 신호를 스크램블링하기 위해 X개 비트 스크램블링 코드를 적용하는데, 여기서 Z는 X를 초과하거나, 전송할 신호가 스크램블링 코드보다 많은 레일들을 갖는다(Z 레인들 > X 레인들). 예를 들어, 조합기(418)는 X개 비트 스크램블링 코드를 (X/2)개 비트의 2개의 세그먼트로 각각 분할하고, 2-입력 XOR을 사용하여, 다양한 비트 조합들을 생성할 수 있다. 이러한 예에서는, (X/2)2개 레인들을 스크램블링할 수 있다(예를 들어, 16-비트 코드는 64 레인들을 포괄할 수 있음(16/2=8; 8*8=64)). 스크램블링 코드를 분할하여 스크램블링 코드를 적용하면, 광역 버스들 용 스크램블링 로직에 관련하여 오버헤드를 줄일 수 있다. 다른 수의 레인들이나, 다른 크기의 XOR 로직 및/또는 S-박스나, 다른 리매핑 로직을 사용하여, 다른 조합들이 명확히 가능해질 수 있다.
도 5는 비선형 스크램블링 코드, 선택적으로 적용되는 DBI, 및 선택적인 코드 필터링을 포함하는 언스크램블링을 지원하는 시스템의 실시예에 대한 블록도이다. 회로(500)는 여기에 설명된 임의의 실시예에 따라 디스크램블러를 구현하기 위한 로직을 나타내고, 디스크램블러(500)로 언급될 수 있다. 디스크램블러(500)는 시스템(200)의 I/O 제어기들(220 및 240) 및 시스템(100)의 제어 로직(116) 및 디바이스 제어부(126) 내의 로직의 일례일 수 있다. 디스크램블러(500)는 프로세서 디바이스 내에 로직으로 구현될 수 있다.
스크램블링 코드를 생성하기 위한 디스크램블러(500)의 로직은 수신된 데이터를 스크램블링하기 위해 사용된 것과 같은 스크램블링 코드를 생성할 것이다. 같은 스크램블링 코드를 생성하지 않고서는, 디스크램블러(500)는 수신된 신호를 언스크램블링하는데 성공하지 못할 것이다. 따라서, 스크램블링 코드를 생성하기 위한 디스크램블러(500)의 구성요소들은 스크램블러(400)의 구성요소들과 같을 수 있다.
일 실시예에서, 디스크램블러(500)는 고정된 시드(X-비트)로 시작하는데, 이는 전송 단 상의 제어기 또는 스크램블러가 함께 시작할 시드와 같은 시드이다. 일 실시예에서, 디스크램블러(500)는 스크램블링 코드를 수정하는 단계에서 수신된 피드백 출력(X-비트)으로 스크램블링 코드를 생성하기 시작한다. 일 실시예에서, 디스크램블러(500)는 병렬식 LFSR(502)을 포함하는데, 이는 시드 값을 수신하여, X-비트 LFSR 출력을 생성한다. LFSR(502)을 X-비트 입력을 취하고, 다양한 입력들과 함께 XOR함으로써 그 X-비트 입력을 X-비트 출력으로 변형시키는 선형 변형 블록일 수 있다. 일 실시예에서, LFSR(502)는 자신의 출력을 재순서화 로직(504)에 제공한다. 재순서화 로직(504)은 LFSR로부터의 출력 비트들을 선택적으로 재순서화해, 출력을 무작위화하여, X-비트 입력으로부터 X-비트 출력을 생성한다. 일 실시예에서, 재순서화 로직(504)은 자신의 출력을 리매핑 로직(506)에 제공한다. 일 실시예에서, 리매핑 로직(506)은 입력 데이터에 비선형 변형을 적용하여 출력을 생성한다. 일 실시예에서, 리매핑 로직(506)은 (X/N) 치환 박스들을 이용하는데, 여기서 X는 N의 배수이다. 각각의 치환 박스는 N-비트 입력을 취해 N-비트 비선형 출력을 생성할 수 있다. 리매핑 로직(506)은 X-비트 출력을 생성한다. 일 실시예에서, 디스크램블러(500)는 후속 스크램블링 코드를 위한 시드로서, 리매핑 로직(506)의 출력을 병렬식 LFSR(502)에 다시 제공한다. 플롭(508)은 후속 사용할 데이터를 보유할 수 있는 래치와 같은 하나 이상의 로직 디바이스를 나타낸다. 플롭(508)은, 반드시 곧바로 후속하는 코드는 아닌, 어떤 후속하는 코드에서 사용할 데이터를 큐잉하기 위한 다수의 레벨을 포함할 수 있다.
LFSR(502) 및 치환 박스(S-박스) 조합을 주의 깊게 선택하면, 모든 출력 비트가 모든 입력 비트에 의존성을 갖는 애벌란시라고 언급되는 속성을 달성할 수 있다는 것을 알게 되었다. 종래의 스크램블러 디자인들에 의해 사용되는 보다 간단한 LFSR들은 애벌란시를 달성할 수 없다. LFSR(502) 및 리매핑 로직(506)에 의해 수행되는 특정 동작들을 선택함으로써(예를 들어, S-박스 디자인 및 동작을 선택함으로써), 디스크램블러(500)는 레인들과 주기들 간의 상관관계 및 차분 확률들을 최소화할 수 있다. 레인은 데이터를 전송하기 위해 사용되는 병렬 신호선들을 의미한다. 주기는 연속적인 교환(예를 들어, 전송, 수신) 처리과정을 의미한다. 레인들과 주기들 간의 차분 확률들을 최소화하면, 레인들 및/또는 주기들 간의 상관관계를 최소화하는 보다 무작위한 스크램블링 코드가 유도된다. 스크램블러(400)를 참조하여 전술된 것과 유사하게, 다른 실시예들에서, 디스크램블러(500)는 레인들/주기들 간의 상관관계를 최적화하는 것 이외의, 또는 그것을 대신하는, 기준을 위해 최적화될 수 있다. 따라서, 상이한 S-박스 구현예들은 상관관계, 잡음, 타이밍, 또는 I/O 인터페이스가 스크램블링되는 것에 관한 다른 기준들과 같은 다수의 상이한 기준들 중 임의의 것을 향상시키기 위한 상이한 리매핑을 위한 스크램블링 로직을 구성할 수 있다.
일 실시예에서, 디스크램블러(500)는 스크램블링 코드를 처리하기 위한 DBI 로직(510)을 포함한다. DBI(510)는 리매핑 로직(506)의 출력을 수신하고, 그것을 이전 스크램블링 주기의 스크램블링 코드와 비교할 수 있다. 구현예에 따라서, 일 실시예에서는, 토글링하는 비트의 수가 미리 결정된 임계보다 크면, DBI(510)는 스크램블링 코드 비트를 선택적으로 인버팅한다. 따라서, DBI(510)는 토글링 비트의 수를 감소시킴으로써 디스크램블러(500)에 의해 사용되는 전력을 향상시킬 수 있다. 일 실시예에서, 디스크램블러(500)는 후속 사용할 데이터를 보유할 수 있는 래치나 다른 로직과 같은 하나 이상의 로직 디바이스를 나타내는 플롭(512)을 포함한다. 일 실시예에서, 플롭(512)은 후속 스크램블링 코드와 비교하기 위해, DBI(510)로부터의 출력을 DBI(510)에 다시 제공한다. 따라서, 디스크램블러(500)는, 새로운 스크램블링 코드가 임계보다 많은 수의 비트를 갖는지를 판정할 수 있다.
일 실시예에서, 디스크램블러(500)는 선택적인 스위칭(514)을 포함한다. 일 실시예에서, 선택적인 스위칭(514)은 DBI(510)의 출력을 2개의 상이한 방식으로 수신한다. 나타낸 바와 같이, 선택적인 스위칭(514)은 DBI(510)의 출력을 바로 수신하도록 연결될 수 있고, DBI(510)의 출력을 플롭(512)을 경유하여 수신하도록 연결될 수도 있다. 선택적인 스위칭(514)은, 디스크램블러(500)로 하여금 수행되는 스크램블링 동작에 따라 스크램블링 코드의 레인들 또는 비트들 중 일부를 스위칭하게 하고, 레인들 또는 비트들 중 일부는 코드의 이전 주기와 같게 남아있게 한다. 플롭(512)은 이전 주기의 스크램블링 코드를 보유 및 제공한다. 따라서, 선택적인 스위칭(514)은 현재 주기, 또는 로직(502, 504, 506, 및 510)을 거쳐 생성된 스크램블링 코드의 반복 및 선택적으로 이전의 스크램블링 코드에 기초하여 출력을 생성할 수 있다.
예를 들어, 일 실시예에서, 선택적인 스위칭(514)은 X개 비트의 스크램블링 코드에서 Y개 비트를 선택한다. Y개 비트는 DBI(510)에의 직접 연결에 의해 제공되는 새로운 코드를 채용할 것이다. 선택적인 스위칭은 남아있는 X 빼기 Y개 비트들(X-Y)로 하여금 이전 주기 스크램블링 코드에 기초하여 그들의 비트 값을 유지하게 한다. 일 실시예에서, 선택적인 스위칭(514)은 매 주기 또는 고정된 수의 주기마다 Y개 비트의 상이한 그룹을 선택할 수 있다. 선택적인 스위칭(514)이 매 주기마다 상이한 Y개 비트의 상이한 그룹을 선택하면, 평균 출력은 매 주기 대신 Y/X 주기마다 갱신된다. 선택적인 스위칭(514)은 낮은 dI/dT에 대해 일정한 스위칭율을 여전히 유지하면서, 스크램블링 효율과 전력 소비 간의 향상된 균형을 제공할 수 있다. 일 실시예에서, 선택적인 스위칭(514)은 X개 레인들에 걸쳐 균등하게 이격된 Y개 스위칭 레인들을 선택하여, 스위칭을 공간적으로뿐만 아니라 시간적으로 분배시킬 수 있다. 따라서, 선택적인 스위칭(514)은, 총 X개 비트의 출력에 대해서, 스크램블링된 Y개 비트 및 이전 주기에서부터 일정하게 유지된 X-Y개 비트 모두를 생성할 수 있다. Y는 X 미만이지만, X/2보다는 크거나 작을 수 있다는 것이 이해될 것이다.
코드 생성기(516)는 최종 스크램블링 코드 또는 결과의 수정된 스크램블링 코드를 생성한다. 코드 생성기(516)는, 신호를 언스크램블링하기 위해 RX 신호에 적용할 수정된 스크램블링 코드를 조합기(518)에 제공한다. 디스크램블러(500)는 블록(520)으로 표현되는 수신 하드웨어를 통해 RX 신호를 수신한다. 인입 신호는 수신된 스크램블링된 신호이고, 여기서 디스크램블러(500)는 조합기(518)로 수신한다. 조합기(518)는 수정된 스크램블링 코드를 스크램블링된 RX 신호에 적용하여, 그것을 RX 신호로 언스크램블링한다. 일 실시예에서, RX 신호는 스크램블링된 데이터만을 포함하고, 주소 및/또는 커맨드는 스크램블링되지 않는다. 일 실시예에서, RX 스크램블링된 신호는 데이터 정보 이외에, 모든 스크램블링된, 커맨드 및/또는 주소 정보를 포함한다. 이 문맥에서 데이터는 데이터 버스를 통해 송신되는 신호를 의미한다고 이해될 것인데, 여기서 데이터 버스는 어느 메모리 위치에서 어느 동작을 수행할지를 나타내는 정보를 제공하는 커맨드/주소(C/A) 버스와는 개별적일 수 있다.
RX 스크램블링된 신호 및 언스크램블링된 RX 신호는 폭이 Z개 비트인데, 여기서 Z는 X와는 다른 수일 수 있다. X 및 Z은 같을 수 있다. 일 실시예에서, Z는 X를 초과하고, 디스크램블러(500)는 X-비트 스크램블링 코드로 Z-비트 입력 신호를 언스크램블링할 수 있다. 일 실시예에서, Z는 X 미만이고, 디스크램블러(500)는 스크램블링 코드보다 적은 레인들을 갖는 Z-비트 입력 신호를 언스크램블링할 수 있다. 조합기(518)는 디스크램블러(500)가 그 일부인 수신 디바이스 내에서 처리할 RX 언스크램블링된 신호(Z-비트 신호)를 생성한다. 일 실시예에서, 디스크램블러(500)는 Z개 비트의 RX 스크램블링된 신호를 스크램블링하기 위해 X개 비트 스크램블링 코드를 적용하는데, 여기서 Z는 X를 초과하거나, 수신된 신호는 스크램블링 코드보다 많은 레인들을 갖는다(Z 레인들 > X 레인들). 예를 들어, 조합기(518)는 X개 비트 스크램블링 코드를 (X/2)개 비트의 2개의 세그먼트로 각각 분할하고, 2-입력 XOR을 사용하여, 다양한 비트 조합들을 생성할 수 있다. 이러한 예에서는, (X/2)2개 레인들을 디스크램블링할 수 있다(예를 들어, 16-비트 코드는 64 레인들을 포괄할 수 있음(16/2=8; 8*8=64)). 스크램블링 코드를 분할하여 스크램블링 코드를 적용하면, 광역 버스들 용 스크램블링 로직에 관련하여 오버헤드를 줄일 수 있다. 다른 수의 레인들이나, 다른 크기의 XOR 로직 및/또는 S-박스나, 다른 리매핑 로직을 사용하여, 다른 조합들이 명확히 가능해질 수 있다.
도 6은 비선형 스크램블링 코드, 또는 선택적으로 적용되는 DBI, 또는 선택적인 코드 필터링을 제공하는 것을 포함하는 스크램블링을 구현하기 위한 처리의 실시예에 대한 순서도이다. 신호 스크램블링 처리(600)는 여기에 설명된 임의의 실시예를 따라, 전송할 신호를 스크램블링하는 임의의 스크램블러에 의해 실행될 수 있다. 스크램블러는 전송될 신호 또는 TX 신호를 수신한다(602). 스크램블러는 TX 신호와 조합하거나 이 신호에 적용할 스크램블링 코드를 생성한다. 스크램블러는 선형 스크램블링 코드를 생성함으로써 스크램블링 코드의 생성을 시작한다. 일 실시예에서, 스크램블러는 X-비트 스크램블링 코드를 결과로 갖기 위해, 시드 신호에 기초하여 X개의 병렬식 LFSR 출력을 생성한다(604). 시드 신호는 고정된 신호, 입력 신호, 또는 피드백 신호일 수 있다.
일 실시예에서, 스크램블러는 비선형 스크램블링으로 스크램블링 코드를 수정한다. 스크램블러가 비선형 스크램블링을 적용하면(606에서 예 분기), 일 실시예에서, 스크램블러는 재순서화 및 리매핑 로직을 통해 X개의 병렬식 LFSR 출력을 제공한다(608). 리매핑은 치환 박스 변형을 포함할 수 있다. 스크램블러가 비선형 스크램블링을 적용하지 않으면(606에서 아니오 분기), 스크램블러는 비선형 기술을 적용하지 않고 스크램블링 코드를 포워딩(forward)하여, 스크램블링 코드 생성으로 계속한다(610).
일 실시예에서, 스크램블러는 DBI를 적용하여 스크램블링 코드를 수정한다. 스크램블러가 DBI를 적용하면(610에서 예 분기), 일 실시예에서, 스크램블러는 이전 주기 스크램블링 코드를 출력 또는 현재 스크램블링 코드와 비교하고, 토글링된 비트의 수가 임계를 초과하면, 현재 스크램블링 코드 출력을 인버팅한다(612). 스크램블러가 DBI를 적용하지 않으면(610에서 아니오 분기), 스크램블러는 DBI를 적용하지 않으면서 스크램블링 코드를 포워딩하고 스크램블링 코드 생성으로 계속한다(614).
일 실시예에서, 스크램블러는 선택적인 스위칭으로 스크램블링 코드를 수정한다. 일 실시예에서, 스크램블러가 선택적인 스위칭을 적용하면(614에서 예 분기), 스크램블러는 X개 비트들 중 오직 Y개만이 갱신된 값을 갖게 허용한다. 스크램블러는 다른 X-Y개 비트들을 이전 스크램블링 코드에 따른 그들의 값에 유지시킬 것이다(616). 스크램블러가 선택적인 스위칭을 적용하지 않으면(614에서 아니오 분기), 스크램블러는 선택적인 스위칭을 적용하지 않으면서 스크램블링 코드를 포워딩하여 스크램블링 코드 생성으로 계속한다(618).
스크램블링 코드를 생성한 후, 스크램블러는 X개 비트의 최종 스크램블링 코드로 Z개 비트의 TX 신호를 스크램블링한다(618). 최종 스크램블링 코드는 606, 608, 610, 612, 614, 616에서의 처리(600)에 관련하여 설명된 스크램블링 기술 중 하나 이상에 의해 수정된 LFSR 출력 코드이다. 스크램블러를 포함하는 I/O 제어부는 Z개 비트의 스크램블링된 전송 신호를 상호접속부를 통해 출력 또는 전송한다(620).
도 7은 비선형 스크램블링 코드, 또는 선택적으로 적용되는 DBI, 또는 선택적인 코드 필터링을 제공하는 것을 포함하는 언스크램블링을 구현하기 위한 처리의 실시예에 대한 순서도이다. 신호 언스크램블링 처리(700)는 여기에 설명된 임의의 실시예를 따라, 처리할 수신된 신호를 언스크램블링하는 임의의 디스크램블러에 의해 실행될 수 있다. 디스크램블러는 전송 디바이스로부터 언스크램블링될 신호 또는 RX 신호를 수신한다(702). 디스크램블러는 RX 신호와 조합하거나 이 신호에 적용할 스크램블링 코드를 생성한다. 디스크램블러는, 스크램블러에 의해 TX 신호에 적용되었던 것과 같은, RX 신호에 적용할 스크램블링 코드를 생성한다. 디스크램블러는 선형 스크램블링 코드를 생성함으로써 스크램블링 코드의 생성을 시작한다. 일 실시예에서, 디스크램블러는 X-비트 스크램블링 코드를 결과로 갖기 위해, 시드 신호에 기초하여 X개의 병렬식 LFSR 출력을 생성한다(704). 시드 신호는 고정된 신호, 입력 신호, 또는 피드백 신호일 수 있다.
일 실시예에서, 디스크램블러는 비선형 스크램블링으로 스크램블링 코드를 수정한다. 스크램블러가 비선형 스크램블링을 적용하면(706에서 예 분기), 일 실시예에서, 디스크램블러는 재순서화 및 리매핑 로직을 통해 X개의 병렬식 LFSR 출력을 제공한다(708). 리매핑은 치환 박스 변형을 포함할 수 있다. 디스크램블러가 비선형 스크램블링을 적용하지 않으면(706에서 아니오 분기), 스크램블러는 비선형 기술을 적용하지 않으면서 스크램블링 코드를 포워딩하여, 스크램블링 코드 생성으로 계속한다(710).
일 실시예에서, 디스크램블러는 DBI를 적용하여 스크램블링 코드를 수정한다. 스크램블러가 DBI를 적용하면(710에서 예 분기), 일 실시예에서, 디스크램블러는 이전 주기 스크램블링 코드를 출력 또는 현재 스크램블링 코드와 비교하고, 토글링된 비트의 수가 임계를 초과하면, 현재 스크램블링 코드 출력을 인버팅한다(712). 디스크램블러가 DBI를 적용하지 않으면(710에서 아니오 분기), 디스크램블러는 DBI를 적용하지 않으면서 스크램블링 코드를 포워딩하고, 스크램블링 코드 생성으로 계속한다(714).
일 실시예에서, 디스크램블러는 선택적인 스위칭으로 스크램블링 코드를 수정한다. 일 실시예에서, 디스크램블러가 선택적인 스위칭을 적용하면(714에서 예 분기), 디스크램블러는 X개 비트들 중 오직 Y개만이 갱신된 값을 갖게 허용한다. 디스크램블러는 다른 X-Y개 비트들을 이전 스크램블링 코드에 따른 그들의 값에 유지시킬 것이다(716). 디스크램블러가 선택적인 스위칭을 적용하지 않으면(714에서 아니오 분기), 디스크램블러는 선택적인 스위칭을 적용하지 않으면서 스크램블링 코드를 포워딩하여, 스크램블링 코드 생성으로 계속한다(718).
스크램블링 코드를 생성한 후, 디스크램블러는 X개 비트의 최종 스크램블링 코드로 Z개 비트의 RX 신호를 언스크램블링한다(718). 최종 스크램블링 코드는 706, 708, 710, 712, 714, 716에서의 처리(700)에 관련하여 설명된 스크램블링 기술 중 하나 이상에 의해 수정된 LFSR 출력 코드이다. 디스크램블러를 포함하는 I/O 제어부는 언스크램블링된 RX 신호에 제공된 통신을 디코딩 또는 이와 달리 인터프리팅(interpret)한다. 시스템은 수신된 정보가 나타내는 동작을 수행할 수 있다(720).
도 8은 향상된 스크램블링 코드로 스크램블링하는 것이 구현될 수 있는 컴퓨팅 시스템의 실시예에 대한 블록도이다. 시스템(800)은 여기에 설명된 임의의 실시예에 따른 컴퓨팅 디바이스를 나타내고, 랩톱 컴퓨터, 데스크톱 컴퓨터, 서버, 게임 또는 엔터테인먼트 제어 시스템, 스캐너, 복사기, 프린터, 라우팅 또는 스위칭 디바이스, 또는 다른 전자 디바이스일 수 있다. 시스템(800)은 프로세서(820)를 포함하며, 프로세서는 시스템(800)을 위한 처리, 동작 관리, 및 명령어들의 실행을 제공한다. 프로세서(820)는 시스템(800)을 위한 처리를 제공하도록 마이크로프로세서, 중앙 처리 유닛(CPU), 처리 코어, 또는 다른 처리 하드웨어 중 임의의 유형을 포함할 수 있다. 프로세서(820)는 시스템(800)의 전체 동작을 제어하며, 하나 이상의 프로그래밍 가능 범용 또는 특수-목적 마이크로프로세서, 디지털 신호 프로세서(DSP), 프로그래밍 가능 제어기, 주문형 집적 회로(ASIC), 프로그래밍 가능 로직 디바이스(PLD) 등 또는 그러한 디바이스들의 조합일 수 있거나 그들을 포함할 수 있다.
메모리 서브시스템(830)은 시스템(800)의 메인 메모리를 나타내고, 프로세서(820)에 의해 실행되는 코드, 또는 루틴 실행 시에 사용되는 데이터 값들에 대한 일시적 저장을 제공한다. 메모리 서브시스템(830)은 판독-전용 메모리(ROM), 플래시 메모리, 하나 이상의 다양한 랜덤 액세스 메모리(RAM)와 같은 하나 이상의 메모리 디바이스, 또는 다른 메모리 디바이스, 또는 이러한 디바이스들의 조합을 포함할 수 있다. 메모리 서브시스템(830)은 다른 것들 중에서, 시스템(800)에서 명령어들의 실행을 위한 소프트웨어 플랫폼을 제공하는 운영 체제(OS)(836)를 저장하고 호스팅한다. 부가적으로, 다른 명령어들(838)은 시스템(800)의 로직 및 처리를 제공하기 위해 메모리 서브시스템(830)으로부터 저장되고 실행된다. OS(836) 및 명령어들(838)은 프로세서(820)에 의해 실행된다. 메모리 서브시스템(830)은 메모리 디바이스(832)를 포함하며, 메모리 디바이스는 데이터, 명령어들, 프로그램들, 또는 다른 아이템들을 저장한다. 일 실시예에서, 메모리 서브시스템은 명령들을 생성하고 메모리 디바이스(832)에 발행하기 위한 메모리 제어기인 메모리 제어기(834)를 포함한다. 메모리 제어기(834)는 프로세서(820)의 물리적인 부분일 수 있다는 점이 이해될 것이다.
프로세서(820) 및 메모리 서브시스템(830)은 버스/버스 시스템(810)에 연결된다. 버스(810)는 적절한 브리지, 어댑터, 및/또는 제어기에 의해 접속된 임의의 하나 이상의 개별적인 물리적 버스, 통신선/인터페이스, 및/또는 점-대-점 접속을 나타내는 추상적인 개념이다. 따라서, 버스(810)는 예를 들어 시스템 버스, 주변 컴포넌트 상호접속(Peripheral Component Interconnect, PCI) 버스, 하이퍼트랜스포트(HyperTransport) 또는 산업 표준 아키텍처(industry standard architecture, ISA) 버스, 소형 컴퓨터 시스템 인터페이스(small computer system interface, SCSI) 버스, 범용 직렬 버스(USB) 또는 IEEE(Institute of Electrical and Electronics Engineers) 표준 1394 버스(일반적으로 "파이어와이어(Firewire)"로 언급됨) 중 하나 이상을 포함할 수 있다. 버스(810)의 버스들은 또한 네트워크 인터페이스(850) 내의 인터페이스들에 대응할 수 있다.
시스템(800)은 또한 버스(810)에 연결된 하나 이상의 입력/출력(I/O) 인터페이스(들)(840), 네트워크 인터페이스(850), 하나 이상의 내부 대용량 저장 디바이스(들)(860), 및 주변 인터페이스(870)를 포함한다. I/O 인터페이스(840)는 사용자가 시스템(800)과 상호작용하는 하나 이상의 인터페이스 구성요소들(예를 들어, 비디오, 오디오, 및/또는 영숫자 인터페이싱)을 포함할 수 있다. 네트워크 인터페이스(850)는 하나 이상의 네트워크를 통해 원격 디바이스(예를 들어, 서버, 다른 컴퓨팅 디바이스)와 통산할 수 있는 능력을 시스템(800)에 제공한다. 네트워크 인터페이스(850)는 이더넷 어댑터, 무선 상호접속 구성요소들, 범용 직렬 버스(USB), 또는 다른 유선 또는 무선 표준-기반 또는 사유 인터페이스들을 포함할 수 있다.
스토리지(860)는 하나 이상의 자기, 고체 상태, 또는 광학 기반 디스크, 또는 조합과 같은, 비휘발성 방식으로 대량의 데이터를 저장하기 위한, 임의의 종래의 매체들이거나 그들을 포함할 수 있다. 스토리지(860)는 코드 또는 명령어들 및 데이터(862)를 지속적인 상태로 유지한다(즉, 시스템(800)에 전력이 차단되더라도, 값이 유지됨). 메모리(830)는 프로세서(820)에 명령어들을 제공하기 위한 실행 또는 동작 메모리지만, 스토리지(860)는 일반적으로 "메모리"인 것으로 고려될 수 있다. 스토리지(860)는 비휘발성이지만, 메모리(830)는 휘발성 메모리를 포함할 수 있다(즉, 시스템(800)에 전력이 차단되면, 데이터의 값 또는 상태가 비결정이 됨).
주변 인터페이스(870)는 상기에 구체적으로 언급되지 않은 임의의 하드웨어 인터페이스를 포함할 수 있다. 주변기기들은 일반적으로 시스템(800)에 종속적으로 연결된 디바이스들을 의미한다. 종속 접속은, 동작이 실행되고, 사용자가 상호작용하는 소프트웨어 및/또는 하드웨어 플랫폼을 시스템(800)이 제공하는 것이다.
일 실시예에서, 시스템(800)은 스크램블 로직(880)을 포함한다. 스크램블 로직(880)은 전송을 위해 스크램블링된 신호를 생성하고 및/또는 수신된 신호를 언스크램블링하기 위한, 여기에 설명된 임의의 실시예에 따른 I/O 제어기 로직을 나타낸다. 스크램블 로직(880)은 스크램블링으로 디바이스-간 통신을 지원하는 시스템(800)의 구성요소들 중 임의의 것의 부분일 수 있다. 예를 들어, 메모리(832)는 스크램블링을 지원하는 상호접속을 통해 메모리 제어기(834)와 통신하도록 구성될 수 있다. 따라서, 양자의 디바이스는 스크램블링 로직(880)을 포함한다. 스크램블링 로직(880)은 선형-기반 기술로 스크램블링 코드를 생성하고, 하나 이상의 부가적인 스크램블링 동작으로 코드를 수정한다. 동작은 스크램블링 코드에 비선형 기술들을 적용하는 것, 스크램블링 코드에 DBI를 적용하는 것, 코드 중 일부는 이전과 같게 유지하면서 코드 중 다른 비트들은 갱신하도록 선택적인 스위칭을 적용하는 것, 또는 이들의 조합을 포함할 수 있지만, 이에 제한된 것은 아니다. 각각의 경우에, 최종 스크램블링 코드(즉, 수정된 스크램블링 코드)는 이전 주기의 스크램블링 코드에 비해, 생성된 스크램블링 코드의 50% 미만의 토글을 제공할 수 있다.
도 9는 향상된 스크램블링 코드로 스크램블링하는 것이 구현될 수 있는, 모바일 디바이스의 실시예에 대한 블록도이다. 디바이스(900)는 컴퓨팅 태블릿, 모바일 전화기 또는 스마트폰, 무선-가능 e-리더(e-reader), 착용가능 컴퓨팅 디바이스, 또는 다른 모바일 디바이스와 같은 모바일 컴퓨팅 디바이스를 나타낸다. 구성요소들 중 일부는 일반적으로 도시되고, 그러한 디바이스의 구성요소들 모두가 디바이스(900)에 도시되어 있지는 않는다는 점이 이해될 것이다.
디바이스(900)는 프로세서(910)를 포함하며, 프로세서는 디바이스(900)의 일차 처리 동작들을 수행한다. 프로세서(910)는 마이크로프로세서, 응용 프로그램 프로세서, 마이크로컨트롤러, 프로그래밍 가능 로직 디바이스, 또는 다른 처리 수단과 같은 하나 이상의 물리적인 디바이스들을 포함할 수 있다. 프로세서(910)에 의해 수행되는 처리 동작들은 응용 프로그램들 및/또는 디바이스 기능들이 실행되는 운영 플랫폼 또는 운영 체제의 실행을 포함한다. 처리 동작은 사람 사용자 또는 다른 디바이스와의 I/O(입력/출력)에 관련된 동작, 전력 관리에 관련된 동작, 및/또는 디바이스(900)를 또다른 디바이스에 접속시키는 것에 관련된 동작을 포함한다. 처리 동작은 또한 오디오 I/O 및/또는 디스플레이 I/O에 관한 동작을 포함할 수 있다.
일 실시예에서, 디바이스(900)는 컴퓨팅 디바이스에 오디오 기능을 제공하는 것에 연관된 하드웨어(예를 들어, 오디오 하드웨어 및 오디오 회로) 및 소프트웨어(예를 들어, 드라이버, 코덱) 구성요소를 나타내는 오디오 서브시스템(920)을 포함한다. 오디오 기능들은 마이크로폰 입력뿐만 아니라, 스피커 및/또는 헤드폰 출력을 포함할 수 있다. 그러한 기능들을 위한 디바이스들은 디바이스(900)에 통합되거나, 디바이스(900)에 접속될 수 있다. 일 실시예에서, 사용자는 프로세서(910)에 의해 수신되고 처리되는 오디오 커맨드들을 제공함으로써 디바이스(900)와 상호작용한다.
디스플레이 서브시스템(930)은 사용자가 컴퓨팅 디바이스와 상호작용하기 위해 시각 및/또는 촉각 디스플레이를 제공하는 하드웨어(예를 들어, 디스플레이 디바이스들) 및 소프트웨어(예를 들어, 드라이버들) 구성요소들을 나타낸다. 디스플레이 서브시스템(930)은 디스플레이 인터페이스(932)를 포함하며, 이 인터페이스는 디스플레이를 사용자에게 제공하기 위해 사용되는 특정 스크린 또는 하드웨어 디바이스를 포함한다. 일 실시예에서, 디스플레이 인터페이스(932)는 디스플레이에 관련된 적어도 일부 처리를 수행하기 위한, 프로세서(910)와 별개인 로직을 포함한다. 일 실시예에서, 디스플레이 서브시스템(930)은 출력 및 입력 둘 다를 사용자에게 제공하는 터치스크린 디바이스를 포함한다. 일 실시예에서, 디스플레이 서브시스템(930)은 출력을 사용자에게 제공하는 고선명(HD) 디스플레이를 포함한다. 고선명은 대략 100 PPI(인치 당 화소) 이상의 화소 밀도를 갖는 디스플레이를 의미할 수 있고, 풀 HD(예를 들어, 1080p), 레티나 디스플레이(retina display), 4K(초고선명 또는 UHD), 또는 다른 것들과 같은 형태를 포함할 수 있다.
I/O 제어기(940)는 사용자와의 상호작용과 관련된 하드웨어 디바이스들 및 소프트웨어 구성요소들을 나타낸다. I/O 제어기(940)는 오디오 서브시스템(920) 및/또는 디스플레이 서브시스템(930)의 부분인 하드웨어를 관리하도록 동작할 수 있다. 부가적으로, I/O 제어기(940)는 사용자가 시스템과 상호작용할 수 있는, 디바이스(900)에 접속된 부가적인 디바이스들에 대한 접속 지점을 예시한다. 예를 들어, 디바이스(900)에 부착될 수 있는 디바이스들은 마이크로폰 디바이스, 스피커 또는 스테레오 시스템, 비디오 시스템 또는 다른 디스플레이 디바이스, 키보드 또는 키패드 디바이스, 또는 카드 리더 또는 다른 디바이스와 같은 특정 응용으로 사용되기 위한 다른 I/O 디바이스를 포함할 수 있다.
상기 언급된 바와 같이, I/O 제어기(940)는 오디오 서브시스템(920) 및/또는 디스플레이 서브시스템(930)과 상호작용할 수 있다. 예를 들어, 마이크로폰 또는 다른 오디오 디바이스를 통한 입력은 디바이스(900)의 하나 이상의 응용 프로그램들 또는 기능들에 입력 또는 커맨드들을 제공할 수 있다. 부가적으로, 오디오 출력은 디스플레이 출력 대신에 또는 디스플레이 출력에 더하여 제공될 수 있다. 또다른 예에서, 디스플레이 서브시스템이 터치스크린을 포함하면, 디스플레이 디바이스는 또한 적어도 부분적으로 I/O 제어기(940)에 의해 관리될 수 있는 입력 디바이스로 동작한다. 또한 I/O 제어기(940)에 의해 관리되는 I/O 기능들을 제공하기 위한 부가적인 버튼들 또는 스위치들이 디바이스(900) 상에 있을 수 있다.
일 실시예에서, I/O 제어기(940)는 가속도계, 카메라, 광 감지기 또는 다른 환경 감지기, 자이로스코프, 위성 위치 확인 시스템(GPS), 또는 디바이스(900)에 포함될 수 있는 다른 하드웨어와 같은 디바이스들을 관리한다. 입력은 시스템의 동작에 영향을 주기 위한 직접적인 사용자 상호작용뿐만 아니라, 시스템에 환경적인 입력을 제공하는 부분(잡음을 필터링하는 것, 밝기 탐지를 위해 디스플레이를 조정하는 것, 카메라에 플래시를 적용하는 것, 또는 다른 특징들)일 수 있다. 일 실시예에서, 디바이스(900)는 배터리 전력 사용, 배터리의 충전, 및 절전 동작과 관련된 특징들을 관리하는 전력 관리(950)를 포함한다.
메모리 서브시스템(960)은 디바이스(900)에 정보를 저장하기 위한 메모리 디바이스(들)(962)를 포함한다. 메모리 서브시스템(960)은 비휘발성(메모리 디바이스에 전력이 차단되더라도, 상태가 변경되지 않음) 및/또는 휘발성(메모리 디바이스에 전력이 차단되면, 상태가 비결정이 됨) 메모리 디바이스들을 포함할 수 있다. 메모리(960)는 응용 프로그램 데이터, 사용자 데이터, 음악, 사진, 문서 또는 다른 데이터는 물론, 시스템(900)의 응용 프로그램들 및 기능들의 실행과 관련된 (장기적인지 또는 일시적인지에 관계없이) 시스템 데이터도 저장할 수 있다. 일 실시예에서, 메모리 서브시스템(960)은 메모리 제어기(964)(또한 시스템(900)의 제어부 부분으로 고려될 수 있고, 잠재적으로 프로세서(910)의 부분으로 고려될 수 있음)를 포함한다. 메모리 제어기(964)는 커맨드들을 생성하고 메모리 디바이스(962)에 발행하기 위해 스케줄러를 포함한다.
접속기(970)는 디바이스(900)가 외부 디바이스들과 통신할 수 있게 하기 위한 하드웨어 디바이스들(예를 들어, 무선 및/또는 유선 접속기들 및 통신 하드웨어) 및 소프트웨어 구성요소들(예를 들어, 드라이버들, 프로토콜 스택들)을 포함한다. 외부 디바이스는 다른 컴퓨팅 디바이스와 같은 개별적인 디바이스, 무선 액세스 포인트 또는 기지국뿐만 아니라 헤드셋, 포인터, 또는 다른 디바이스와 같은 주변기기일 수 있다.
접속기(970)는 다수의 상이한 유형들의 접속기를 포함할 수 있다. 일반화하기 위해, 디바이스(900)는 셀룰러 접속기(972) 및 무선 접속기(974)로 예시된다. 셀룰러 접속기(972)는 일반적으로 국제 무선 통신 시스템(global system for mobile communications, GSM) 또는 변형물 또는 파생물, 코드 분할 다중 액세스(code division multiple access, CDMA) 또는 변형물 또는 파생물, 시분할 다중화(time division multiplexing, TDM) 또는 변형물 또는 파생물, 롱 텀 에볼루션(long term evolution(LTE) - "4G"로도 불림), 또는 다른 셀룰러 서비스 표준들을 통해 제공되는 것과 같은, 무선 반송파들에 의해 제공되는 셀룰러 네트워크 접속기를 의미한다. 무선 접속기(974)는 셀룰러가 아닌 무선 접속기를 의미하고, (블루투스와 같은) 개인 영역 네트워크, (WiFi와 같은) 근거리 네트워크, 및/또는 (WiMax와 같은) 광대역 네트워크, 또는 다른 무선 통신을 포함할 수 있다. 무선 통신은 비고체 매체를 통한, 변조된 전자기 방사선의 사용을 통한 데이터의 전송을 의미한다. 유선 통신은 고체 통신 매체를 통해 일어난다.
주변 접속들(980)은 주변 접속들을 구성하기 위한 소프트웨어 구성요소들(예를 들어, 드라이버들, 프로토콜 스택들)뿐만 아니라, 하드웨어 인터페이스들 및 접속기들을 포함한다. 디바이스(900)는 다른 컴퓨팅 디바이스들에 대해서는 주변 디바이스("TO"(982))일 수 있는 것은 물론, 그에 접속된 주변 디바이스들("FROM"(984))을 가질 수도 있다는 것을 이해할 것이다. 디바이스(900)는 보통 디바이스(900) 상의 콘텐츠를 관리(예를 들어, 다운로딩 및/또는 업로딩, 변경, 동기화)하는 것과 같은 목적을 위해 다른 컴퓨팅 디바이스에 접속하기 위한 "도킹" 접속기를 갖는다. 부가적으로, 도킹 접속기는 디바이스(900)가, 예를 들어, 시청각 또는 다른 시스템들에 대한 콘텐츠 출력을 제어하는 것을 허용하는 특정 주변기기들에 디바이스(900)가 연결되는 것을 허용할 수 있다.
사유 도킹 접속기 또는 다른 사유 접속 하드웨어 이외에, 디바이스(900)는 공통 또는 표준-기반 접속기들을 통해 주변 접속들(980)을 구성할 수 있다. 공통 유형은 (다수의 상이한 하드웨어 인터페이스들 중 임의의 것을 포함할 수 있는) 범용 직렬 버스(USB) 접속기, 미니디스플레이포트(MiniDisplayPort, MDP)를 포함하는 디스플레이포트(DisplayPort), 고선명 멀티미디어 인터페이스(High Definition Multimedia Interface, HDMI), 파이어와이어(Firewire), 또는 다른 유형을 포함할 수 있다.
일 실시예에서, 시스템(900)은 스크램블 로직(912)을 포함한다. 스크램블 로직(912)은 전송을 위해 스크램블링된 신호를 생성하고 및/또는 수신된 신호를 언스크램블링하기 위한, 여기에 설명된 임의의 실시예에 따른 I/O 제어기 로직을 나타낸다. 스크램블 로직(912)은 스크램블링으로 디바이스-간 통신을 지원하는 시스템(900)의 구성요소들 중 임의의 것의 부분일 수 있다. 예를 들어, 메모리(962)는 스크램블링을 지원하는 상호접속을 통해 메모리 제어기(964)와 통신하도록 구성될 수 있다. 따라서, 양자의 디바이스는 스크램블링 로직(912)을 포함할 수 있다. 스크램블링 로직(912)은 선형-기반 기술로 스크램블링 코드를 생성하고, 하나 이상의 부가적인 스크램블링 동작으로 코드를 수정한다. 동작은 스크램블링 코드에 비선형 기술들을 적용하는 것, 스크램블링 코드에 DBI를 적용하는 것, 코드 중 일부는 이전과 같게 유지하면서 코드 중 다른 비트들은 갱신하도록 선택적인 스위칭을 적용하는 것, 또는 이들의 조합을 포함할 수 있지만, 이에 제한된 것은 아니다. 각각의 경우에, 최종 스크램블링 코드(즉, 수정된 스크램블링 코드)는 이전 주기의 스크램블링 코드에 비해, 생성된 스크램블링 코드의 50% 미만의 토글을 제공할 수 있다.
일 양태에서, 신호 스크램블링 방법은: X개 비트를 포함하는 선형 피드백 스크램블링 코드를 생성하는 단계; 이전 스크램블링된 출력에 비해 스크램블링된 출력 비트들 중 절반 미만이 토글링되게 하는 수정된 스크램블링 코드를 생성하도록 스크램블링 코드의 비트들을 선택적으로 변경하기 위해 제2 스크램블링 동작을 적용하는 단계; 및 출력을 생성하기 위해, 호스트 제어기와 메모리 디바이스 간에 교환할 탐지된 신호에 수정된 스크램블링 코드를 적용하는 단계를 포함한다.
일 실시예에서, 선형 피드백 스크램블링 코드를 생성하는 단계는: 신호에 대한 선형 피드백 시프트 레지스터(LFSR) 코드를 생성하는 단계를 포함한다. 일 실시예에서, 제2 스크램블링 동작을 적용하는 단계는: 비선형 스크램블링 동작을 적용하는 단계를 추가로 포함한다. 일 실시예에서, 비선형 스크램블링 동작을 적용하는 단계는: X개 비트 중 일부를 선택적으로 변경하도록 스크램블링 코드의 비트 리매핑을 수행하는 단계를 포함한다. 일 실시예에서, 제2 스크램블링 동작을 적용하는 단계는: 스크램블링 코드에 동적 버스 인버전(DBI)을 적용하는 단계를 추가로 포함한다. 일 실시예에서, 제2 스크램블링 동작을 적용하는 단계는: 스크램블링 코드의 선택된 비트들의 선택적인 스위칭을 적용하는 단계를 추가로 포함한다. 일 실시예에서, 선택된 비트의 선택적인 스위칭을 적용하는 단계는: 스크램블링 코드의 짝수 또는 홀수 레인들을 토글링하는 단계를 포함한다. 일 실시예에서, 스크램블링 코드에 제2 스크램블링 동작을 적용하는 단계는: 비선형 스크램블링 동작, 선형 스크램블링 출력의 선택된 비트들의 선택적인 스위칭, 및 DBI 중 2 이상의 조합을 적용하는 단계를 추가로 포함한다. 일 실시예에서, 스크램블링 코드에 제2 스크램블링 동작을 적용하는 단계는: 다수의 연속적인 수정된 스크램블링 코드를 생성하기 위해, 단일 스크램블링 코드에 하나 이상의 제2 스크램블링 동작을 연속적으로 적용하는 단계를 추가로 포함한다. 일 실시예에서, 탐지된 신호에 수정된 스크램블링 코드를 적용하는 단계는: 커맨드 및 주소 정보를 포함하는 탐지된 신호에 수정된 스크램블링 코드를 적용하는 단계를 포함한다. 일 실시예에서, 탐지된 신호에 수정된 스크램블링 코드를 적용하는 단계는: 스크램블링 코드의 N개 서브세트의 선택된 비트 조합으로부터 수정된 스크램블링 코드를 생성하여, 수정된 스크램블링 코드를 X 초과의 비트를 갖는 신호에 적용하기 위해, X-비트 스크램블링 코드를 X 미만의 비트를 각각 갖는 스크램블링 코드의 N개 서브세트로 분할하고, 스크램블링 코드의 N개 서브세트를 다수의 XOR 블록에 선택적으로 적용하는 단계를 추가로 포함한다. 일 실시예에서, X-비트 스크램블링 코드를 스크램블링 코드의 N개 서브세트로 분할하는 단계는: 스크램블링 코드를 X 초과의 비트를 갖는 신호에 적용하기 위해, X-비트 스크램블링 코드를 2개의 (X/2)-비트 스크램블링 코드로 분할하고, 2개의 (X/2)-비트 스크램블링 코드를 다수의 XOR 블록에 적용하는 단계를 추가로 포함한다. 일 실시예에서, 탐지된 신호에 수정된 스크램블링 코드를 적용하는 단계는: 스크램블링 코드를 탐지된 신호에 적용하기 위해, X-비트 스크램블링 코드를 X 미만의 비트를 각각 갖는 다수의 스크램블링 코드 세그먼트로 분할하고(2개 이상의 스크램블링 코드 세그먼트는 상이한 수의 비트를 가짐), 다수의 스크램블링 코드 세그먼트를 다수의 XOR 블록에 적용하는 단계를 추가로 포함한다. 일 실시예에서, 수정된 스크램블링 코드를 탐지된 신호에 적용하는 단계는: 스크램블링 코드의 N개 서브세트의 선택된 비트 조합으로부터 수정된 스크램블링 코드를 생성하여, 수정된 스크램블링 코드를 X 미만의 비트를 갖는 신호에 적용하기 위해, X-비트 스크램블링 코드를 X 미만의 비트를 각각 갖는 스크램블링 코드의 N개 서브세트로 분할하고, 스크램블링 코드의 N개 서브세트를 다수의 XOR 블록들에 선택적으로 적용하는 단계를 추가로 포함한다. 일 실시예에서, 메모리 디바이스는 비휘발성 메모리 디바이스를 포함한다. 일 실시예에서, 메모리 디바이스는 휘발성 메모리 디바이스를 포함한다. 일 실시예에서, 수정된 스크램블링 코드를 탐지된 신호에 적용하는 단계는: 호스트 제어기와 메모리 디바이스 간에 전송할 신호를 스크램블링하기 위해, 수정된 스크램블링 코드를 적용하는 단계를 포함한다. 일 실시예에서, 전송할 신호를 스크램블링하기 위해 수정된 스크램블링 코드를 적용하는 단계는: 호스트 제어기에 연결된 다수의 메모리 디바이스에 병렬로 전송될 신호를 스크램블링하기 위해 호스트 제어기에서 수정된 스크램블링 코드를 적용하는 단계를 포함한다. 일 실시예에서, 탐지된 신호에 수정된 스크램블링 코드를 적용하는 단계는: 호스트 제어기와 메모리 디바이스 간에 전송된 신호를 언스크램블링하기 위해 수정된 스크램블링 코드를 적용하는 단계를 포함한다.
일 양태에서, 스크램블러 회로는: X-비트 스크램블링 코드를 생성하기 위한 선형 피드백 시프트 레지스터(LFSR); 이전 스크램블링된 출력에 비해 스크램블링된 출력 비트들 중 절반 미만이 토글링되게 하는 수정된 스크램블링 코드를 생성하도록 X-비트 스크램블링 코드의 비트들을 선택적으로 토글링하기 위한 스크램블링 로직 블록; 및 수신 디바이스에 출력할 Z-비트 전송 신호를 스크램블링하기 위해 수정된 스크램블링 코드를 적용하기 위한 신호 조합 회로를 포함한다(Z는 X 이상임).
일 실시예에서, 스크램블링 로직 블록은 비선형 스크램블링 동작을 적용하기 위한 것이다. 일 실시예에서, 스크램블링 로직 블록은 X개 비트들 중 일부를 선택적으로 변경하기 위해 스크램블링 코드의 비트 리매핑을 수행하기 위한 것이다. 일 실시예에서, 스크램블링 로직 블록은 스크램블링 코드에 동적 버스 인버전(DBI)을 적용하기 위한 것이다. 일 실시예에서, 스크램블링 로직 블록은 스크램블링 코드의 선택된 비트의 선택적인 스위칭을 적용하기 위한 것이다. 일 실시예에서, 스크램블링 로직 블록은 스크램블링 코드의 홀수 또는 짝수 레인을 토글링하기 위한 것이다. 일 실시예에서, 스크램블링 로직 블록은 비선형 스크램블링 동작, 선형 스크램블링 출력의 선택된 비트의 선택적인 스위칭, 및 DBI 중 2 이상의 조합을 적용하기 위한 것이다. 일 실시예에서, 스크램블링 로직 블록은 다수의 연속적인 수정된 스크램블링 코드를 생성하기 위해 단일 스크램블링 코드에 하나 이상의 제2 스크램블링 동작을 연속적으로 적용하기 위한 것이다. 일 실시예에서, 스크램블링 로직 블록은 커맨드 및 주소 정보를 포함하는 신호에 수정된 스크램블링 코드를 적용하기 위한 것이다. 일 실시예에서, Z는 X를 초과하고, 신호 조합 회로는 스크램블링 코드의 N개 서브세트의 선택된 비트 조합으로부터 수정된 스크램블링 코드를 생성하여, 수정된 스크램블링 코드를 X 초과의 비트를 갖는 신호에 적용하기 위해, X-비트 스크램블링 코드를 X 미만의 비트를 각각 갖는 스크램블링 코드의 N개 서브세트로 분할하고, 스크램블링 코드의 N개 서브세트를 다수의 XOR 블록들에 선택적으로 적용함으로써, 수정된 스크램블링 코드를 적용하기 위한 것이다. 일 실시예에서, 신호 조합 회로는 스크램블링 코드를 X 초과의 비트를 갖는 신호에 적용하기 위해, X-비트 스크램블링 코드를 2개의 (X/2)-비트 스크램블링 코드로 분할하고, 2개의 (X/2)-비트 스크램블링 코드를 다수의 XOR 블록에 적용함으로써, 수정된 스크램블링 코드를 적용하기 위한 것이다. 일 실시예에서, 신호 조합 회로는 스크램블링 코드를 출력 신호에 적용하기 위해, X-비트 스크램블링 코드를 X 미만의 비트를 각각 갖는 다수의 스크램블링 코드 세그먼트로 분할하고(2개 이상의 스크램블링 코드 세그먼트는 상이한 수의 비트를 가짐), 다수의 스크램블링 코드 세그먼트를 다수의 XOR 블록에 적용함으로써, 수정된 스크램블링 코드를 적용하기 위한 것이다. 일 실시예에서, Z는 X 미만이고, 신호 조합 회로는 스크램블링 코드의 N개 서브세트의 선택된 비트 조합으로부터 수정된 스크램블링 코드를 생성하여, 수정된 스크램블링 코드를 X 미만의 비트를 갖는 신호에 적용하기 위해, X-비트 스크램블링 코드를 X 미만의 비트를 각각 갖는 스크램블링 코드의 N개 서브세트로 분할하고, 스크램블링 코드의 N개 서브세트를 다수의 XOR 블록들에 선택적으로 적용함으로써 수정된 스크램블링 코드를 적용하기 위한 것이다. 일 실시예에서, 메모리 디바이스는 비휘발성 메모리 디바이스를 포함한다. 일 실시예에서, 메모리 디바이스는 휘발성 메모리 디바이스를 포함한다. 일 실시예에서, 신호 조합 회로는 호스트 제어기와 메모리 디바이스 간에 전송할 신호를 스크램블링하도록, 수정된 스크램블링 코드를 적용하는 것을 포함하는, 수정된 스크램블링 코드를 적용하기 위한 것이다. 일 실시예에서, 신호 조합 회로는 호스트 제어기에 연결된 다수의 메모리 디바이스에 병렬로 전송될 신호를 스크램블링하기 위해, 호스트 제어기에서 수정된 스크램블링 코드를 적용하는 것을 포함하는, 수정된 스크램블링 코드를 적용하기 위한 것이다. 일 실시예에서, 신호 조합 회로는 메모리 디바이스에서 메모리 제어기로 전송될 신호를 스크램블링하기 위해 수정된 스크램블링 코드를 적용하는 것을 포함하는, 수정된 스크램블링 코드를 적용하기 위한 것이다.
일 양태에서, 디스크램블러 회로는: X-비트 스크램블링 코드를 생성하기 위한 선형 피드백 시프트 레지스터(LFSR); 이전 스크램블링된 출력에 비해 스크램블링된 출력 비트들 중 절반 미만이 토글링되게 하는 수정된 스크램블링 코드를 생성하도록 스크램블링 코드의 비트들을 선택적으로 토글링하기 위한 스크램블링 로직 블록; 및 전송 디바이스로부터 수신한 Z-비트 수신 신호를 언스크램블링하기 위해 수정된 스크램블링 코드를 적용하기 위한 신호 조합 회로를 포함한다(Z는 X 이상임).
일 실시예에서, 스크램블링 로직 블록은 비선형 스크램블링 동작을 적용하기 위한 것이다. 일 실시예에서, 스크램블링 로직 블록은 X개 비트들 중 일부를 선택적으로 변경하기 위해 스크램블링 코드의 비트 리매핑을 수행하기 위한 것이다. 일 실시예에서, 스크램블링 로직 블록은 스크램블링 코드에 동적 버스 인버전(DBI)을 적용하기 위한 것이다. 일 실시예에서, 스크램블링 로직 블록은 스크램블링 코드의 선택된 비트의 선택적인 스위칭을 적용하기 위한 것이다. 일 실시예에서, 스크램블링 로직 블록은 스크램블링 코드의 홀수 또는 짝수 레인을 토글링하기 위한 것이다. 일 실시예에서, 스크램블링 로직 블록은 비선형 스크램블링 동작, 선형 스크램블링 출력의 선택된 비트의 선택적인 스위칭, 및 DBI 중 2 이상의 조합을 적용하기 위한 것이다. 일 실시예에서, 스크램블링 로직 블록은 다수의 연속적인 수정된 스크램블링 코드를 생성하기 위해, 단일 스크램블링 코드에 하나 이상의 제2 스크램블링 동작을 연속적으로 적용하기 위한 것이다. 일 실시예에서, 스크램블링 로직 블록은 커맨드 및 주소 정보를 포함하는 신호에 수정된 스크램블링 코드를 적용하기 위한 것이다. 일 실시예에서, Z는 X를 초과하고, 신호 조합 회로는 스크램블링 코드의 N개 서브세트의 선택된 비트 조합으로부터 수정된 스크램블링 코드를 생성하여 수정된 스크램블링 코드를 X 초과의 비트를 갖는 신호에 적용하기 위해, X-비트 스크램블링 코드를 X 미만의 비트를 각각 갖는 스크램블링 코드의 N개 서브세트로 분할하고, 스크램블링 코드의 N개 서브세트를 다수의 XOR 블록들에 선택적으로 적용함으로써, 수정된 스크램블링 코드를 적용하기 위한 것이다. 일 실시예에서, 신호 조합 회로는 스크램블링 코드를 X 초과의 비트를 갖는 신호에 적용하기 위해, X-비트 스크램블링 코드를 2개의 (X/2)-비트 스크램블링 코드로 분할하고, 2개의 (X/2)-비트 스크램블링 코드를 다수의 XOR 블록에 적용함으로써, 수정된 스크램블링 코드를 적용하기 위한 것이다. 일 실시예에서, 신호 조합 회로는 스크램블링 코드를 수신된 신호에 적용하기 위해, X-비트 스크램블링 코드를 X 미만의 비트를 각각 갖는 다수의 스크램블링 코드 세그먼트로 분할하고(2개 이상의 스크램블링 코드 세그먼트는 상이한 수의 비트를 가짐), 다수의 스크램블링 코드 세그먼트를 다수의 XOR 블록에 적용함으로써, 수정된 스크램블링 코드를 적용하기 위한 것이다. 일 실시예에서, Z는 X 미만이고, 신호 조합 회로는 스크램블링 코드의 N개 서브세트의 선택된 비트 조합으로부터 수정된 스크램블링 코드를 생성하여 수정된 스크램블링 코드를 X 미만의 비트를 갖는 신호에 적용하기 위해, X-비트 스크램블링 코드를 X 미만의 비트를 각각 갖는 스크램블링 코드의 N개 서브세트로 분할하고, 스크램블링 코드의 N개 서브세트를 다수의 XOR 블록들에 선택적으로 적용함으로써 수정된 스크램블링 코드를 적용하기 위한 것이다. 일 실시예에서, 메모리 디바이스는 비휘발성 메모리 디바이스를 포함한다. 일 실시예에서, 메모리 디바이스는 휘발성 메모리 디바이스를 포함한다. 일 실시예에서, 신호 조합 회로는 호스트 제어기와 메모리 디바이스 간에 교환된 수신된 신호를 언스크램블링하도록, 수정된 스크램블링 코드를 적용하는 것을 포함하는, 수정된 스크램블링 코드를 적용하기 위한 것이다. 일 실시예에서, 신호 조합 회로는 메모리 디바이스에서 스크램블링된 수신된 신호를 언스크램블링하기 위해 호스트 제어기에서 수정된 스크램블링 코드를 적용하는 것을 포함하는, 수정된 스크램블링 코드를 적용하기 위한 것이다. 일 실시예에서, 신호 조합 회로는 메모리 디바이스에서 수신된 신호를 언스크램블링하기 위해 수정된 스크램블링 코드를 적용하는 것을 포함하는, 수정된 스크램블링 코드를 적용하기 위한 것이다.
일 양태에서, 메모리 서브시스템을 갖는 전자 디바이스는: 스크램블러 회로를 갖는 메모리 제어기(이 스크램블러 회로는 메모리 제어기에서 X-비트 스크램블링 코드를 생성하기 위한 선형 피드백 시프트 레지스터(LFSR); 스크램블러 회로로부터의 이전 스크램블링된 출력에 비해 스크램블링된 출력 비트의 절반 미만이 토글링되게 하는 수정된 스크램블링 코드를 생성하도록 스크램블링 코드의 비트들을 선택적으로 토글링하기 위한 스크램블링 로직 블록; 및 메모리 디바이스에 출력할 Z-비트 전송 신호를 스크램블링하기 위해 수정된 스크램블링 코드를 적용하기 위한 신호 조합 회로(Z는 X 이상임)를 포함함); 메모리 제어기에 연결된 입력/출력(I/O) 인터페이스; I/O 인터페이스를 통해 메모리 제어기에 연결된 메모리 디바이스(메모리 디바이스는 스크램블러 회로를 갖고, 이 스크램블러 회로는 메모리 디바이스에서 X-비트 스크램블링 코드를 생성하기 위한 선형 피드백 시프트 레지스터(LFSR); 이전 스크램블링된 출력에 비해 스크램블링된 출력 비트의 절반 미만이 토글링되게 하는 수정된 스크램블링 코드를 생성하도록 X-비트 스크램블링 코드의 비트들을 선택적으로 토글링하기 위한 스크램블링 로직 블록; 및 메모리 제어기로부터 수신한 Z-비트 수신 신호를 언스크램블링하기 위해 수정된 스크램블링 코드를 적용하기 위한 신호 조합 회로를 포함함); 및 메모리 디바이스로부터 액세스된 데이터에 기초하여 디스플레이를 생성하기 위해 연결된 터치스크린 디스플레이를 포함한다. 스크램블러를 참조하여 설명된 임의의 실시예는 전자 디바이스에 적용될 수 있다. 디스크램블러를 참조하여 설명된 임의의 실시예는 전자 디바이스에 적용될 수 있다.
일 양태에서, 콘텐츠를 저장하는 컴퓨터 판독가능 저장 매체를 포함하는 제조 물품은, 액세스될 때, 컴퓨팅 디바이스로 하여금 신호 스크램블링을 위한 동작을 수행하게 하고, 이 동작은 X개 비트를 포함하는 선형 피드백 스크램블링 코드를 생성하는 것; 이전 스크램블링된 출력에 비해 스크램블링된 출력 비트의 절반 미만이 토글링되게 하는 수정된 스크램블링 코드를 생성하도록 스크램블링 코드의 비트들을 선택적으로 변경하도록 제2 스크램블링 동작을 적용하는 것; 및 출력을 생성하도록, 호스트 제어기와 메모리 디바이스 간에 교환될 탐지된 신호에 수정된 스크램블링 코드를 적용하는 것을 포함한다. 신호 스크램블링 방법을 참조하여 설명된 임의의 실시예가 또한 제조 물품에 적용될 수 있다.
일 양태에서, 신호 스크램블링을 위한 장치는: X개 비트를 포함하는 선형 피드백 스크램블링 코드를 생성하기 위한 수단; 이전 스크램블링된 출력에 비해 스크램블링된 출력 비트의 절반 미만이 토글링되게 하는 수정된 스크램블링 코드를 생성하기 위해 스크램블링 코드의 비트들을 선택적으로 변경하도록 제2 스크램블링 동작을 적용하기 위한 수단; 및 출력을 생성하도록, 호스트 제어기와 메모리 디바이스 간에 교환될 탐지된 신호에 수정된 스크램블링 코드를 적용하기 위한 수단을 포함한다. 신호 스크램블링 방법을 참조하여 설명된 임의의 실시예가 또한 이 장치에 적용될 수 있다.
여기에 나타낸 순서도는 일련의 다양한 처리 동작의 예들을 제공한다. 순서도는 소프트웨어 또는 펌웨어 루틴에 의해 실행되는 동작들뿐만 아니라 물리적인 동작들을 나타낼 수 있다. 일 실시예에서, 순서도는 하드웨어 및/또는 소프트웨어에 구현될 수 있는 유한 상태 머신(finite state machine, FSM)의 상태를 나타낼 수 있다. 특정한 시퀀스 또는 순서로 나타나있지만, 이와 달리 특정되지 않는 한, 동작의 순서는 수정될 수 있다. 따라서, 나타낸 실시예들은 단지 예로서 이해되어야 하며, 처리는 다른 순서로 수행될 수 있고, 일부 동작들은 병렬로 수행될 수 있다. 부가적으로, 다양한 실시예에서 하나 이상의 동작이 생략될 수 있으며; 따라서, 모든 실시예에서 모든 동작들이 요구되는 것은 아니다. 다른 처리 흐름도 가능하다.
다양한 동작들 또는 기능들이 본 명세서에서 설명되는 범위에 대해, 이들은 소프트웨어 코드, 명령어들, 구성들 및/또는 데이터로서 기술되거나 정의될 수 있다. 콘텐츠는 직접 실행가능한("객체" 또는 "실행가능(executable)" 형태) 소스 코드, 또는 차이 코드("델타" 또는 "패치(patch)" 코드)일 수 있다. 본 명세서에 설명된 실시예들의 소프트웨어 콘텐츠는 그 상에 콘텐츠가 저장된 제조 물품을 통해, 또는 통신 인터페이스를 통해 데이터를 통신하는 통신 인터페이스의 동작 방법을 통해 전달될 수 있다. 머신 판독가능 저장 매체는 머신이 설명된 기능들 또는 동작들을 수행하게 할 수 있고, 기록가능한/기록가능하지 않은 매체(예를 들어, 판독 전용 메모리(ROM)(read only memory), 랜덤 액세스 메모리(RAM)(random access memory), 자기 디스크 저장 매체, 광학 저장 매체, 플래시 메모리 디바이스들 등)와 같이, 머신(예를 들어, 컴퓨팅 디바이스, 전자 시스템 등)에 의해 액세스 가능한 형태로 정보를 저장하는 임의의 메커니즘을 포함한다. 통신 인터페이스는, 메모리 버스 인터페이스, 프로세서 버스 인터페이스, 인터넷 접속, 디스크 제어기 등과 같은, 또다른 디바이스에 통신하는 하드와이어링된 매체, 무선 매체, 광학 매체 등 중 임의의 것에 인터페이스하는 임의의 메커니즘을 포함한다. 통신 인터페이스는 소프트웨어 콘텐츠를 기술하는 데이터 신호를 제공하는 통신 인터페이스를 준비하기 위해 구성 파라미터들을 제공하고 그리고/또는 신호들을 송신함으로써 구성된다. 통신 인터페이스는 통신 인터페이스에 송신된 하나 이상의 커맨드들 또는 신호들을 통해 액세스될 수 있다.
본 명세서에 설명된 다양한 컴포넌트들은 설명된 동작들 또는 기능들을 수행하기 위한 수단일 수 있다. 본 명세서에 설명된 각각의 컴포넌트는 소프트웨어, 하드웨어,또는 이들의 조합을 포함한다. 컴포넌트들은 소프트웨어 모듈들, 하드웨어 모듈들, 특수-목적 하드웨어(예를 들어, 주문형 하드웨어, 주문형 집적 회로(ASIC)(application specific integrated circuit), 디지털 신호 프로세서(DSP) 등), 임베디드 제어기들, 하드와이어링된 회로 등으로서 구현될 수 있다.
본원에 설명되는 것 외에, 다양한 수정들은 범위로부터 벗어나는 것 없이 본 발명의 개시된 실시예들 및 구현들에 이루어질 수 있다. 따라서, 본 명세서에서의 예시들 및 예들은 제한적 의미가 아니라 예시적 의미로 해석되어야 한다. 발명의 범위는 후속하는 청구항들만을 참조함으로써 측정되어야 한다.

Claims (25)

  1. 신호 스크램블링 방법으로서,
    시드 신호(seed signal)에 기초하여 선형 피드백 스크램블링 코드를 생성하는 단계 - 상기 선형 피드백 스크램블링 코드는 X개 비트를 포함함 -;
    상기 시드 신호에 비하여 스크램블링된 출력 비트들 중 절반 미만이 토글링되게(toggled) 하는 수정된 스크램블링 코드를 생성하도록 상기 선형 피드백 스크램블링 코드의 비트들을 선택적으로 변경하는 제2 스크램블링 동작을 적용하는 단계; 및
    상기 수정된 스크램블링 코드로, 호스트 제어기와 메모리 디바이스 간의 교환을 위한 탐지된 신호(detected signal)를 처리하는 단계
    를 포함하고,
    상기 수정된 스크램블링 코드로 상기 탐지된 신호를 처리하는 단계는, 상기 호스트 제어기와 상기 메모리 디바이스 간에 전송된 상기 탐지된 신호를 언스크램블링(unscrambling)하거나, 상기 호스트 제어기와 상기 메모리 디바이스 간에 전송할 상기 탐지된 신호를 스크램블링하는 것인, 신호 스크램블링 방법.
  2. 제1항에 있어서,
    상기 선형 피드백 스크램블링 코드를 생성하는 단계는:
    상기 탐지된 신호에 대한 선형 피드백 시프트 레지스터(linear feedback shift register, LFSR) 코드를 생성하는 단계를 포함하는, 방법.
  3. 제1항에 있어서,
    상기 제2 스크램블링 동작을 적용하는 단계는:
    비선형 스크램블링 동작을 적용하는 단계를 추가로 포함하는, 방법.
  4. 제3항에 있어서,
    상기 비선형 스크램블링 동작을 적용하는 단계는:
    상기 X개 비트 중 일부를 선택적으로 변경하도록 상기 선형 피드백 스크램블링 코드의 비트 리매핑(remapping)을 수행하는 단계를 포함하는, 방법.
  5. 제1항에 있어서,
    상기 제2 스크램블링 동작을 적용하는 단계는:
    상기 선형 피드백 스크램블링 코드에 동적 버스 인버전(dynamic bus inversion, DBI)을 적용하는 단계를 추가로 포함하는, 방법.
  6. 제1항에 있어서,
    상기 제2 스크램블링 동작을 적용하는 단계는:
    상기 선형 피드백 스크램블링 코드의 선택된 비트들의 선택적인 스위칭을 적용하는 단계를 추가로 포함하는, 방법.
  7. 제6항에 있어서,
    상기 선택된 비트들의 선택적인 스위칭을 적용하는 단계는:
    상기 선형 피드백 스크램블링 코드의 짝수 또는 홀수 레인들을 토글링하는 단계를 포함하는, 방법.
  8. 제1항에 있어서,
    상기 선형 피드백 스크램블링 코드에 상기 제2 스크램블링 동작을 적용하는 단계는:
    비선형 스크램블링 동작, 선형 스크램블링 출력의 선택된 비트들의 선택적인 스위칭, 및 DBI 중 2 이상의 조합을 적용하는 단계를 추가로 포함하는, 방법.
  9. 제1항에 있어서,
    상기 선형 피드백 스크램블링 코드에 상기 제2 스크램블링 동작을 적용하는 단계는:
    다수의 연속적인 수정된 스크램블링 코드를 생성하기 위해, 단일 스크램블링 코드에 하나 이상의 제2 스크램블링 동작을 연속적으로 적용하는 단계를 추가로 포함하는, 방법.
  10. 제1항에 있어서,
    상기 수정된 스크램블링 코드로 상기 탐지된 신호를 처리하는 단계는:
    커맨드 및 주소 정보를 포함하는 탐지된 신호에 상기 수정된 스크램블링 코드를 적용하는 단계를 포함하는, 방법.
  11. 제1항에 있어서,
    상기 탐지된 신호에 상기 수정된 스크램블링 코드를 적용하는 단계는:
    상기 수정된 스크램블링 코드를 X개 보다 많은 비트를 갖는 신호에 적용하기 위해, 상기 선형 피드백 스크램블링 코드를 각각 X개 보다 적은 비트를 갖는 스크램블링 코드들의 N개 서브세트로 분할하고, 상기 N개 서브세트의 선택된 비트 조합으로부터 수정된 스크램블링 코드를 생성하도록 상기 스크램블링 코드들의 N개 서브세트를 다수의 XOR 블록에 선택적으로 적용하는 단계를 추가로 포함하는, 방법.
  12. 제11항에 있어서,
    상기 선형 피드백 스크램블링 코드를 스크램블링 코드들의 N개 서브세트로 분할하는 단계는:
    상기 선형 피드백 스크램블링 코드를 X개 보다 많은 비트를 갖는 신호에 적용하기 위해, 상기 선형 피드백 스크램블링 코드를 2개의 (X/2)-비트 스크램블링 코드로 분할하고, 상기 2개의 (X/2)-비트 스크램블링 코드를 다수의 XOR 블록에 적용하는 단계를 추가로 포함하는, 방법.
  13. 제1항에 있어서,
    상기 메모리 디바이스는 비휘발성 메모리 디바이스를 포함하는, 방법.
  14. 삭제
  15. 제1항에 있어서, 전송할 상기 탐지된 신호를 스크램블링하기 위해 상기 수정된 스크램블링 코드로 상기 탐지된 신호를 처리하는 단계는:
    상기 호스트 제어기에 연결된 다수의 메모리 디바이스에 병렬로 전송할 상기 탐지된 신호를 스크램블링하기 위해 상기 호스트 제어기에서 상기 수정된 스크램블링 코드를 적용하는 단계를 포함하는, 방법.
  16. 삭제
  17. 스크램블러 회로로서,
    시드 신호에 기초하여 X-비트 스크램블링 코드를 생성하기 위한 선형 피드백 시프트 레지스터(LFSR);
    상기 시드 신호에 비하여 스크램블링된 출력 비트들 중 절반 미만이 토글링되게 하는 수정된 스크램블링 코드를 생성하도록 상기 X-비트 스크램블링 코드의 비트들을 선택적으로 토글링하기 위한 스크램블링 로직 블록(scrambling logic block); 및
    수신 디바이스에 출력할 Z-비트 전송 신호를 스크램블링하기 위해 상기 수정된 스크램블링 코드를 적용하기 위한 신호 조합 회로(Z는 X 이상임)
    를 포함하는, 스크램블러 회로.
  18. 제17항에 있어서,
    상기 스크램블링 로직 블록은, 상기 X-비트 스크램블링 코드에 비선형 스크램블링 동작을 적용하거나, 상기 X-비트 스크램블링 코드에 동적 버스 인버전(DBI)을 적용하거나, 상기 X-비트 스크램블링 코드의 선택된 비트들의 선택적인 스위칭을 적용하거나, 상기 X-비트 스크램블링 코드에 이들의 조합을 적용하는, 스크램블러 회로.
  19. 제17항에 있어서,
    Z는 X보다 크고, 상기 신호 조합 회로는
    상기 수정된 스크램블링 코드를 X개 보다 많은 비트를 갖는 신호에 적용하기 위해, 상기 X-비트 스크램블링 코드를 각각 X개 보다 적은 비트를 갖는 스크램블링 코드들의 N개 서브세트로 분할하고, 상기 N개 서브세트의 선택된 비트 조합으로부터 수정된 스크램블링 코드를 생성하도록 상기 스크램블링 코드들의 N개 서브세트를 다수의 XOR 블록들에 선택적으로 적용함으로써, 상기 수정된 스크램블링 코드를 적용하는, 스크램블러 회로.
  20. 디스크램블러 회로로서,
    시드 신호에 기초하여 X-비트 스크램블링 코드를 생성하기 위한 선형 피드백 시프트 레지스터(LFSR);
    상기 시드 신호에 비하여 스크램블링된 출력 비트들 중 절반 미만이 토글링되게 하는 수정된 스크램블링 코드를 생성하도록 상기 X-비트 스크램블링 코드의 비트들을 선택적으로 토글링하기 위한 스크램블링 로직 블록; 및
    전송 디바이스로부터 수신한 Z-비트 수신 신호를 언스크램블링하기 위해 상기 수정된 스크램블링 코드를 적용하기 위한 신호 조합 회로(Z는 X 이상임)
    를 포함하는, 디스크램블러 회로.
  21. 제20항에 있어서,
    상기 스크램블링 로직 블록은, 상기 X-비트 스크램블링 코드에 비선형 스크램블링 동작을 적용하거나, 상기 X-비트 스크램블링 코드에 동적 버스 인버전(DBI)을 적용하거나, 상기 X-비트 스크램블링 코드의 선택된 비트들의 선택적인 스위칭을 적용하거나, 상기 X-비트 스크램블링 코드에 이들의 조합을 적용하는, 디스크램블러 회로.
  22. 제20항에 있어서,
    Z는 X보다 크고, 상기 신호 조합 회로는
    상기 수정된 스크램블링 코드를 X개 보다 많은 비트를 갖는 신호에 적용하기 위해, 상기 X-비트 스크램블링 코드를 각각 X개 보다 적은 비트를 갖는 스크램블링 코드들의 N개 서브세트로 분할하고, 상기 N개 서브세트의 선택된 비트 조합으로부터 수정된 스크램블링 코드를 생성하도록 상기 스크램블링 코드들의 N개 서브세트를 다수의 XOR 블록들에 선택적으로 적용함으로써, 상기 수정된 스크램블링 코드를 적용하는, 디스크램블러 회로.
  23. 메모리 서브시스템을 갖는 전자 디바이스로서,
    스크램블러 회로를 갖는 메모리 제어기 - 상기 스크램블러 회로는,
    상기 메모리 제어기에서 시드 신호에 기초하여 X-비트 스크램블링 코드를 생성하기 위한 선형 피드백 시프트 레지스터(LFSR);
    상기 시드 신호에 비하여 스크램블링된 출력 비트의 절반 미만이 토글링되게 하는 수정된 스크램블링 코드를 생성하도록 상기 X-비트 스크램블링 코드의 비트들을 선택적으로 토글링하기 위한 스크램블링 로직 블록; 및
    메모리 디바이스에 출력할 Z-비트 전송 신호를 스크램블링하기 위해 상기 수정된 스크램블링 코드를 적용하기 위한 신호 조합 회로(Z는 X 이상임)
    를 포함함 -;
    상기 메모리 제어기에 연결된 입력/출력(I/O) 인터페이스;
    상기 I/O 인터페이스를 통해 상기 메모리 제어기에 연결된 메모리 디바이스; 및
    상기 메모리 디바이스로부터 액세스된 데이터에 기초하여 디스플레이를 생성하도록 연결된 터치스크린 디스플레이
    를 포함하고, 상기 메모리 디바이스는 디스크램블러 회로를 갖고, 상기 디스크램블러 회로는,
    상기 메모리 디바이스에서 시드 신호에 기초하여 X-비트 스크램블링 코드를 생성하기 위한 선형 피드백 시프트 레지스터(LFSR);
    상기 시드 신호에 비하여 상기 스크램블링된 출력 비트의 절반 미만이 토글링되게 하는 수정된 스크램블링 코드를 생성하도록 상기 X-비트 스크램블링 코드의 비트들을 선택적으로 토글링하기 위한 스크램블링 로직 블록; 및
    상기 메모리 제어기로부터 수신한 Z-비트 수신 신호를 언스크램블링하기 위해 상기 수정된 스크램블링 코드를 적용하기 위한 신호 조합 회로
    를 포함하는, 전자 디바이스.
  24. 제23항에 있어서,
    상기 스크램블러 회로 및 상기 디스크램블러 회로 양쪽의 상기 스크램블링 로직 블록들은, 상기 X-비트 스크램블링 코드에 비선형 스크램블링 동작을 적용하거나, 상기 X-비트 스크램블링 코드에 동적 버스 인버전(DBI)을 적용하거나, 상기 X-비트 스크램블링 코드의 선택된 비트들의 선택적인 스위칭을 적용하거나, 상기 X-비트 스크램블링 코드에 이들의 조합을 적용하는, 전자 디바이스.
  25. 제23항에 있어서,
    상기 스크램블러 회로 및 상기 디스크램블러 회로 양쪽의 상기 스크램블링 로직 블록들은 다수의 연속적인 수정된 스크램블링 코드를 생성하기 위해, 단일 스크램블링 코드에 하나 이상의 제2 스크램블링 동작을 연속적으로 적용하는, 전자 디바이스.
KR1020177014386A 2014-12-27 2015-11-23 향상된 신호 무결성을 갖는 저-전력 스크램블링 KR102512361B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US14/583,623 US9792246B2 (en) 2014-12-27 2014-12-27 Lower-power scrambling with improved signal integrity
US14/583,623 2014-12-27
PCT/US2015/062220 WO2016105783A1 (en) 2014-12-27 2015-11-23 Lower-power scrambling with improved signal integrity

Publications (2)

Publication Number Publication Date
KR20170098804A KR20170098804A (ko) 2017-08-30
KR102512361B1 true KR102512361B1 (ko) 2023-03-22

Family

ID=56151335

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020177014386A KR102512361B1 (ko) 2014-12-27 2015-11-23 향상된 신호 무결성을 갖는 저-전력 스크램블링

Country Status (6)

Country Link
US (1) US9792246B2 (ko)
EP (1) EP3238345B1 (ko)
KR (1) KR102512361B1 (ko)
CN (1) CN107003963B (ko)
TW (1) TWI579703B (ko)
WO (1) WO2016105783A1 (ko)

Families Citing this family (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10331586B2 (en) * 2015-10-30 2019-06-25 Samsung Electronics Co., Ltd. Nonvolatile memory device for providing fast booting and system including the same
US10373657B2 (en) 2016-08-10 2019-08-06 Micron Technology, Inc. Semiconductor layered device with data bus
CN107547162B (zh) * 2017-09-22 2019-02-26 上海航天测控通信研究所 一种抗空间单粒子翻转的并行加扰方法
KR102452621B1 (ko) * 2018-06-04 2022-10-07 삼성전자주식회사 선형 피드백 쉬프트 레지스터를 이용하여 데이터를 복구하는 장치 및 이를 포함하는 데이터 송수신 시스템
CN113853588A (zh) * 2019-05-21 2021-12-28 美光科技公司 用于非易失性存储器的总线加密
CN111238463B (zh) * 2020-01-19 2021-10-29 湖北三江航天红峰控制有限公司 一种基于随机序列数字闭环光纤陀螺的调制方法及装置
CN113468518A (zh) * 2020-03-30 2021-10-01 瑞昱半导体股份有限公司 用于针对非易失性存储器进行信息保护的方法和设备
KR102208497B1 (ko) * 2020-07-01 2021-01-27 주식회사 파두 메모리 컨트롤러 및 이를 포함하는 스토리지 디바이스
US11782715B2 (en) 2021-01-21 2023-10-10 Semiconductor Components Industries, Llc Methods and apparatus for reordering signals
CN113115113B (zh) * 2021-03-17 2023-05-09 Tcl华星光电技术有限公司 扰码装置及扰码方法
US20220366090A1 (en) * 2021-05-17 2022-11-17 Semiconductor Components Industries, Llc Secure serial bus with automotive applications
US11720516B2 (en) 2021-08-15 2023-08-08 Apple Inc. Methods for data bus inversion
US20230195561A1 (en) * 2021-12-20 2023-06-22 Nvidia Corporation Techniques for data scrambling on a memory interface
WO2023122445A1 (en) * 2021-12-20 2023-06-29 Nvidia Corporation Techniques for data scrambling on a memory interface
US11836107B2 (en) 2022-03-01 2023-12-05 Apple Inc. Power consumption control based on random bus inversion
US11777770B1 (en) 2022-04-22 2023-10-03 Microsoft Technology Licensing, Llc Dynamic shift in outputs of serial and parallel scramblers and descramblers

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20130101111A1 (en) 2011-10-20 2013-04-25 Sandisk Technologies Inc. Method for scrambling shaped data
US20150187441A1 (en) 2013-12-30 2015-07-02 Qualcomm Incorporated Data pattern generation for i/o testing of multilevel interfaces

Family Cites Families (51)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS5818832B2 (ja) * 1975-10-02 1983-04-14 パイオニア株式会社 映像信号伝送におけるスクランブル装置
US5412665A (en) 1992-01-10 1995-05-02 International Business Machines Corporation Parallel operation linear feedback shift register
US6389138B1 (en) * 1998-11-12 2002-05-14 Lucent Technologies Inc. Method and apparatus for generating a complex scrambling code sequence
US6240432B1 (en) 1998-12-28 2001-05-29 Vanguard International Semiconductor Corporation Enhanced random number generator
KR100657240B1 (ko) 1999-07-10 2007-01-12 삼성전자주식회사 랜덤 데이터 발생기
US6640236B1 (en) 1999-08-31 2003-10-28 Qualcomm Incorporated Method and apparatus for generating multiple bits of a pseudonoise sequence with each clock pulse by computing the bits in parallel
KR100594042B1 (ko) * 1999-09-22 2006-06-28 삼성전자주식회사 비동기 이동통신시스템의 멀티 스크램블링 코드 생성 장치 및 방법
US6816992B2 (en) 2001-02-28 2004-11-09 Tektronix, Inc. Test generator having a poisson distribution error signal
JP4596686B2 (ja) 2001-06-13 2010-12-08 富士通株式会社 Dpaに対して安全な暗号化
US7194619B2 (en) 2002-03-26 2007-03-20 International Business Machines Corporation Remotely booting devices in a dense server environment without manually installing authentication parameters on the devices to be booted
US7426532B2 (en) 2002-08-27 2008-09-16 Intel Corporation Network of disparate processor-based devices to exchange and display media files
CN100438393C (zh) 2002-11-08 2008-11-26 因芬尼昂技术股份公司 基于包的数据传输系统中帧的差错控制编解码的方法
JP2004361986A (ja) * 2003-04-08 2004-12-24 Sharp Corp スクランブル回路
WO2004102403A2 (en) 2003-05-13 2004-11-25 Advanced Micro Devices, Inc. A system including a host connected to a plurality of memory modules via a serial memory interconnect
US7346817B2 (en) * 2004-08-23 2008-03-18 Micron Technology, Inc. Method and apparatus for generating and detecting initialization patterns for high speed DRAM systems
EP2468348B1 (en) 2004-09-17 2016-10-26 Codman & Shurtleff, Inc. Thin film metallic devices for plugging aneurysms or vessels
US7437531B2 (en) 2004-09-30 2008-10-14 Intel Corporation Testing memories
US20060132492A1 (en) 2004-12-17 2006-06-22 Nvidia Corporation Graphics processor with integrated wireless circuits
US7843926B1 (en) 2005-04-05 2010-11-30 Oracle America, Inc. System for providing virtualization of network interfaces at various layers
US20060281425A1 (en) 2005-06-08 2006-12-14 Jungerman Roger L Feed forward spur reduction in mixed signal system
US20090129448A1 (en) * 2006-02-15 2009-05-21 Joshua Lawrence Koslov Apparatus and Method For Generating Scrambling Codes
US8000404B2 (en) * 2006-03-28 2011-08-16 Advanced Micro Devices, Inc. Method and apparatus to reduce the effect of crosstalk in a communications interface
US20070283231A1 (en) * 2006-05-08 2007-12-06 Hoyle David J Multi-Standard Scramble Code Generation Using Galois Field Arithmetic
US7793195B1 (en) 2006-05-11 2010-09-07 Link—A—Media Devices Corporation Incremental generation of polynomials for decoding reed-solomon codes
KR100782327B1 (ko) 2006-05-27 2007-12-06 삼성전자주식회사 반도체 장치 사이의 단일형 병렬데이터 인터페이스 방법,기록매체 및 반도체 장치
US8552891B2 (en) * 2006-05-27 2013-10-08 Samsung Electronics Co., Ltd. Method and apparatus for parallel data interfacing using combined coding and recording medium therefor
CN101098299B (zh) * 2006-06-27 2010-08-18 中兴通讯股份有限公司 一种比特加扰的并行方法及装置
US7486208B2 (en) * 2007-05-16 2009-02-03 International Business Machines Corporation High-rate RLL encoding
US7945050B2 (en) * 2007-09-28 2011-05-17 Intel Corporation Suppressing power supply noise using data scrambling in double data rate memory systems
US8503678B2 (en) 2007-09-28 2013-08-06 Intel Corporation Suppressing power supply noise using data scrambling in double data rate memory systems
US7501963B1 (en) * 2007-10-17 2009-03-10 Micron Technology, Inc. Balanced data bus inversion
US7616133B2 (en) * 2008-01-16 2009-11-10 Micron Technology, Inc. Data bus inversion apparatus, systems, and methods
US20090238069A1 (en) 2008-03-19 2009-09-24 Himax Technologies Limited Device and method for controlling program stream flow
US8154918B2 (en) * 2008-06-30 2012-04-10 Sandisk Il Ltd. Method for page- and block based scrambling in non-volatile memory
US8184034B2 (en) * 2008-07-21 2012-05-22 Cambridge Silicon Radio Limited Code sequence generator
US8261159B1 (en) * 2008-10-30 2012-09-04 Apple, Inc. Data scrambling schemes for memory devices
KR100991957B1 (ko) * 2009-01-20 2010-11-04 주식회사 팬택 광대역 무선통신시스템에서의 스크램블링 코드 생성 장치 및 그 방법
US9150341B2 (en) * 2009-09-02 2015-10-06 Monosol Rx, Llc Unit assembly and method of making same
US8402349B2 (en) * 2010-12-06 2013-03-19 Apple Inc. Two dimensional data randomization for a memory
US8713379B2 (en) * 2011-02-08 2014-04-29 Diablo Technologies Inc. System and method of interfacing co-processors and input/output devices via a main memory system
US8405529B2 (en) * 2011-03-11 2013-03-26 Taiwan Semiconductor Manufacturing Company, Ltd. Using bus inversion to reduce simultaneous signal switching
US8972646B2 (en) 2012-03-30 2015-03-03 Intel Corporation Superspeed inter-chip interface
US8942309B1 (en) * 2012-05-04 2015-01-27 Rambus Inc. Signal output improvement using data inversion and/or swapping
KR20140090761A (ko) * 2013-01-10 2014-07-18 삼성전자주식회사 디스플레이 구동회로 및 디스플레이 구동 회로의 데이터 전송 방법
US9210010B2 (en) 2013-03-15 2015-12-08 Apple, Inc. Methods and apparatus for scrambling symbols over multi-lane serial interfaces
US20140310534A1 (en) * 2013-04-15 2014-10-16 Apple Inc. Data scrambling in memory devices using combined sequences
US9122570B2 (en) * 2013-09-03 2015-09-01 Nanya Technology Corp. Data pattern generation for I/O training and characterization
US9270417B2 (en) * 2013-11-21 2016-02-23 Qualcomm Incorporated Devices and methods for facilitating data inversion to limit both instantaneous current and signal transitions
CN103745746A (zh) * 2013-12-31 2014-04-23 华为技术有限公司 数据处理方法、加扰器和存储控制器
JP6325264B2 (ja) * 2014-01-31 2018-05-16 ローム株式会社 シリアルデータの送信回路および受信回路、それらを用いた伝送システム、電子機器、シリアルデータの伝送方法
US9343149B2 (en) * 2014-07-10 2016-05-17 Micron Technology, Inc. Enhancing nucleation in phase-change memory cells

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20130101111A1 (en) 2011-10-20 2013-04-25 Sandisk Technologies Inc. Method for scrambling shaped data
US20150187441A1 (en) 2013-12-30 2015-07-02 Qualcomm Incorporated Data pattern generation for i/o testing of multilevel interfaces

Also Published As

Publication number Publication date
US9792246B2 (en) 2017-10-17
TW201636861A (zh) 2016-10-16
EP3238345A1 (en) 2017-11-01
EP3238345A4 (en) 2018-08-15
CN107003963B (zh) 2021-03-12
KR20170098804A (ko) 2017-08-30
WO2016105783A1 (en) 2016-06-30
TWI579703B (zh) 2017-04-21
CN107003963A (zh) 2017-08-01
US20160188523A1 (en) 2016-06-30
EP3238345B1 (en) 2021-09-08

Similar Documents

Publication Publication Date Title
KR102512361B1 (ko) 향상된 신호 무결성을 갖는 저-전력 스크램블링
EP2248031B1 (en) Data bus inversion apparatus, systems, and methods
CN107749782B (zh) 对控制符号进行智能加扰的方法和装置
US20180276149A1 (en) Common die implementation for memory devices with independent interface paths
CN106155584B (zh) 对数据进行加扰和解扰的方法和系统
CN107077446B (zh) 具有可编程的端接级别的动态总线反转
TW201737100A (zh) 具有窄頻寬中繼器通道的記憶體子系統
US9910790B2 (en) Using a memory address to form a tweak key to use to encrypt and decrypt data
US20110156934A1 (en) Method and apparatus for parallel data interfacing using combined coding and recording medium therefor
CN106354679B (zh) 用于高速通信的接口电路和包括其的系统
CN112019210A (zh) 包括异步计数器和同步计数器的代码生成器及其操作方法
JP2011187153A (ja) 半導体装置およびメモリ装置
TWI705332B (zh) 以互斥或(xor)爲基礎之用於數位相位控制的三角混合技術
US9274544B2 (en) Sideband initialization
KR102184895B1 (ko) 데이터 발생기 및 이를 포함하는 디스플레이 드라이버
TW201639298A (zh) 用於高速通訊之介面電路、及包含該介面電路之半導體設備和系統
TW201637420A (zh) 用於高速通訊的傳輸設備、包括該傳輸設備的介面電路和系統
CN114840455A (zh) 存储器接口上的数据加扰技术
US9697756B2 (en) Timing controller including configurable clock signal generators according to display mode and display device having the same
WO2021038769A1 (ja) 通信装置、メモリモジュール、及びプログラム
EP2676190B1 (en) System, method and computer program product for application-agnostic audio acceleration
KR20230032429A (ko) 메모리 장치 및 메모리 장치의 데이터 암복호화 방법
Haralambides et al. Reducing DDR Latency for Embedded Image Steganography

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right