KR102451475B1 - 집적 회로 - Google Patents

집적 회로 Download PDF

Info

Publication number
KR102451475B1
KR102451475B1 KR1020200150948A KR20200150948A KR102451475B1 KR 102451475 B1 KR102451475 B1 KR 102451475B1 KR 1020200150948 A KR1020200150948 A KR 1020200150948A KR 20200150948 A KR20200150948 A KR 20200150948A KR 102451475 B1 KR102451475 B1 KR 102451475B1
Authority
KR
South Korea
Prior art keywords
input value
value
function
circuit
integrated circuit
Prior art date
Application number
KR1020200150948A
Other languages
English (en)
Other versions
KR20210066717A (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 KR20210066717A publication Critical patent/KR20210066717A/ko
Application granted granted Critical
Publication of KR102451475B1 publication Critical patent/KR102451475B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06KGRAPHICAL DATA READING; PRESENTATION OF DATA; RECORD CARRIERS; HANDLING RECORD CARRIERS
    • G06K19/00Record carriers for use with machines and with at least a part designed to carry digital markings
    • G06K19/06Record carriers for use with machines and with at least a part designed to carry digital markings characterised by the kind of the digital marking, e.g. shape, nature, code
    • G06K19/067Record carriers with conductive marks, printed circuits or semiconductor circuit elements, e.g. credit or identity cards also with resonating or responding marks without active components
    • G06K19/07Record carriers with conductive marks, printed circuits or semiconductor circuit elements, e.g. credit or identity cards also with resonating or responding marks without active components with integrated circuit chips
    • G06K19/073Special arrangements for circuits, e.g. for protecting identification code in memory
    • G06K19/07309Means for preventing undesired reading or writing from or onto record carriers
    • 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/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
    • H03M13/13Linear codes
    • H03M13/15Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes
    • H03M13/151Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes using error location or error correction polynomials
    • H03M13/1585Determination of error values
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1012Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices using codes or arrangements adapted for a specific type of error
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/64Protecting data integrity, e.g. using checksums, certificates or signatures
    • 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
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/04Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
    • G11C29/08Functional testing, e.g. testing during refresh, power-on self testing [POST] or distributed testing
    • G11C29/10Test algorithms, e.g. memory scan [MScan] algorithms; Test patterns, e.g. checkerboard patterns 
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/04Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
    • G11C29/08Functional testing, e.g. testing during refresh, power-on self testing [POST] or distributed testing
    • G11C29/12Built-in arrangements for testing, e.g. built-in self testing [BIST] or interconnection details
    • G11C29/18Address generation devices; Devices for accessing memories, e.g. details of addressing circuits
    • G11C29/26Accessing multiple arrays
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/04Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
    • G11C29/08Functional testing, e.g. testing during refresh, power-on self testing [POST] or distributed testing
    • G11C29/12Built-in arrangements for testing, e.g. built-in self testing [BIST] or interconnection details
    • G11C29/18Address generation devices; Devices for accessing memories, e.g. details of addressing circuits
    • G11C29/30Accessing single arrays
    • G11C29/34Accessing multiple bits simultaneously
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/04Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
    • G11C29/08Functional testing, e.g. testing during refresh, power-on self testing [POST] or distributed testing
    • G11C29/12Built-in arrangements for testing, e.g. built-in self testing [BIST] or interconnection details
    • G11C29/36Data generation devices, e.g. data inverters
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/04Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
    • G11C29/08Functional testing, e.g. testing during refresh, power-on self testing [POST] or distributed testing
    • G11C29/12Built-in arrangements for testing, e.g. built-in self testing [BIST] or interconnection details
    • G11C29/38Response verification devices
    • G11C29/42Response verification devices using error correcting codes [ECC] or parity check
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/52Protection of memory contents; Detection of errors in memory contents
    • 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/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
    • H03M13/13Linear codes
    • H03M13/15Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes
    • H03M13/151Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes using error location or error correction polynomials
    • H03M13/1515Reed-Solomon codes
    • 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/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
    • H03M13/13Linear codes
    • H03M13/15Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes
    • H03M13/151Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes using error location or error correction polynomials
    • H03M13/158Finite field arithmetic processing
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/04Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
    • G11C29/08Functional testing, e.g. testing during refresh, power-on self testing [POST] or distributed testing
    • G11C29/12Built-in arrangements for testing, e.g. built-in self testing [BIST] or interconnection details
    • G11C29/18Address generation devices; Devices for accessing memories, e.g. details of addressing circuits
    • G11C29/26Accessing multiple arrays
    • G11C2029/2602Concurrent test
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/04Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
    • G11C29/08Functional testing, e.g. testing during refresh, power-on self testing [POST] or distributed testing
    • G11C29/12Built-in arrangements for testing, e.g. built-in self testing [BIST] or interconnection details
    • G11C29/36Data generation devices, e.g. data inverters
    • G11C2029/3602Pattern generator
    • 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/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
    • H03M13/13Linear codes
    • H03M13/15Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes
    • H03M13/151Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes using error location or error correction polynomials
    • H03M13/152Bose-Chaudhuri-Hocquenghem [BCH] codes

Landscapes

  • Physics & Mathematics (AREA)
  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Mathematical Physics (AREA)
  • General Physics & Mathematics (AREA)
  • Pure & Applied Mathematics (AREA)
  • Algebra (AREA)
  • Probability & Statistics with Applications (AREA)
  • Computer Hardware Design (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Software Systems (AREA)
  • Microelectronics & Electronic Packaging (AREA)
  • Quality & Reliability (AREA)
  • Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • General Health & Medical Sciences (AREA)
  • Error Detection And Correction (AREA)

Abstract

예시적 실시예에 따르면, 함수의 입력 값에 대한 함수의 함수 값을 출력하기 위한 집적 회로가 설명되며, 집적 회로는 입력 값 및 입력 값의 다수의 변환된 버전을 지정된 비트 패턴과 비교하고/하거나 입력 값을 비트 패턴 및 지정된 비트 패턴의 다수의 변환된 버전과 비교하도록 구성되는 패턴 매칭 회로 - 입력 값 또는 지정된 비트 패턴의 변환된 버전들은 입력 값 또는 지정된 비트 패턴에 변환의 반복된 적용에 의해 생성되고, 함수는 변환 하에 불변이거나 변환에 대해 역 변환이 존재하고, 그것에 의해 입력 값들의 변환에 의해 야기되는 함수 값들의 변경이 반전될 수 있음 -, 입력 값 및 패턴 매칭 회로의 매칭 결과에 따라 함수 값을 선택하도록 구성되는 선택 회로, 및 선택된 함수 값에 기초하여 입력 값에 대한 함수 값을 출력하도록 구성되는 출력 회로를 포함한다.

Description

집적 회로{INTEGRATED CIRCUIT}
예시적 실시예들은 일반적으로 집적 회로들에 관한 것이다.
자동차들 내의 스마트 카드 모듈들 및 제어 프로세서들과 같은, 보안 관련 애플리케이션들을 위해 사용되는 전자 회로들은 공격들에 대해 보호되어야 한다. 특히, 전형적으로 비휘발성 메모리와 같은 메모리에 저장되는 데이터가 조작되었는지(또는 임의의 다른 이유로 에러들을 포함하는지), 및 필요하면 정정될 수 있는지를 검출할 수 있는 것이 바람직하다. 작은 칩 표면적을 필요로 하는 그러한 기능성의 하드웨어 구현들이 바람직하다.
예시적 실시예에 따르면, 함수의 입력 값에 대한 함수의 함수 값을 출력하기 위한 집적 회로가 제공되며, 집적 회로는 입력 값 및 입력 값의 다수의 변환된 버전을 지정된 비트 패턴과 비교하고/하거나 입력 값을 비트 패턴 및 지정된 비트 패턴의 다수의 변환된 버전과 비교하도록 구성되는 패턴 매칭 회로 - 입력 값 또는 지정된 비트 패턴의 변환된 버전들은 입력 값 또는 지정된 비트 패턴에 변환의 반복된 적용에 의해 생성되고, 함수는 변환 하에 불변이거나 변환에 대해 역 변환이 존재하고, 그것에 의해 입력 값들의 변환에 의한 함수 값들의 변경이 반전될 수 있음 -, 입력 값 및 패턴 매칭 회로의 매칭 결과에 따라 함수 값을 선택하도록 구성되는 선택 회로, 및 선택된 함수 값에 기초하여 입력 값에 대한 함수 값을 출력하도록 구성되는 출력 회로를 포함한다.
도면들은 실제 비율들을 반영하지 않지만, 다양한 예시적 실시예들의 원리들을 예시하도록 의도된다. 이하의 본문에서, 다양한 예시적 실시예들은 이하의 도면들을 참조하여 설명된다.
도 1은 비휘발성 메모리를 갖는 보안 집적 회로를 도시한다.
도 2는 디코더 회로를 예시한다.
도 3은 함수 회로를 도시한다.
도 4는 입력 값에 대한 함수의 함수 값을 계산하기 위한 집적 회로를 도시한다.
이하의 상세한 설명은 동봉된 도면들을 참조하며, 이 도면들은 상세들 및 예시적 실시예들을 도시한다. 이러한 예시적 실시예들은 본 기술분야의 통상의 기술자가 본 발명을 구현할 수 있게 하도록 충분히 상세하게 설명된다. 다른 실시예들이 또한 가능하고, 예시적 실시예들은 본 발명의 주제로부터 벗어나는 것 없이 그들의 구조적, 논리적 및 전기적 양태들의 점에서 수정될 수 있다. 상이한 예시적 실시예들은 반드시 상호 배타적인 것이 아니라, 상이한 실시예들은 새로운 실시예들을 생성하기 위해 조합될 수 있다. 이러한 설명의 목적들을 위해, 용어들 "연결된" 및 "결합된"은 직접 및 간접 연결, 및 직접 또는 간접 결합 둘 다를 설명하는 데 사용된다.
도 1은 비휘발성 메모리(101)를 갖는 보안 집적 회로(security IC)(100)를 도시한다.
보안 IC(100)는 비휘발성 메모리(101)에 액세스하고 그 안에 저장된 데이터를 처리할 수 있는 마이크로프로세서(102)를 갖는다. 이러한 목적을 위해, 저장된 데이터에서 비트 에러들을 검출하고 그들을 정정하는 메커니즘이 제공된다. 다양한 실시예들에 따르면, 하드웨어 회로(103)가 제공되며, 이 회로는 하드웨어에서 에러 검출 및 에러 정정 메커니즘을 구현한다. 회로(103)는 인코더(104)를 구현하며, 인코더는 메모리(101)에 저장될 데이터(데이터 워드들, 예를 들어 (버스) 메시지들의 형태임)를 인코딩하며, 즉 저장될 데이터 워드에 대해, 연관된 코드 워드는 지정된 코드에 따라 결정되며, 그 다음 메모리(101)에 저장된다. 이러한 인코딩은 중복 정보를 사용자 정보(저장될 데이터 워드)에 추가한다. 판독을 위해, 메모리는 디코더(105)를 구현하며, 디코더는 메모리 워드에 대해 그것이 지정된 코드에 따른 유효 코드 워드인지 또는 그것이 유효 코드 워드가 아니고 따라서 에러들을 포함하는지를 결정한다. 에러들의 수 및 코드에 따라 정정될 수 있는 에러들의 수에 따라, 디코더(105)는 메모리 워드를 유효 코드 워드로 정정한다. 디코더(105)는 유효 코드 워드를 마이크로프로세서(102)에 전달한다.
예를 들어, 보안 IC(100)는 (예를 들어, 차량 내의) 제어 디바이스의 일부 또는 (임의의 폼 팩터를 갖는) 칩 카드의 일부일 수 있다.
예를 들어, EEPROM, 플래시 메모리, FeRAM 또는 저항 랜덤 액세스 메모리(resistive random access memory)(RRAM)는 비휘발성 메모리(101)를 위해 사용될 수 있다.
그러나, 보안 집적 회로들(100) 내의 비휘발성 메모리(101)로서 RRAM의 사용은 저장된 데이터에서 비트 에러들을 검출하고 정정하는 데 사용되는 메커니즘에 관한 높은 요구들을 제기한다. 따라서, 메모리(101)의 안전한 동작을 위해, 에러 정정 코드(error correction code)(ECC)를 사용하는 것이 바람직하며, 이 코드는 다수의 비트 에러(예를 들어, 모든 1 내지 3 비트 에러)를 효율적으로 검출하고 정정할 수 있다. 이것은 사용된 코드의 최소 거리가 비교적 커야(3비트 에러를 정정하기 위해 적어도 7이어야) 하는 것을 의미한다. 그러한 코드에서 정정될 에러 경우들의 수가 모든 연관된 신드롬들을 테이블로 작성하거나 그들을 하드웨어에서 병렬로 디코딩하고 처리하기에 너무 크기 때문에, BCH 또는 리드 솔로몬(Reed-Solomon) 코드들과 같은 순환 대수 코드들의 사용은 이러한 사용 경우에 대한 적절한 선택이다. 그 다음, 저장될 데이터(또는 메시지들)의 코딩 및 판독 데이터(또는 메시지들)의 디코딩 및 에러 정정은 유한 필드를 통해 다항식 환에서의 계산들에 의해 설명될 수 있고, 일 예시적 실시예에 따르면 보안 IC(100)의 하드웨어에 의해, 예를 들어 하드웨어 회로(103)에 의해 자동으로 수행된다.
에러 정정을 위한 순환 대수 코드들, 예컨대 BCH 코드들은 유한 확대 필드들(GF(pn))을 통해 정의되며 p는 소수이다. 에러 포함 데이터 세트의 디코딩 동안, 에러 다항식의 영점들을 결정하고, 에러 위치들을 결정하기 위한 필드 요소들의 이산 로가리듬들을 계산하고 로가리듬 표현에 필드 요소들의 추가의 효율적 구현을 위한 제크 로가리듬들(Zech logarithms)을 계산하는 것이 통상적으로 필요하다. 이러한 목적을 위해, 사용된 함수들(예를 들어, 다항식 함수들, 로가리듬, 제크 로가리듬, 지수 함수)의 함수 값들은 미리 계산되고 테이블로서 저장될 수 있다. 그 다음, (정규화된) 다항식의 영점, 필드 요소의 제크 로가리듬 또는 이산 로가리듬은 테이블 룩업들에 의해 간단히 획득될 수 있다.
도 2는 디코더 회로(200)를 예시한다.
예를 들어, 디코더 회로(200)는 하드웨어 회로(103)의 디코더 부분(105)에 대응한다.
디코더 회로(200)는 에러들을 포함할 수 있는 입력 데이터(204)(예를 들어, 메모리로부터 판독되거나 통신 채널을 통해 메시지로서 수신됨)를 수신한다.
디코더 회로(200)는 에러 검출 및 에러 정정 회로(201)를 가지며, 이 회로는 입력 데이터(204)가 에러들을 포함하는지를 검출하고 (가능한 경우) 에러들을 정정한다. 이러한 목적을 위해, 그것은 중복 정보를 이용하며, 이 정보는 실제 사용자 정보에 더하여 입력 데이터(204)에 포함된다(또는 입력 데이터에 의해 표현됨).
그 다음, 디코더 회로(200)는 출력 데이터(205)를 출력하며, 이 데이터는 예를 들어, 입력 데이터(204)가 에러가 없으면 정정 없이 사용자 정보에 대응하거나, 에러 정정 후에 사용자 정보에 대응하거나, 그렇지 않으면 입력 데이터(204)가 에러들이 있지만 (너무 많은 에러들이 존재하기 때문에) 정정될 수 없는 정보를 포함한다.
에러 검출 및 에러 정정 회로(201)는 대수 코드에 따라 에러 검출 및 (필요하면) 에러 정정을 수행한다. 이것은 현재 (가능하게는 에러나기 쉬운) 입력 데이터(204)로서 존재하는 원래의 에러 없는 코드 워드를 발생시키기 위해 원래의 사용자 정보가 이러한 대수 코드에 따라 인코딩되었다는 가정에 기초한다. 예를 들어, 인코더(104)는 사용자 정보를 메모리(101)로 저장하기 전에 대수 코드에 따라 사용자 정보를 인코딩했고 입력 데이터(204)는 메모리로부터 판독된 후에 이러한 코딩된 사용자 정보에 대응하지만, 그것은 메모리 또는 처리 에러들로 인해, 그렇지 않으면 공격으로 인해 에러들을 포함할 수 있다.
대수 코드는 유한 필드(GF(pn))를 통해 정의되며, 여기서 p는 소수이다. 에러 검출 및 에러 정정 회로(201)에 의해 수행되는 계산들, 예컨대 신드롬 계산, 및 후속 에러 정정 계산들, 예컨대 에러 로케이터 다항식의 계산을 위해, 에러 검출 및 에러 정정 회로(201)는 함수 회로들(202)에 의존하며, 이 회로들은 함수(로가리듬, 다항식 함수) 또는 입력 자연수(지수 함수, 제크 로가리듬)의 입력 필드 요소(즉, 유한 필드의 요소)에 대한 함수 값을 각각 계산한다. 함수 값은 (다항식 함수에 대한 또는 지수 함수에 대한) 필드 요소 또는 (제크 로가리듬에 대한 또는 로가리듬에 대한) 자연수일 수 있다.
이것의 효율적 구현을 위해, 함수 값들은 미리 계산되고 테이블들(203)에 저장될 수 있다. 아래의 예시적 실시예들에 더 상세하게 설명되는 바와 같이, 함수 회로(202)는 복수의 테이블(203)을 사용할 수 있다.
사용된 유한 확대 필드들의 대수 성질들은 이제 테이블들(203)의 요구된 크기를 감소시키는 데 사용될 수 있다: 계산된 함수 및 함수가 계산되는 필드 요소들 또는 자연수들의 표현이 특정 성질들을 가지면, 저장될 함수 값들의 수는 완전히 테이블로 작성된 함수의 거의 1/n까지 감소될 수 있다. 그러나, 필요한 변환들은 일반적으로 너무 복잡하여 이러한 접근법은 전형적으로 디코더들의 소프트웨어 구현들을 위한 실제 사용에만 대한 것이다.
이하의 본문은 테이블 룩업들에 기초하여 미리 계산된 함수들의 하드웨어 구현을 가능하게 하고 효율적으로 구현되고 실행될 수 있는 실시예들을 설명한다. 특히, 테이블 크기는 대응하는 소프트웨어 구현의 것까지 거의 감소될 수 있다.
이하의 예들은 필드 요소의 함수 값(예를 들어, 다항식 함수)이 계산되는 것을 가정한다. 그러나, 예들은 자연수의 함수 값의 계산과 완전히 동일한 방식으로 적용될 수 있다(그것의 함수 값은 이때 필드 요소임). 그러한 함수들(제크 로가리듬 및 지수 함수)의 적용은 아래에 더 상세하게 설명된다.
일 실시예는 계산될 함수 및 (함수가 계산되는) 필드 요소들의 표현이 프로베니우스 자기준동형(Frobenius endomorphism) x → xp의 적용 하에 특정 성질들, 예를 들어 불변 또는 반전을 가지면, 테이블에 프로베니우스 자기준동형의 각각의 궤도에 대한 하나의 대표만을 저장하는 것으로 충분하다는 사실을 사용한다. 궤도는 여기서 필드 요소(x)에 대한 프로베니우스 자기준동형의 멱들의 그룹의 궤도를 의미한다.
이러한 방법에 의해, 저장될 함수 값들의 수는 완전히 테이블로 작성된 함수의 거의 1/n까지 감소될 수 있다. 여기서, n은 필드(Gf(pn))에 대한 프로베니우스 자기준동형의 차수이다.
일 실시예에 따르면, 필드 요소에 대한 함수를 계산하기 위한 함수 회로(202)는 프로베니우스 자기준동형의 반복된 적용에 의해 궤도의 고유 대표 상으로 필드 요소의 표현을 우선 매핑하고, 대응하는 테이블(203)에서 테이블 룩업을 사용하고, 그 다음 테이블로 작성된 함수에 따라 대표의 매핑된 값(즉, 함수 값)을 결정하고, 역 프로베니우스 자기준동형의 반복된 적용에 의해 원래의 필드 요소의 매핑된 값을 최종적으로 계산함으로써 진행한다.
이러한 접근법은 프로베니우스 자기준동형의 궤도의 테이블로 작성된 대표들을 정의하는 필드 요소들의 표현의 순서화에 기초할 수 있다. 따라서, 대표의 이러한 사전선택의 경우(구현을 최적화할 시에 제1 단계와 같이), 대응하는 테이블이 드문드문 채워질 필요만이 있는 것을 보장하는 것이 가능하다. 그 다음, 일반적으로, 프로베니우스 자기준동형의 궤도들의 대부분이 길이(n)를 가지므로, 모든 테이블 엔트리들 중 하나의 n번째만이 요구된다.
게다가, 드문드문 채워진 테이블을 간편한 방식으로 저장할 수 있기 위해, 다양한 실시예들에 따르면, 아래에 설명되는 바와 같이, 고유 대표들을 더 작은 어드레스 공간으로 매핑하기 위한 메커니즘이 추가적으로 제공된다.
대안적으로, 테이블 내의 파퓰레이션된 엔트리들은 하드웨어 합성에 의해 더 간편한 방식으로 구현될 수 있다. 그러나, 이러한 방법이 인자(n)의 공간 절약들을 실제로 달성하는 것이 반드시 보장되는 것은 아니다.
이하에 설명되는 예시적 실시예들에 따르면, 궤도의 고유 대표의 계산, 예를 들어 가장 작은 요소는 사전 편집식 순서화 하에, 또한 이것이 하드웨어에 비교적 고가이므로, 회피된다.
아래에 설명되는 예시적 실시예들에서, 필드 요소에 대한 함수 값을 계산하도록 디자인되는 함수 회로(202)는 필드 요소 표현에 특정 비트 패턴을 갖는 특정 궤도(필드 요소가 속함)의 하나 이상의 대표를 결정한다. 이러한 맥락에서, 비트 패턴은 각각의 위치에 대한 하나의 미리 정의된 비트 값과 함께, 대표의 필드 요소 표현의 (반드시 연속적인 것은 아닌) 비트 위치들의 서브세트를 의미하는 것으로 이해된다.
궤도가 그러한 대표를 가지면, 이때 함수 회로(202)는 비트 패턴에 속하는 테이블(203) 내의 테이블 룩업에 의해 대응하는 함수 값을 결정할 수 있다. 비트 패턴들의 지정된 비트들이 공지되고 일정하므로, 그들은 테이블 룩업에서의 입력으로 간주될 필요가 없고, 테이블(203)은 결과적으로 더 작아질 수 있다. 지정된 비트 패턴이 비트 위치들을 더 많이 가질수록, 비트들이 대응하는 테이블(203)에서 더 많이 무시될 수 있고 그의 크기가 더 작아질 수 있다.
일반적으로 각각의 궤도의 적어도 하나의 대표에 발생하는 단일 비트 패턴을 발견하는 것이 가능하지 않기 때문에, 구현은 일반적으로 비트 패턴들의 (가장 작게 가능한) 세트를 필요로 한다. 비트 패턴들의 세트는 비트 패턴들 중 하나를 갖는 하나의 대표가 각각의 궤도에 있는 그러한 방식으로 선택된다. 그러나, 이러한 방식으로 설명되는 비트 패턴들에 궤도들의 할당이 고유할 경우가 반드시 있는 것은 아니다. 하나의 또는 훨씬 더 많은 비트 패턴들을 갖는 다수의 대표가 그들의 필드 요소 표현 내의 궤도에 나타날 경우는 상당히 가능성이 있을 수 있다.
주어진 세트의 비트 패턴들에 대해, 주어진 데이터 아이템(2진 필드 요소 표현 내의 필드 요소)이 대표 비트 패턴들 중 적어도 하나를 갖는지를 하드웨어로 체크하는 것은 매우 간단하고 효율적이다. 비트 패턴들을 테스트하기 위한 연관된 회로들은 로가리듬 깊이로(테스트될 비트 위치들의 수로) 구현될 수 있고, 상이한 패턴들에 대한 테스트들은 병렬로 수행될 수 있다.
도 3은 함수 회로(300)를 도시한다.
함수 값이 계산되는 필드 요소(x)는 함수 회로(300)에 (2진) 필드 요소 표현으로 공급된다. 이러한 예에서, 필드 요소 표현은 GF(2n)의 정규 베이스 표현이다. 이것은 필드 요소가 일련의 2진 계수들(GF(2)로부터의 요소들)로 표현되는 것을 의미하며, 2진 계수들은 필드 요소를 형성하기 위해 GF(2) 벡터 공간(GF(2n))의 정규 베이스의 "베이스 벡터들"의 계수들이다.
그 다음, 필드 요소에 프로베니우스 자기동형의 적용은 2진 필드 요소 표현의 비트 회전에 대응한다.
따라서, 함수 회로(300)는 필드 요소의 모든 가능한 회전들(301)을 발생시킴으로써 필드 요소의 궤도를 발생시킨다. 이것은 간단한 와이어링에 의해 각각의 경우에 구현될 수 있으며, 이는 각각의 회전에 따라 필드 요소의 계수들의 배열을 변경한다.
패턴 매칭 회로(302)는 각각의 대표 비트 패턴에 대해 제공된다. 함수 회로(300)는 필드 요소의 각각의 회전(301)을 각각의 패턴 매칭 회로(302)에 공급한다.
각각의 패턴 매칭 회로(302)는 각각의 회전(301)에 대해 대응하는 대표 비트 패턴이 회전(301)에 포함되는지를 결정한다. 이러한 목적을 위해, 패턴 매칭 회로(302)는 각각의 회전(301)에 대한 AND 트리를 가질 수 있으며, 예를 들어, 이는 각각의 대표 비트 패턴과 비교된다.
대표가 대표의 나머지 비트들과 함께(비트 패턴의 것들을 제외하고) 궤도에서 발견된 비트 패턴은 어드레스 디코더(303)에 공급되며, 이 디코더는 대표의 나머지 비트들에 할당되는 테이블(304) 내의 위치에서 비트 패턴에 할당되는 테이블(304) 내의 테이블 룩업에 의해 대표의 함수 값(305)을 결정한다.
그 다음, 대표들은 테이블들(304) 내의 작은 어드레스 공간에 용이하게 매핑될 수 있다. 검출된 비트 패턴과 연관된 비트 위치들은 제거되고(그들은 룩업을 위해 사용되는 테이블을 지정함), 나머지 비트들은 대표들의 함수 값들에 대한 (가능하게 드문드문 파퓰레이션된) 테이블을 어드레싱한다.
계산될 함수가 프로베니우스 자기동형으로 반전되면, 필드 요소의 함수 값(306)은 역 회전에 의해(예를 들어, 적절한 와이어링을 선택함으로써) 발생될 수 있다. 계산될 함수가 프로베니우스 자기동형 하에 불변이면, 그러한 역 회전은 필요하지 않다.
간단한 예로서, 2진 바이트 표현의 회전(R) 하에 불변인 바이트들의 세트에 대한 함수가 있는 것을 가정한다. (비트 회전은 이러한 경우에 정규 베이스 표현을 갖는 유한 확대 필드(GF(28))에서 프로베니우스 자기준동형에 대응한다.) 회전 매핑 하에, 256 바이트의 세트는 이하와 같이 36 쌍 서로소 궤도로 세분된다:
- 길이 1의 2 궤도가 있다:
2개의 요소(0x00 및 0xff)가 있기 때문에, 그 각각은 R(0x00)=0x00 및 R(0xff)=0xff 때문에 길이 1의 궤도를 갖는다.
- 길이 2의 1 궤도가 있다:
R2 하에 불변인 2개의 다른 요소가 있기 때문이다. 이들은 0x55 및 0xaa이다. NB: R2 하에 불변인 4=22 요소가 있다.
- 길이 4의 3=(24-22)/4 궤도가 있다:
R4 하에 불변인 (24) 요소가 있기 때문이다. 이것은 또한 이미 위에 언급된 22 요소를 포함한다. 따라서, R 하에 차수 4인 정확히 (24-22) 요소가 있다.
- 길이 8의 30=(28-24)/8 궤도가 있다:
R8 하에 불변인 (28) 요소가 있기 때문이다. 이것은 사소한 사실이다. 이것은 또한 상기 언급된 24 요소를 포함한다. 따라서, R 하에 차수 8인 정확히 (28-24) 요소가 있다.
(36 쌍 서로소 궤도의 사전 편집식으로 가장 작은 대표들은 또한 문헌에서 린든 워드들(Lyndon words)로 칭해진다.)
이것은 함수의 평가를 위해 값들 쌍의 서로소 궤도들의 36 대표 상에서 함수의 값들을 인식하는 것으로 충분할 것을 의미한다. 따라서, 함수가 테이블로 작성될 때, 256/36 = 7.11의 인자의 절약, 즉 상기 언급된 바와 같이 인자(n = 8)가 달성될 수 있다.
그러한 테이블의 구현이 하드웨어 합성에 의해 수행되면, 이러한 절약 인자가 또한 거의 달성된다. 일 실시예에 따르면, 매핑(예를 들어, 프로베니우스 자기동형)을 갖는 함수의 불변들 또는 가역성은 실제로 하드웨어 구현에서 공간을 절약하는 데 사용된다. 따라서, 일 실시예에 따르면, ROM 테이블들(203, 304)은 구현을 위해 사용된다. 이들은 하드웨어에서 매우 간편한 방식으로 구현될 수 있다.
ROM 테이블은 전형적으로 크기(2m)의 선형 어드레스 공간을 가지며, 이는 m 어드레스 비트들에 의존한다. 상기 예에서, 대표가 36 궤도 각각으로부터 선택되면, 이들은 전체 간격([0, 255])에 걸쳐 분산되어, 8보다 작은 비트를 갖는 어드레스 공간은 충분하지 않을 것이다. 그러나, 상기 언급된 바와 같이, 대표들은 또한 더 작은 어드레스 공간 상으로 매핑될 수 있다.
상기 예에서, 예를 들어, 0xff의 함수의 값은 특별한 경우로서 구현된다(프리픽스 "0x"는 16진수를 표시한다). 이것은 적어도 하나의 대표가 각각의 나머지 궤도에서 발견되는 것을 허용하며, 여기서 가장 높은 비트는 0이다. 따라서, 나머지 35 대표의 값들은 7 어드레스 비트를 갖는 어드레스 공간에 수용될 수 있으며, 이는 테이블 크기를 반으로 감소시킨다.
0x00의 함수의 값은 또한 다른 특별한 경우로서 취급될 수 있고 관찰은 0x00 및 0xff와 다른 임의의 값이 회전될 수 있어 가장 높은 비트들이 01과 동일하도록 사용될 수 있다. 이것은 이러한 방식으로 선택되는 나머지 대표들에 대한 테이블들(203, 304)이 6 어드레스 비트를 갖는 어드레스 공간까지 감소되는 것을 허용한다. 2개의 특별한 경우 외에, 테이블들(203, 304)은 이제 원래의 테이블 크기의 1/4만을 갖는다.
특별한 경우들(0x00 및 0xff)을 취급하기 위해, 회로(307)는 회로(300) 내에 제공될 수 있으며, 예를 들어, 이 회로는 필드 요소를 2개의 특별한 경우와(예를 들어, 비트 XOR에 의해) 비교하고, 특별한 경우가 적용되면, 각각의 (예를 들어, 하드 와이어링된) 함수 값을 출력한다.
더 일반적으로 테이블로 작성된 경우, 일 실시예에 따르면, 요소들(x)에 대한 함수 값(f(x))을 결정하기 위한 방법을 구현하는 함수 회로(202)가 제공되며, 이는 길이(n)의 비트 스트링들({0,1}n)에 의해 표현될 수 있다. 요소들(x)은 필드 요소들이지만 또한 자연수들일 수 있다.
함수(f)는 이하의 성질을 갖는다: 2개의 함수(φ, ρ)가 있어, 이하가 적용된다:
정의 세트로부터의 모든 x에 대해, ρ(f(φ(x))) = f(x)이다.
이러한 경우에, 함수(f)가 변환들(φ 및 ρ-1) 하에 등변이라고 한다.
일 예(또한 도 3의 설명의 기초임)는 φ가 프로베니우스 자기준동형 및 φ-1 = ρ인 것이다. 그 다음, 예를 들어, 함수(f)는 임의의 다항식 함수이다.
함수들(f, φ, ρ)에 따라, 한 세트의 비트 패턴들({B1,...,Br})(비트 위치들 및 연관된 비트 값들로 구성됨) 및 연관된 테이블들({T1,...,Tr})(함수 회로(202)의 테이블들(203)에 대응함)은 함수 회로(202)를 위해 정의된다.
함수 회로(202)는 이하의 단계들에서 함수 값을 결정하도록 구성된다:
- x의 궤도의 요소들에서 적어도 하나의 비트 패턴을 발견하는 단계: {x = φ0(x), φ1(x), φ2(x), ...}.
- 비트 패턴들(Bi) 중 하나를 갖는 궤도(y = φk(x))의 대표를 선택하는 단계. (비트 패턴은 이러한 경우에 길이(w)를 갖는다.)
- Bi에 속하는 테이블(Ti) 내의 z = f(y)의 테이블 룩업. (테이블은 2n-w 엔트리의 최대를 사용한다.)
- 함수(ρ)의 k 폴드 적용에 의한 함수 값(f(x) = ρk(z))의 결정.
전형적인 특별한 경우들은 이하이다:
● ρ는 항등 함수이며, 즉, f는 φ 하에 불변이다.
● 비트 패턴은 길이(w = n)를 갖는다(GF(28) 및 프로베니우스 자기동형에 대한 상기 예를 참조). 그 다음, 연관된 테이블은 하나의 값만으로 구성된다.
도 3의 회로(300)를 참조하여 설명되는 예시적 실시예에 대해, 이하에서 확대 필드(GF(29))가 고려된다. 필드의 요소들은 정규 베이스에 대해 길이 9의 비트 스트링들({0,1}9)로 표현되게 한다. 그 다음, 프로베니우스 자기준동형(φ:x → x2)(도 3을 참조하여 설명된 바와 같음)은 비트 스트링들을 좌측으로 하나의 위치 회전시킴으로써 구현될 수 있다. 512 비트 스트링의 세트는 60 쌍 서로소 궤도로 세분된다: 길이 1의 2 궤도(요소들(000000000 및 1111111111)에 의해 발생됨), 길이 3의 2 궤도(요소들(001001001 및 011011011)에 의해 발생됨) 및 길이 9의 56 궤도. 이러한 이유로, 적어도 60개의 함수 값들은 각각의 가능한 엔트리 값(또한 입력 값으로 지칭됨)에 대한 미리 저장된 함수 값에 기초하여 함수 값을 결정할 수 있기 위해 미리 저장(예를 들어, 테이블로 작성)되어야 한다.
4 비트 패턴(B = {111111111,*****0001, **0*0**00, *01***1*1})의 경우, 회전에 대한 적어도 하나의 대표는 길이 9의 512 가능한 비트 스트링 각각에 대해 발견될 수 있다. 기호 *는 대응하는 비트의 값이 각각의 패턴 매처(302)에 의해 고려되지 않는 것을 의미한다. 따라서, 회로에 대해, 길이 9의 비트 패턴(단일 테이블 엔트리에 대응함) 및 길이 4의 3 비트 패턴(*로 마킹된 위치들에서의 가능한 비트 값들에 대한 32 테이블 엔트리에 각각 대응함)이 정의된다. 이것은 1+3*32 = 97개의 함수 값들이 미리 계산된 함수 값들로서(예를 들어, 테이블들(304) 내의 테이블 엔트리들로서) 저장되어야 하는 것을 의미한다. 비트 패턴(111111111)에 대한 개별 값은 또한 테이블 외부에 저장되며, 예를 들어 회로(307)에서 하드 와이어링될 수 있다.
다른 디자인 변형에서, 테이블 엔트리들의 수는 함수 값들이 테이블들(304)로서 저장되는 것이 아니라 합성된 로직 회로들에 의해 구현되면 추가로 감소될 수 있다. 4 비트 패턴(B)은 다수의 비트 패턴이 32 비트 스트링의 궤도에서 발생할 수 있다는 성질을 갖는다.
예를 들어, 적용(φ5(100010110) = 011010001) 후에, 비트 스트링(100010110)은 비트 패턴(*****0001)을 갖고 적용(φ7(100010110) = 101000101) 후에 그것은 비트 패턴(*01***1*1)을 갖는다. 따라서, 100010110의 궤도는 양 비트 패턴들을 가지며, 즉 양 비트 패턴들은 궤도와 매칭한다.
그 다음, 회로(300)가 주어진 비트 스트링(x)에 대한 비트 패턴들을 고정된 순서로(예를 들어, 111111111 → *****0001 → **0*0**00 → *01***1*1) 테스트하고 함수 평가에서 그것이 x의 궤도에서 대표를 갖는 각각의 경우에 제1 패턴을 선택하면, 이때 B로부터의 비트 패턴들이 매칭하는 32 비트 스트링은 3개의 테이블 중 하나 내의 함수 값으로서(즉, 제1 매칭 비트 패턴에 대해서만) 한 번 합성될 필요만이 있다.
이것은 함수를 테이블로 작성하도록 요구되는 값들의 수가 65인 것을 의미한다. (비교를 위해: 감소 절차를 갖는 테이블은 512 엔트리를 가지며, 엔트리들의 최소 수는 60이다.) 비트 패턴들(B)은 이러한 경우에 B로부터의 다수의 비트 패턴(길이 9 및 3개의 4 비트 세트를 갖는 패턴들에 대함)과 매칭하는 비트 스트링들의 수가 최대이도록 선택되었다.
상기 언급된 바와 같이, 상기 접근법은 필드 요소들의 함수 값들을 계산하는 것에 제한되지 않지만, 또한 자연수들에 대한 함수 값들을 계산하는 것에 적용될 수 있다. 자연수는 필드 요소를 그의 로가리듬으로서(필드의 원시 요소에 관해) 표현할 수 있다. 따라서, 자연수에 대한 함수 값의 계산은 로가리듬 형태로의 필드 요소들의 표현에 대한 유한 확대 필드들을 통해 테이블로 작성된 함수들의 하드웨어 효율적인 계산에 상기 접근법의 적용으로서 간주될 수 있다.
예를 들어, 필드(GF(29))의 요소들이 발생 요소(α)를 갖는 원시 정규 베이스에 관해 길이 9의 비트 스트링들({0,1}9)로서 표현되게 한다. 그 다음, 0 상이한 필드 요소들(x ∈ GF(29))의 전부는 α에 관하여 그들의 이산 로가리듬(0 ≤ d < 511)에 의해 고유하게 표현될 수 있고, x = αd는 사실이다.
이산 로가리듬(d)은 여기서 자연수이고 프로베니우스 자기준동형은 이러한 표현에서 더블링 모듈로 511에 대응한다: 즉, x → 2x 모듈로 511. 이러한 수 표현에서, 2진 이산 로가리듬으로서 표현되는 수에 관한 φ의 효과는 좌측으로 하나의 위치의 회전이고, ρ는 우측으로 하나의 위치의 회전을 야기한다.
따라서, 필드 요소를 입력으로서 갖고 필드 요소를 출력(예를 들어, 다항식 함수)으로서 갖는 회로와 유사하게, 입력, 출력 또는 양 자연수들이 모듈로 2n-1인 회로들이 또한 제공될 수 있다.
이것의 예들은 α에 대한 이산 로가리듬 함수, 베이스(α)에 대한 모듈러 지수 함수, 및 제크 로가리듬이다.
그 후, Z(x) = log(αx + 1)가 이산 제크 로가리듬이면(여기서 x는 자연수임), 이때 이하가 적용된다.
Z(2x) = log((αx)2 + 1) = log((αx+1)2)
프로베니우스 자기동형의 동형사상 성질로 인해 그리고 따라서
Z(2x) = 2 log(αx + 1) = 2 Z(x)
(2x는 모듈로 2n-1로 계산된다).
따라서, 제크 로가리듬은 회전으로 다시 반전된다(즉, 더블링 또는 절반). 따라서, 필드 요소에 대한 다항식 함수의 계산과 유사하게, 제크 로가리듬은 궤도 대표에 대한 입력 값(자연수)의 회전, 궤도 대표의 제크 로가리듬의 결정(테이블 룩업에 의함) 및 결과(자연수)의 역 회전에 의해 결정될 수 있다.
동일한 것이 로가리듬 및 지수 함수에 적용된다.
요컨대, 다양한 실시예들에 따르면, 도 4에 도시된 바와 같은 집적 회로가 제공된다.
도 4는 입력 값(404)에 대한 함수의 함수 값(405)을 계산하기 위한 집적 회로(400)를 도시한다.
집적 회로(400)는 입력 값 및 입력 값의 다수의 변환된 버전을 지정된 비트 패턴과 비교하고/하거나 비트 패턴 및 입력 값을 지정된 비트 패턴의 다수의 변환된 버전과 비교하도록 구성되는 패턴 매칭 회로(401)를 가지며, 입력 값 또는 지정된 비트 패턴의 변환된 버전들은 입력 값 또는 지정된 비트 패턴으로 변환의 반복된 적용에 의해 생성되고, 함수는 변환 하에 불변이거나 변환에 대해 역 변환이 존재하고, 그것에 의해 입력 값들의 변환에 의해 야기되는 함수 값들의 변경이 반전될 수 있다.
집적 회로(400)는 또한 입력 값 및 패턴 매칭 회로의 비교 결과에 따라 함수 값을 선택하도록 구성되는 선택 회로(402)를 갖는다.
집적 회로(400)는 또한 선택된 함수 값에 기초하여 입력 값(404)에 대한 함수 값(405)을 출력하도록 구성되는 출력 회로(403)를 갖는다.
다시 말해, 엔트리 값(또는 입력 값)에 대한 함수의 함수 값을 결정하기 위해, 집적 회로는 입력 값의 한 세트의 변환된 버전들, 즉 매핑의 반복된 적용(예를 들어, 반복된 회전)을 위한 입력 값의 궤도, 또는 비트 패턴의 유사하게 변환된 버전들을 발생시킨다. 그 다음, 회로는 패턴 매칭에 의해 입력 값의 궤도에서 지정된 비트 패턴을 검색하거나, 입력 값에서 비트 패턴 및 비트 패턴의 변환된 버전들을 검색한다. 따라서, 회로는 그것이 저장된 함수 값을 갖는 궤도의 대표를 식별한다. 출력 회로는 입력 값의 함수 값에 대한 기초로서 이러한 저장된 함수 값을 취한다.
함수가 변환 하에 불변이면, 출력 회로는 저장된 함수 값을 사용할 수 있다. 그렇지 않으면, 그것은 궤도의 대표를 초래한 입력 값의 변환을 보상하기 위해 역 변환을 저장된 함수 값에 적용함으로써 입력 값에 대한 함수 값을 계산한다.
입력 값의 변환은 함수가 불변이거나 반전 매핑이 있는 매핑으로서 뷰잉될 수 있어, 매핑된 입력 값의 역으로 매핑된 함수 값은 입력 값의 함수 값과 동일하다.
확장 회로는 입력 값의 비트들을 재배열함으로써, 예를 들어 입력 값의 비트들의 순열(예를 들어, 하드 와이어링된)에 의해 입력 값의 상이한 버전들을 발생시킬 수 있다.
집적 회로(또는 상이한 함수들을 위한 함수 값들을 제공하는 복수의 그러한 집적 회로)는 예를 들어, 디코더 회로에 의해 사용될 수 있다. 이것은 하드웨어로 구현될 수 있으며, 즉 그것은 프로그램가능 프로세서 없이 작동하도록 구성될 수 있거나, 다시 말해, 그것은 하드 와이어링된다.
이하의 본문에서, 다양한 예시적 실시예들이 지정된다.
예시적 실시예 1은 도 4에 도시된 바와 같이, 입력 값에 대한 함수의 함수 값을 출력하기 위한 집적 회로이다.
예시적 실시예 2는 예시적 실시예 1에 따른 집적 회로이며, 패턴 매칭 회로의 비교 결과는 비트 패턴을 포함하는 값을 획득하기 위해 변환이 입력 값에 적용되어야 하는 최소 횟수, 또는 입력 값이 포함하는 값을 획득하기 위해 변환이 비트 패턴에 적용되어야 하는 최소 횟수를 표시한다.
예시적 실시예 3은 예시적 실시예 1 또는 2에 따른 집적 회로이며, 패턴 매칭 회로는 입력 값 및 입력 값의 다수의 변환된 버전을 지정된 비트 패턴과 비교하도록 구성되고, 선택 회로는 입력 값 및 입력 값의 변환된 버전들 중에서 지정된 비트 패턴을 갖는 값에 대응하는 비트 스트링에 대해 미리 저장되는 함수 값을 선택하도록 구성된다.
예시적 실시예 4는 예시적 실시예 3에 따른 집적 회로이며, 입력 값에 변환의 반복된 적용에 의해 입력 값의 다수의 변환된 버전을 발생시키도록 구성되는 확장 회로를 포함한다.
예시적 실시예 5는 예시적 실시예 1 또는 2에 따른 집적 회로이며, 패턴 매칭 회로는 입력 값을 비트 패턴 및 지정된 비트 패턴의 다수의 변환된 버전과 비교하도록 구성되고, 선택 회로는 비트 패턴을 포함하기 위해 변환되는 변환된 입력 값을 제공하고, 변환된 입력 값을 사용하여 함수 값을 선택하도록 구성된다.
예시적 실시예 6은 예시적 실시예 5에 따른 집적 회로이며, 선택 회로는 입력 값이 포함하는 값을 획득하기 위해 변환이 비트 패턴에 적용되어야 하는 최소 횟수에 따라 변환된 입력 값을 제공하도록 구성된다.
예시적 실시예 7은 예시적 실시예 5 또는 6에 따른 집적 회로이며, 선택 회로는 입력 값이 포함하는 값을 획득하기 위해 변환이 비트 패턴에 적용되어야 하는 최소 횟수로 입력 값에 변환의 역의 적용으로부터 유도되는 그러한 방식으로 변환된 입력 값을 제공하도록 구성된다.
예시적 실시예 8은 예시적 실시예 5 내지 실시예 7 중 어느 하나에 따른 집적 회로이며, 선택 회로는 변환된 입력 값에 대응하는 비트 스트링에 대해 미리 저장되는 함수 값을 선택하도록 구성된다.
예시적 실시예 9는 예시적 실시예 1 내지 실시예 8 중 어느 하나에 따른 집적 회로이며, 복수의 비트 스트링에 대해 미리 계산된 함수 값을 저장하도록 구성되는 메모리 회로를 포함하며, 선택 회로는 메모리 회로에 액세스함으로써 함수 값을 선택하도록 구성된다.
예시적 실시예 10은 예시적 실시예 9에 따른 집적 회로이며, 메모리 회로는 비휘발성 메모리 또는 휘발성 메모리이다.
예시적 실시예 11은 예시적 실시예 9에 따른 집적 회로이며, 메모리 회로는 ROM 저장 테이블이거나 메모리 회로는 로직 회로이다.
예시적 실시예 12는 예시적 실시예 1 내지 실시예 11 중 어느 하나에 따른 집적 회로이며, 출력 회로는 함수가 변환 하에 불변이면 선택된 함수 값을 입력 값에 대한 함수 값으로서 출력하도록 구성된다.
예시적 실시예 13은 예시적 실시예 1 내지 실시예 12 중 어느 하나에 따른 집적 회로이며, 출력 회로는 비트 패턴이 입력 값 자체에 포함되지 않으면, 역 변환을 선택된 함수 값에 적용함으로써 입력 값에 대한 함수 값을 결정하도록 구성된다.
예시적 실시예 14는 예시적 실시예 13에 따른 집적 회로이며, 출력 회로는 비트 패턴이 입력 값 자체에 포함되지 않으면, 비트 패턴을 포함하는 입력 값의 변환된 버전을 발생시키기 위해 변환이 입력 값에 적용되는 것과 동일한 횟수로 역 변환을 선택된 함수 값에 적용하도록 구성된다.
예시적 실시예 15는 예시적 실시예 1 내지 실시예 14 중 어느 하나에 따른 집적 회로이며, 변환 및 역 변환은 비트 회전들이다.
예시적 실시예 16은 예시적 실시예 1 내지 실시예 15 중 어느 하나에 따른 집적 회로이며, 함수는 변환 하에 불변 또는 등변이다.
예시적 실시예 17은 예시적 실시예 1 내지 실시예 16 중 어느 하나에 따른 집적 회로이며, 입력 값 및/또는 함수 값은 유한 필드의 필드 요소의 표현이다.
예시적 실시예 18은 예시적 실시예 17에 따른 집적 회로이며, 함수는 다항식 함수, 제크 로가리듬, 로가리듬 또는 지수 함수이다.
예시적 실시예 19는 예시적 실시예 17 또는 18에 따른 집적 회로이며, 필드는 GF(2n)이며 n > 1이다.
예시적 실시예 20은 예시적 실시예 1 내지 실시예 19 중 어느 하나에 따른 집적 회로이며, 입력 값은 2진 표현을 갖고 비트 패턴은 입력 값의 2진 표현보다 더 짧다.
예시적 실시예 21은 예시적 실시예 1 내지 실시예 20 중 어느 하나에 따른 집적 회로이며, 복수의 메모리 회로를 포함하고, 각각의 메모리 회로는 비트 패턴들 중 하나에 할당되고 비트 패턴을 갖는 복수의 비트 스트링에 대해 미리 계산된 함수 값을 저장하도록 구성되며, 선택 회로는 메모리 회로들 중 하나에 액세스함으로써 함수 값을 선택하도록 구성된다.
예시적 실시예 22는 예시적 실시예 21에 따른 집적 회로이며, 선택 회로는 복수의 메모리 회로로부터 비트 패턴에 기초하여 메모리 회로를 선택하고, 지정된 비트 패턴을 갖는 값의 나머지 비트들에 기초하여, 값에 대해 선택된 메모리 회로에 의해 저장되는 함수 값을 선택하도록 구성된다.
예시적 실시예 23은 예시적 실시예 1 내지 실시예 22 중 어느 하나에 따른 집적 회로이며, 입력 값이 지정된 입력 값과 동일한지를 체크하도록 구성되는 검출 회로를 포함하고 출력 회로는 입력 값이 지정된 입력 값과 동일하면 지정된 함수 값을 출력하도록 구성된다.
실시예 24는 디코더 집적 회로이며 디코더 집적 회로는 메시지 워드를 수신하도록 구성되는 수신기; 예시적 실시예 1 내지 실시예 23 중 어느 하나에 따른 하나 이상의 집적 회로들, 함수를 사용하여 수신된 메시지 워드 내의 에러들을 검출하고, 필요하면 정정하도록 구성되는 에러 검출 및 에러 정정 회로를 포함한다.
예시적 실시예 25는 예시적 실시예 24에 따른 디코더 집적 회로이며, 디코더 집적 회로는 예시적 실시예 1 내지 실시예 23 중 어느 하나에 따른 복수의 집적 회로를 가지며, 집적 회로들은 상이한 함수들에 대한 함수 값들을 출력하도록 구성되고 에러 검출 및 에러 정정 회로는 함수들을 사용하여 수신된 메시지 워드 내의 에러들을 검출하고, 필요하면 정정하도록 구성된다.
예시적 실시예 26은 예시적 실시예 24 또는 25에 따른 디코더 집적 회로이며, 수신기는 메모리 인터페이스를 갖고 메모리로부터 메시지 워드를 판독하도록 구성된다.
예시적 실시예 27은 예시적 실시예 24 내지 실시예 26 중 어느 하나에 따른 디코더 집적 회로이며, 에러 검출 및 에러 정정 회로는 순환 대수 코드에 따라 수신된 메시지 워드 내의 에러들을 검출하고, 필요하면 정정하도록 구성된다.
예시적 실시예 28은 예시적 실시예 27에 따른 디코더 집적 회로이며, 코드는 리드 솔로몬 코드 또는 BCH 코드이다.
본 발명이 특정 실시예들을 참조하여 주로 도시되고 설명되었지만, 다수의 변경이 이하의 청구항들에 의해 정의된 바와 같이, 본 발명의 본질 및 범위로부터 벗어나는 것 없이 그의 디자인 및 상세들에 관해 이루어질 수 있다는 점이 기술 분야에 익숙한 자들에 의해 이해되어야 한다. 따라서, 본 발명의 범위는 첨부된 청구항들에 의해 정의되고 청구항들의 문자적 의미 또는 균등 범위 내에 있는 임의의 변경들이 포함되도록 의도된다.
100: 보안 회로
101: 비휘발성 메모리
102: 마이크로프로세서
103: 하드웨어 회로
104: 인코더
105: 디코더
200: 디코더 회로
201: 에러 검출 및 에러 정정 회로
202: 함수 회로들
203: 테이블들
204: 입력 데이터
205: 출력 데이터
300: 함수 회로
301: 필드 요소 회전들
302: 패턴 매칭 회로
303: 어드레스 디코더
304: 테이블들
305: 대표 함수 값
306: 필드 요소 함수 값
400: 집적 회로
401: 확장 회로
402: 패턴 매칭 회로
403: 선택 회로
404: 출력 회로
405: 입력 값
406: 함수 값

Claims (28)

  1. 입력 값에 대한 함수의 함수 값을 출력하기 위한 집적 회로로서,
    상기 입력 값 및 상기 입력 값의 다수의 변환된 버전을 지정된 비트 패턴과 비교하고/하거나 상기 입력 값을 상기 비트 패턴 및 상기 지정된 비트 패턴의 다수의 변환된 버전과 비교하도록 구성되는 패턴 매칭 회로,
    - 상기 입력 값 또는 상기 지정된 비트 패턴의 변환된 버전들은 상기 입력 값 또는 상기 지정된 비트 패턴에 변환의 반복된 적용에 의해 생성되고, 상기 함수는 상기 변환 하에 불변이거나 상기 변환에 대해 역 변환이 존재하고, 그것에 의해 상기 입력 값들의 변환에 의해 야기되는 함수 값들의 변경이 반전될 수 있음 -,
    상기 입력 값 및 상기 패턴 매칭 회로의 비교 결과에 따라 함수 값을 선택하도록 구성되는 선택 회로, 및
    상기 선택된 함수 값에 기초하여 상기 입력 값에 대한 함수 값을 출력하도록 구성되는 출력 회로
    를 포함하는, 집적 회로.
  2. 제1항에 있어서, 상기 패턴 매칭 회로의 비교 결과는 상기 비트 패턴을 포함하는 값을 획득하기 위해 상기 변환이 상기 입력 값에 적용되어야 하는 최소 횟수, 또는 상기 입력 값이 포함하는 값을 획득하기 위해 상기 변환이 상기 비트 패턴에 적용되어야 하는 최소 횟수를 표시하는, 집적 회로.
  3. 제1항에 있어서, 상기 패턴 매칭 회로는 상기 입력 값 및 상기 입력 값의 다수의 변환된 버전을 상기 지정된 비트 패턴과 비교하도록 구성되고 상기 선택 회로는 상기 입력 값 및 상기 입력 값의 변환된 버전들 중에서 상기 지정된 비트 패턴을 갖는 값에 대응하는 비트 스트링에 대해 미리 저장되는 함수 값을 선택하도록 구성되는, 집적 회로.
  4. 제3항에 있어서, 상기 입력 값에 상기 변환의 반복된 적용에 의해 상기 입력 값의 다수의 변환된 버전을 발생시키도록 구성되는 확장 회로를 포함하는, 집적 회로.
  5. 제1항에 있어서, 상기 패턴 매칭 회로는 상기 입력 값을 상기 비트 패턴 및 상기 지정된 비트 패턴의 다수의 변환된 버전과 비교하도록 구성되고, 상기 선택 회로는 상기 비트 패턴을 포함하기 위해 변환되는 변환된 입력 값을 제공하고, 상기 변환된 입력 값을 사용하여 상기 함수 값을 선택하도록 구성되는, 집적 회로.
  6. 제5항에 있어서, 상기 선택 회로는 상기 입력 값이 포함하는 값을 획득하기 위해 상기 변환이 상기 비트 패턴에 적용되어야 하는 최소 횟수에 따라 상기 변환된 입력 값을 제공하도록 구성되는, 집적 회로.
  7. 제5항에 있어서, 상기 선택 회로는 상기 입력 값이 포함하는 값을 획득하기 위해 상기 변환이 상기 비트 패턴에 적용되어야 하는 최소 횟수로 상기 입력 값에 상기 변환의 역의 적용으로부터 유도되는 그러한 방식으로 상기 변환된 입력 값을 제공하도록 구성되는, 집적 회로.
  8. 제5항에 있어서, 상기 선택 회로는 상기 변환된 입력 값에 대응하는 비트 스트링에 대해 미리 저장되는 함수 값을 선택하도록 구성되는, 집적 회로.
  9. 제1항에 있어서, 복수의 비트 스트링에 대해 미리 계산된 함수 값을 저장하도록 구성되는 메모리 회로를 포함하며, 상기 선택 회로는 상기 메모리 회로에 액세스함으로써 상기 함수 값을 선택하도록 구성되는, 집적 회로.
  10. 제9항에 있어서, 상기 메모리 회로는 비휘발성 메모리 또는 휘발성 메모리인, 집적 회로.
  11. 제9항에 있어서, 상기 메모리 회로는 ROM 저장 테이블이거나 상기 메모리 회로는 로직 회로인, 집적 회로.
  12. 제1항에 있어서, 상기 출력 회로는 상기 함수가 상기 변환 하에 불변이면 상기 선택된 함수 값을 상기 입력 값에 대한 함수 값으로서 출력하도록 구성되는, 집적 회로.
  13. 제1항에 있어서, 상기 출력 회로는 상기 비트 패턴이 상기 입력 값 자체에 포함되지 않으면, 상기 역 변환을 상기 선택된 함수 값에 적용함으로써 상기 입력 값에 대한 함수 값을 결정하도록 구성되는, 집적 회로.
  14. 제13항에 있어서, 상기 출력 회로는 상기 비트 패턴이 상기 입력 값 자체에 포함되지 않으면, 상기 비트 패턴을 포함하는 입력 값의 변환된 버전을 발생시키기 위해 상기 변환이 상기 입력 값에 적용되는 것과 동일한 횟수로 상기 역 변환을 상기 선택된 함수 값에 적용하도록 구성되는, 집적 회로.
  15. 제1항에 있어서, 상기 변환 및 상기 역 변환은 비트 회전들인, 집적 회로.
  16. 제1항에 있어서, 상기 함수는 상기 변환 하에 불변 또는 등변인, 집적 회로.
  17. 제1항에 있어서, 상기 입력 값 및/또는 상기 함수 값은 유한 필드의 필드 요소의 표현인, 집적 회로.
  18. 제17항에 있어서, 상기 함수는 다항식 함수, 제크 로가리듬(Zech logarithm), 로가리듬 또는 지수 함수인, 집적 회로.
  19. 제17항에 있어서, 상기 필드는 GF(2n)이며 n > 1인, 집적 회로.
  20. 제1항에 있어서, 상기 입력 값은 2진 표현을 갖고 상기 비트 패턴은 상기 입력 값의 2진 표현보다 더 짧은, 집적 회로.
  21. 제1항에 있어서, 복수의 메모리 회로를 포함하며, 각각의 메모리 회로는 상기 비트 패턴들 중 하나에 할당되고 상기 비트 패턴을 갖는 복수의 비트 스트링에 대해 미리 계산된 함수 값을 저장하도록 구성되며, 상기 선택 회로는 상기 메모리 회로들 중 하나에 액세스함으로써 상기 함수 값을 선택하도록 구성되는, 집적 회로.
  22. 제21항에 있어서, 상기 선택 회로는 상기 복수의 메모리 회로로부터 비트 패턴에 기초하여 메모리 회로를 선택하고, 상기 지정된 비트 패턴을 갖는 값의 나머지 비트들에 기초하여, 상기 값에 대해 상기 선택된 메모리 회로에 의해 저장되는 함수 값을 선택하도록 구성되는, 집적 회로.
  23. 제1항에 있어서, 상기 입력 값이 지정된 입력 값과 동일한지를 체크하도록 구성되는 검출 회로를 포함하고 상기 출력 회로는 상기 입력 값이 상기 지정된 입력 값과 동일하면 지정된 함수 값을 출력하도록 구성되는, 집적 회로.
  24. 디코더 집적 회로로서,
    메시지 워드를 수신하도록 구성되는 수신기;
    제1항 내지 제23항 중 어느 한 항에 청구된 하나 이상의 집적 회로,
    상기 함수를 사용하여 상기 수신된 메시지 워드 내의 에러들을 검출하고, 필요하면 정정하도록 구성되는 에러 검출 및 에러 정정 회로
    를 포함하는, 디코더 집적 회로.
  25. 제24항에 있어서, 상기 집적 회로들은 상이한 함수들에 대한 함수 값들을 출력하도록 구성되고 상기 에러 검출 및 에러 정정 회로는 상기 함수들을 사용하여 상기 수신된 메시지 워드 내의 에러들을 검출하고 필요하면 정정하도록 구성되는, 디코더 집적 회로.
  26. 제24항에 있어서, 상기 수신기는 메모리 인터페이스를 갖고 메모리로부터 상기 메시지 워드를 판독하도록 구성되는, 디코더 집적 회로.
  27. 제24항에 있어서, 상기 에러 검출 및 에러 정정 회로는 순환 대수 코드에 따라 상기 수신된 메시지 워드 내의 에러들을 검출하고, 필요하면 정정하도록 구성되는, 디코더 집적 회로.
  28. 제27항에 있어서, 상기 코드는 리드 솔로몬(Reed-Solomon) 코드 또는 BCH 코드인, 디코더 집적 회로.
KR1020200150948A 2019-11-27 2020-11-12 집적 회로 KR102451475B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
DE102019132153.0 2019-11-27
DE102019132153.0A DE102019132153B3 (de) 2019-11-27 2019-11-27 Integrierte schaltung

Publications (2)

Publication Number Publication Date
KR20210066717A KR20210066717A (ko) 2021-06-07
KR102451475B1 true KR102451475B1 (ko) 2022-10-06

Family

ID=74239586

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020200150948A KR102451475B1 (ko) 2019-11-27 2020-11-12 집적 회로

Country Status (3)

Country Link
US (1) US11283469B2 (ko)
KR (1) KR102451475B1 (ko)
DE (1) DE102019132153B3 (ko)

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080215956A1 (en) 2002-04-05 2008-09-04 Seagate Technology Llc Computing an error detection code syndrome based on a correction pattern
US20190260394A1 (en) 2019-04-29 2019-08-22 Intel Corporation Device, system and method for determining bit reliability information

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20120079462A1 (en) * 2010-09-24 2012-03-29 SoftKrypt LLC Systems and methods of source software code obfuscation
WO2013059367A1 (en) * 2011-10-18 2013-04-25 Paul Marion Hriljac Systems and methods of source software code modification
US9594634B2 (en) * 2014-06-02 2017-03-14 Intel Corporation Techniques to efficiently compute erasure codes having positive and negative coefficient exponents to permit data recovery from more than two failed storage units
DE102015210651B4 (de) * 2015-06-10 2022-10-27 Infineon Technologies Ag Schaltung und Verfahren zum Testen einer Fehlerkorrektur-Fähigkeit
KR20170007635A (ko) * 2015-07-10 2017-01-19 에스케이하이닉스 주식회사 컨트롤러, 반도체 메모리 시스템 및 그것의 동작 방법
US10191809B2 (en) * 2016-08-17 2019-01-29 International Business Machines Corporation Converting a data chunk into a ring algebraic structure for fast erasure coding

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080215956A1 (en) 2002-04-05 2008-09-04 Seagate Technology Llc Computing an error detection code syndrome based on a correction pattern
US20190260394A1 (en) 2019-04-29 2019-08-22 Intel Corporation Device, system and method for determining bit reliability information

Also Published As

Publication number Publication date
US11283469B2 (en) 2022-03-22
KR20210066717A (ko) 2021-06-07
DE102019132153B3 (de) 2021-02-18
US20210159918A1 (en) 2021-05-27

Similar Documents

Publication Publication Date Title
US10554398B2 (en) Cryptographic key production from a physical unclonable function
JP4152887B2 (ja) リニアブロックコードに関する消去箇所−及び−単一−エラー訂正デコーダ
EP2789116B1 (en) Soft decision error correction for memory based puf using a single enrollment
US20100299575A1 (en) Method and system for detection and correction of phased-burst errors, erasures, symbol errors, and bit errors in a received symbol string
US20100011247A1 (en) Method and apparatus for parallel ecc error location
US10879934B2 (en) Integrated circuit and method for processing an encoded message word
US7047478B2 (en) Multipurpose method for constructing an error-control code for multilevel memory cells operating with a variable number of storage levels, and multipurpose error-control method using said error-control code
CN103051445A (zh) 产生位串的装置和方法
US10200066B2 (en) Code reconstruction scheme for multiple code rate TPC decoder
US10326473B2 (en) Symbol-based coding for NAND flash devices
US10956259B2 (en) Error correction code memory device and codeword accessing method thereof
US7085988B1 (en) Hashing system utilizing error correction coding techniques
KR102451475B1 (ko) 집적 회로
US20200097360A1 (en) System and method of reducing logic for multi-bit error correcting codes
CN106708654A (zh) 一种用于NANDflash的BCH纠错码的电路结构
US6772390B2 (en) Erasure correction for ECC entities
Martínez-Peñas et al. Locally repairable convolutional codes with sliding window repair
CN110492889B (zh) 检测纠正两位错误的编码解码方法、编码解码器及处理器
CN110908827A (zh) 用于NAND Flash闪存纠错的并行BCH解码方法
US20060010363A1 (en) Method and system for correcting low latency errors in read and write non volatile memories, particularly of the flash type
Lala A single error correcting and double error detecting coding scheme for computer memory systems
Tallini et al. Reed-Muller codes, elementary symmetric functions and asymmetric error correction
Malofey et al. Enhancing the functionality of the procedures of encoding and decoding BCH codes
Hildebrandt et al. Lower Bound-oriented Parameter Calculation for AN Coding
WO2022117190A1 (en) Devices for product polar-code encoding and decoding

Legal Events

Date Code Title Description
E701 Decision to grant or registration of patent right