KR20200097337A - 시스템 온 칩을 위한 인라인 ecc 기능 - Google Patents

시스템 온 칩을 위한 인라인 ecc 기능 Download PDF

Info

Publication number
KR20200097337A
KR20200097337A KR1020207020737A KR20207020737A KR20200097337A KR 20200097337 A KR20200097337 A KR 20200097337A KR 1020207020737 A KR1020207020737 A KR 1020207020737A KR 20207020737 A KR20207020737 A KR 20207020737A KR 20200097337 A KR20200097337 A KR 20200097337A
Authority
KR
South Korea
Prior art keywords
data
memory
ecc
transaction
outgoing
Prior art date
Application number
KR1020207020737A
Other languages
English (en)
Inventor
이갈 아르벨
이안 에이. 스와브릭
사그히르 아흐마드
Original Assignee
자일링크스 인코포레이티드
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 자일링크스 인코포레이티드 filed Critical 자일링크스 인코포레이티드
Publication of KR20200097337A publication Critical patent/KR20200097337A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/78Architectures of general purpose stored program computers comprising a single central processing unit
    • G06F15/7807System on chip, i.e. computer system on a single chip; System in package, i.e. computer system on one or more chips in a single package
    • G06F15/7825Globally asynchronous, locally synchronous, e.g. network on chip
    • 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
    • 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/1068Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices in sector programmable memories, e.g. flash disk
    • 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
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/78Architectures of general purpose stored program computers comprising a single central processing unit
    • G06F15/7807System on chip, i.e. computer system on a single chip; System in package, i.e. computer system on one or more chips in a single package
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Computing Systems (AREA)
  • Microelectronics & Electronic Packaging (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Detection And Correction Of Errors (AREA)
  • Detection And Prevention Of Errors In Transmission (AREA)
  • Memory System (AREA)

Abstract

예시적인 집적 회로(IC, integrated circuit)는 네트워크 온 칩(NoC, network-on-chip)(106), NoC에 커플링된 마스터 디바이스(302), IC에 커플링된 메모리를 제어하도록 구성되는, NoC에 커플링된 메모리 제어기(304), 및 NoC에 커플링된 인라인 에러 정정 코드(ECC, error-correcting code) 회로(112)를 포함한다. ECC 회로는 메모리를 타겟팅하는 마스터 디바이스로부터 판독 트랜잭션 및 기록 트랜잭션을 수신하고, 판독 트랜잭션 및 기록 트랜잭션에 기초하여 ECC 데이터를 계산하며, 발신(outgoing) 트랜잭션들을 메모리 제어기에 제공하도록 구성된다.

Description

시스템 온 칩을 위한 인라인 ECC 기능
본 개시물의 예들은 일반적으로 전자 회로들, 특히 시스템 온 칩(SoC, system-on-chip)을 위한 인라인(inline) 에러 정정 코드(ECC, error-correcting code) 기능에 관한 것이다.
동적 랜덤 액세스 메모리(DRAM, Dynamic Random Access Memory)의 에러 정정 코드(ECC) 보호는 전통적으로 여분의 "대역 외(out of bane)" 데이터 비트들(예를 들어, 64 비트 데이터 + 8 비트 패리티)를 사용하여 구현된다. 이 접근법은 ECC 데이터를 저장하기 위한 하나 이상의 DRAM 컴포넌트 및 추가의 인터페이스 입/출력(IO, input/output) 핀들에 대한 요구로 인해 비용이 많이 든다.
또한, 버스 구조들은 일부 시스템 온 칩(SoC) 집적 회로들(SoCs)에 적합하지 않은 것으로 밝혀졌다. 회로 집적이 증가하면 트랜잭션들은 차단될 수 있고, 증가된 용량은 시그널링 문제들을 생성할 수 있다. 버스 구조 대신 SoC의 컴포넌트들 간의 데이터 통신을 지원하기 위해 네트워크 온 칩(NoC, Network On Chip)이 사용될 수 있다.
NoC는 일반적으로 칩 상의 소스 회로들("소스들")로부터 칩 상의 목적지 회로들("목적지들")로 패킷들을 라우팅하는 스위치들의 콜렉션을 포함한다. 칩 내의 스위치들의 레이아웃은 원하는 소스들로부터 원하는 목적지들로의 패킷 전송들을 지원한다. 패킷은 소스로부터 목적지로의 전송에서 여러 스위치들을 통과할 수 있다. 각각의 스위치는 네트워크의 하나 이상의 다른 스위치에 연결될 수 있고, 입력 패킷을 연결된 스위치 중 하나 또는 목적지로 라우팅한다.
시스템 온 칩(SoC)에 대한 인라인 에러 정정 코드(ECC) 기능에 대한 기법들이 설명된다. 일예에서, 집적 회로(IC, integrated circuit)는: 네트워크 온 칩(NoC, network-on-chip); NoC에 커플링된 마스터 디바이스; IC에 커플링된 메모리를 제어하도록 구성된, NoC에 커플링된 메모리 제어기; 및 NoC에 커플링된 인라인 에러 정정 코드(ECC) 회로를 포함하며, ECC 회로는 메모리를 타겟팅하는 판독 트랜잭션 및 기록 트랜잭션을 마스터 디바이스로부터 수신하고, 판독 트랜잭션 및 기록 트랜잭션에 기초하여 ECC 데이터를 계산하며, 발신(outgoing) 트랜잭션들을 메모리 제어기에 제공하도록 구성된다.
다른 예에서, 집적 회로(IC)의 메모리 관리 방법은: 네트워크 온 칩(NoC)을 통해 인라인 에러 정정 코드(ECC) 회로에서 마스터 디바이스로부터 트랜잭션을 수신하는 단계 ― 트랜잭션은 IC에 커플링된 메모리를 타겟팅함 ― ; 인라인 ECC 회로에서 트랜잭션에 기초하여 ECC 데이터를 결정하는 단계; 및 메모리를 제어하도록 구성되는 NoC에 커플링된 메모리 제어기에 하나 이상의 발신 트랜잭션을 제공하는 단계를 포함한다.
또 다른 예에서, 집적 회로(IC)는: 프로세싱 시스템; 프로그램가능 로직 영역; 프로세싱 시스템 및 프로그램가능 로직 영역을 연결하는 네트워크 온 칩(NoC); NoC에 커플링된 마스터 디바이스; IC에 커플링된 메모리를 제어하도록 구성된, NoC에 커플링된 메모리 제어기; 및 NoC에 커플링된 인라인 에러 정정 코드(ECC) 회로를 포함하며, ECC 회로는 메모리를 타겟팅하는 판독 트랜잭션 및 기록 트랜잭션을 마스터 디바이스로부터 수신하고, 판독 트랜잭션 및 기록 트랜잭션에 기초하여 ECC 데이터를 계산하며, 발신 트랜잭션들을 메모리 제어기에 제공하도록 구성된다.
이들 및 다른 양상들은 다음의 상세한 설명을 참조하여 이해될 수 있다.
상기 열거된 특징들이 상세히 이해될 수 있는 방식으로, 앞서 간략히 요약된 구체적인 설명은 예시적인 구현예들을 참조로 하여 이루어질 수 있는데, 이러한 예시적인 구현예들의 일부는 첨부된 도면들에 예시되어 있다. 그러나, 첨부된 도면은 전형적인 예시적인 구현예들을 예시하고, 따라서 그 범위를 제한하는 것으로 간주되지 않아야 한다는 것을 주목해야 한다.
도 1은 일예에 따른 시스템 온 칩(SoC)을 도시한 블록도이다.
도 2는 일예에 따른 네트워크 온 칩(NoC)을 도시한 블록도이다.
도 3은 일예에 따른 메모리 시스템을 도시한 블록도이다.
도 4는 일예에 따른 ECC 기록 트랜잭션을 프로세싱하는 방법이다.
도 5는 일예에 따른 판독 트랜잭션을 프로세싱하는 방법을 도시한 흐름도이다.
도 6은 본 명세서에 설명된 기법들이 이용될 수 있는 프로그램가능 집적 회로(IC)를 도시한 블록도이다.
도 7은 일예에 따른 프로그램가능 IC의 시스템 온 칩(SoC) 구현예를 도시한 블록도이다.
도 8은 본 명세서에 설명된 기법들이 이용될 수 있는 필드 프로그램가능 게이트 어레이(FPGA, Field Programmable Gate Array) 아키텍처의 개략도이다.
이해를 돕기 위해, 가능한 경우, 도면에 공통인 동일한 엘리먼트들을 지정하기 위해 동일한 참조 번호들이 사용되었다. 일예의 엘리먼트들은 다른 예에 유리하게 포함될 수 있는 것으로 고려된다.
이하, 도면들을 참조하여 다양한 피처들이 설명된다. 도면들은 축척에 따라 도시되거나 또는 축적에 따라 도시되지 않을 수 있으며, 유사한 구조들 또는 기능들의 엘리먼트들은 도면들 전반에 걸쳐 유사한 참조 번호들로 표시된다는 것을 주목해야 한다. 도면들은 단지 피처들의 설명을 용이하게 하도록 의도된 것임을 주목해야 한다. 이들은 청구된 발명의 완전한 설명으로서 또는 청구된 발명의 범위에 대한 제한으로서 의도되지 않는다. 또한, 예시된 예는 도시된 모든 양상들 또는 장점들을 가질 필요는 없다. 특정 예와 관련하여 설명된 양상 또는 장점은 반드시 그 예에 제한되지 않으며, 예시되지 않았거나 또는 명시적으로 설명되지 않은 경우에도 임의의 다른 예들에서 실시될 수 있다.
도 1은 일예에 따른 시스템 온 칩(SoC)(102)을 도시한 블록도이다. SoC(102)는 프로세싱 시스템(104), 네트워크 온 칩(NoC)(106), 인라인 에러 정정 코드(ECC) 회로부(112) 및 하나 이상의 프로그램가능 영역(108)을 포함하는 집적 회로(IC)이다. SoC(102)는 비휘발성 메모리(NVM, nonvolatile memory)(110) 및 동적 랜덤 액세스 메모리(DRAM)(114)와 같은 외부 회로들에 커플링될 수 있다. 일예에서, 프로세싱 시스템(104)은 NVM(110) 및/또는 DRAM(114)을 제어하기 위한 하나 이상의 메모리 제어기(118)를 포함한다. 다른 예에서, 프로그램가능 로직 영역(들)(108)은 NVM(110) 및/또는 DRAM(114)을 제어하기 위해 강화(hardened) 회로들 또는 구성가능 로직으로서 구현되는 하나 이상의 메모리 제어기(들)(116)를 포함한다. 또 다른 예에서, SoC(102)는 메모리 제어기(들)(118) 및 메모리 제어기(들)(116) 모두를 포함한다.
NVM(110)은 NoC(106) 및 프로그램가능 로직 영역(들)(108)을 구성하는 것과 같이 SoC(102)를 구성하기 위해 SoC(102)에 로딩될 수 있는 데이터를 저장할 수 있다. DRAM(114)은 프로세싱 시스템(104) 및 프로그램가능 로직 영역(108)에 구성된 임의의 회로들을 포함하는 SoC(102)의 다양한 회로들에 의해 사용된 데이터를 저장할 수 있다. 프로세싱 시스템(104), NoC(106), 및 프로그램가능 로직 영역(들)(108)의 예들이 아래에 설명된다. 일반적으로, 프로세싱 시스템(104)은 NoC(106)를 통해 프로그램가능 로직 영역(들)(108)에 연결된다.
인라인 ECC 회로부(112)는 추가적인 ECC 컴포넌트가 DRAM(114)에 필요하지 않도록, 인라인 ECC 기능을 제공한다. 일부 기법들에서, 인라인 ECC 기능은 메모리 제어기(들)(118) 및/또는 메모리 제어기(들)(116)의 일부로서 구현될 수 있다. 그러나, 본 명세서에 설명된 예들에서, 인라인 ECC 기능은 NoC(106)에 부착된 개별 회로(인라인 ECC 회로부(112))로서 구현된다. 이는 복잡한 DRAM 제어기 회로부를 인라인 ECC 기능으로부터 분리하는 모듈식 접근법을 제공한다. 이 기법은 강화 DRAM 제어기들, 소프트 DRAM 제어기들(예를 들어, 프로그램가능 로직 영역(들)(108)에 구성된 DRAM 제어기들) 뿐만 아니라, 다른 유형의 메모리들(예를 들어, 정적 RAM(SRAM) 또는 임의의 다른 유형의 RAM과 함께 사용될 수 있다. 인라인 ECC 회로부(112)는 최소한의 영향으로 SoC(102)에 사용된 임의의 시스템 구현예에 추가되거나 그로부터 제거될 수 있다. 인라인 ECC 회로부(112)는 또한 ECC 데이터가 저장되는 장소 및 방법에 대해 더 많은 유연성을 제공한다.
도 2는 일예에 따른 NoC(106)를 도시한 블록도이다. NoC(106)는 NoC 마스터 유닛들(NMU, NoC master unit)(202), NoC 슬레이브 유닛들(NSU, NoC slave unit)(204), 네트워크(214), NoC 주변장치 상호접속부(NPI, NoC peripheral interconnect)(210), 및 레지스터들(Reg)(212)을 포함한다. 각각의 NMU(202)는 마스터 엔드포인트를 NoC(106)에 연결하는 입구(ingress) 회로이다. 각각의 NSU(204)는 NoC(106)를 슬레이브 엔드포인트에 연결하는 출구(egress) 회로이다. NMU들(202)은 네트워크(214)를 통해 NSU들(204)에 연결된다. 일예에서, 네트워크(214)는 NoC 패킷 스위치들(206) 및 NoC 패킷 스위치들(206) 사이의 라우팅(208)을 포함한다. 각각의 NoC 패킷 스위치(206)는 NoC 패킷들의 스위칭을 수행한다. NoC 패킷 스위치들(206)은 복수의 물리 채널들을 구현하기 위해 라우팅(208)을 통해 서로에 그리고 NMU들(202) 및 NSU들(204)에 연결된다. NoC 패킷 스위치들(206)은 또한 물리적 채널당 다수의 가상 채널들을 지원한다. NPI(210)는 NMU들(202), NSU들(204), 및 NoC 패킷 스위치들(206)을 프로그래밍하기 위한 회로부를 포함한다. 예를 들어, NMU들(202), NSU들(204), 및 NoC 패킷 스위치들(206)은 그 기능을 결정하는 레지스터들(212)을 포함할 수 있다. NPI(210)는 기능을 설정하기 위하여 그 프로그래밍을 위해 레지스터들(212)에 커플링된 상호접속부를 포함한다. NoC(106)에 대한 구성 데이터는 NVM(110)에 저장될 수 있고, NoC(106)를 프로그래밍하기 위해 NPI(210)에 제공될 수 있다.
도 3은 일예에 따른 메모리 시스템(300)을 도시한 블록도이다. 메모리 시스템(300)은 하나 이상의 마스터 디바이스(들)(302), NoC(106), 하나 이상의 메모리 제어기들(304), 인라인 ECC 회로부(112), 및 메모리(306)를 포함한다. 마스터 디바이스(들)(302)는 프로세싱 시스템(104)의 회로들 또는 프로그램가능 로직 영역(들)(108)의 회로들(예를 들어, 강화 회로들 또는 구성된 회로들)과 같은, SoC(102)의 회로들이다. 마스터 디바이스(들)(302)는 NoC(106)에서 NMU(202)에 커플링된다. 메모리 제어기(들)(304)는 프로세싱 시스템(104) 및/또는 프로그램가능 로직 영역(들)(108)에 배치된다. 메모리 제어기(들)(304)는 메모리(306)를 제어하도록 구성된다. 메모리(306)는 하나 이상의 DRAM 모듈, SRAM 모듈들 및/또는 다른 유형의 메모리 모듈들과 같은, 하나 이상의 메모리 모듈을 포함할 수 있다. NoC(106)는 마스터 디바이스(들)(302)와 메모리 제어기(들)(304) 사이에서 메모리 트랜잭션들(예를 들어, 판독 및 기록 트랜잭션들)을 라우팅한다.
동작시, SoC(102)의 어드레스 공간에서 하나 이상의 어드레스 범위는 ECC로 보호되도록 선택될 수 있지만, 어드레스 공간의 다른 부분들은 보호되지 않은 채로 유지될 수 있다. 비보호 영역들로의 메모리 트랜잭션들은 NoC(106)를 통해 마스터 디바이스(들)(302)와 메모리 제어기(들)(304) 사이에서 직접 라우팅될 수 있다. ECC 보호 영역들로의 메모리 트랜잭션들은 인라인 ECC 회로부(112)를 통해 라우팅되며, 인라인 ECC 회로부(112)는 마스터 디바이스(들)(302) 및 메모리 제어기(들)(304)(즉, 슬레이브 디바이스들) 모두에 투명한 방식으로 ECC 데이터의 생성 및 검사를 관리한다.
도 4는 일예에 따른 ECC 기록 트랜잭션을 프로세싱하는 방법(400)이다. 방법(400)은 인라인 ECC 회로부(112)가 마스터 디바이스(302)로부터 기록 트랜잭션을 수신하는 단계(402)에서 시작한다. 기록 트랜잭션은 메모리(306)의 어드레싱된 위치에 기록될 데이터를 포함한다. 단계(404)에서, 인라인 ECC 회로부(112)는 기록될 데이터(예를 들어, ECC 패리티 데이터)에 기초하여 ECC 데이터를 계산한다. 단계(406)에서, 인라인 ECC 회로부(112)는 하나 이상의 발신(outgoing) 트랜잭션을 생성하여 원본 데이터 및 ECC 데이터를 하나 이상의 목적지에 기록한다. 예에서, 단계(408)에서, 인라인 ECC 회로부(112)는 ECC 데이터를 메모리(306)의 동일한 메모리 영역에 있는 원본 데이터와 산재시킨다. 그러한 경우에, 인라인 ECC 회로부(112)는 단일 발신 트랜잭션을 생성할 수 있다. 예를 들어, 메모리(306)가 페이지들에서 액세스되면, 원본 데이터 및 ECC 데이터 모두가 동일한 페이지(들)에 저장될 수 있다.
다른 예에서, 단계(410)에서, 인라인 ECC 회로부(112)는 ECC 데이터를 동일한 메모리의 별개의 메모리 영역에 또는 원본 데이터와 별개의 메모리 모듈에 저장한다. 그러한 경우에, 인라인 ECC 회로부(112)는 원본 데이터에 대한 하나의 트랜잭션 및 ECC 데이터를 기록하기 위한 다른 트랜잭션을 생성한다. 예를 들어, 별도의 메모리 영역들은 동일한 메모리에서 별도의 페이지들일 수 있다. 별개의 메모리 모듈이 사용되는 경우, 별개의 메모리 모듈은 원본 데이터를 저장하는데 사용된 메모리 모듈과 상이한 유형 또는 동일한 유형일 수 있다.
도 5는 일예에 따른 판독 트랜잭션을 프로세싱하는 방법(500)을 도시한 흐름도이다. 방법(500)은 인라인 ECC 회로부(112)가 마스터 디바이스(302)로부터 판독 트랜잭션을 수신하는 단계(502)에서 시작한다. 판독 트랜잭션은 데이터를 판독할 메모리(306)의 어드레스를 포함한다. 단계(504)에서, 인라인 ECC 회로부(112)는 하나 이상의 발신 트랜잭션을 생성하여 원본 데이터 및 ECC 데이터를 그들의 개별 저장 위치들로부터 판독한다. 위에서 언급한 바와 같이, ECC 데이터는 원본 데이터와 동일한 메모리 영역에, 상이한 메모리 영역에, 또는 상이한 메모리 모듈에 저장될 수 있다. 인라인 ECC 회로부(112)는 원본 데이터 및 ECC 데이터 모두를 판독하기 위한 하나 이상의 트랜잭션을 생성한다.
단계(506)에서, 인라인 ECC 회로부(112)는 ECC 데이터 및 원본 데이터에 기초하여 에러들을 검출 및 정정하는데 사용되는 ECC 신드롬(syndrome)들을 계산한다. 단계(508)에서, ECC 회로부(112)는 계산된 ECC 신드롭들에 기초하여 원본 데이터의 임의의 에러들을 처리한다. 단계(510)에서, 인라인 ECC 회로부(112)는 요청된 데이터만을 포함하는 판독 트랜잭션에 대한 응답을 생성하고 그 응답을 마스터 디바이스(302)에 전송한다. ECC 기능은 마스터 디바이스(302) 및 메모리 제어기(304)에 투명하다.
도 6은 본 명세서에 설명된 인라인 ECC 회로부(112)가 사용될 수 있는, 일예에 따른 프로그램가능 IC(1)를 도시한 블록도이다. 프로그램가능 IC(1)는 프로그램가능 로직(3), 구성 로직(25), 및 구성 메모리(26)를 포함한다. 프로그램가능 IC(1)는 비휘발성 메모리(27), DRAM(28), 및 기타 회로들(29)과 같은 외부 회로들에 커플링될 수 있다. 프로그램가능 로직(3)은 로직 셀들(30), 지원 회로들(31), 및 프로그램가능 상호접속부(32)를 포함한다. 로직 셀들(30)은 복수의 입력들의 일반적인 로직 기능들을 구현하도록 구성될 수 있는 회로들을 포함한다. 지원 회로들(31)은 트랜시버들, 입/출력 블록들, 디지털 신호 프로세서들, 메모리들 등과 같은 전용 회로들을 포함한다. 로직 셀들 및 지원 회로들(31)은 프로그램가능 상호접속부(32)를 사용하여 상호접속될 수 있다. 로직 셀들(30)을 프로그래밍하고, 지원 회로들(31)의 파라미터들을 설정하고, 프로그램가능 상호접속부(32)를 프로그래밍하기 위한 정보는 구성 로직(25)에 의해 구성 메모리(26)에 저장된다. 구성 로직(25)은 비휘발성 메모리(27) 또는 임의의 다른 소스(예를 들어, DRAM(28) 또는 다른 회로들(29))로부터 구성 데이터를 얻을 수 있다. 일부 예들에서, 프로그램가능 IC(1)는 프로세싱 시스템(2)을 포함한다. 프로세싱 시스템(2)은 마이크로프로세서(들), 메모리, 지원 회로들, IO 회로들 등을 포함할 수 있다.
도 7은 일예에 따른 프로그램가능 IC(1)의 시스템 온 칩(SoC) 구현예를 도시한 블록도이다. 일예에서, 프로그램 가능 IC(1)는 프로세싱 시스템(2) 및 프로그램가능 로직(3)을 포함한다. 프로세싱 시스템(2)은 실시간 프로세싱 유닛(RPU, real-time processing unit)(4), 애플리케이션 프로세싱 유닛(APU, application processing unit)(5), 그래픽 프로세싱 유닛(GPU, graphics processing unit)(6), 구성 및 보안 유닛(CSU, onfiguration and security unit)(12), 플랫폼 관리 유닛(PMU, platform management unit)(122) 등과 같은 다양한 프로세싱 유닛들을 포함한다. 프로세싱 시스템(2)은 또한 온 칩 메모리(OCM, on-chip memory)(14), 트랜시버들(7), 주변 장치들(8), 상호접속부(16), DMA 회로(9), 메모리 제어기(10), 주변 장치들15), 및 다중화된 IO(MIO, multiplexed IO) 회로(13)와 같은 다양한 지원 회로들을 포함한다. 프로세싱 유닛들 및 지원 회로들은 상호접속부(16)에 의해 상호접속된다. PL(3)은 상호접속부(16)에 또한 커플링된다. 트랜시버들(7)은 외부 핀들(24)에 커플링된다. PL(3)은 외부 핀들(23)에 커플링된다. 메모리 제어기(10)는 외부 핀들(22)에 커플링된다. MIO(13)는 외부 핀들(20)에 커플링된다. PS(2)는 일반적으로 외부 핀들(21)에 커플링된다. APU(5)는 CPU(17), 메모리(18) 및 지원 회로들(19)을 포함할 수 있다. APU(5)는 L1 및 L2 캐시 등을 포함하는 다른 회로부를 포함할 수 있다. RPU(4)는 L1 캐시들 등과 같은 추가적인 회로부를 포함할 수 있다. 상호접속부(16)는 캐시-코히어런트(cache-coherent) 상호접속부 등을 포함할 수 있다.
PS(2)를 참조하면, 프로세싱 유닛들 각각은 하나 이상의 중앙 처리 장치(CPU, central processing unit) 및 연관 회로들, 예컨대 메모리들, 인터럽트 제어기들, 직접 메모리 액세스(DMA, direct memory access) 제어기들, 메모리 관리 유닛들(MMU, memory management unit), 부동 소수점 유닛들(FPU, floating point unit) 등을 포함한다. 상호접속부(16)는 프로세싱 유닛들을 상호접속할 뿐만 아니라, PS(2)의 다른 컴포넌트들을 프로세싱 유닛들에 상호접속시키도록 구성된 다양한 스위치들, 버스들, 통신 링크들 등을 포함한다.
OCM(14)은 하나 이상의 RAM 모듈을 포함하며, 이 RAM 모듈은 PS(2) 전반에 분포될 수 있다. 예를 들어, OCM(14)은 배터리 백업된 RAM(BBRAM, battery backed RAM), 타이트하게 커플링된 메모리(TCM, tightly coupled memory) 등을 포함할 수 있다. 메모리 제어기(10)는 외부 DRAM에 액세스하기 위한 DRAM 인터페이스를 포함할 수 있다. 주변장치들(8, 15)은 PS(2)에 인터페이스를 제공하는 하나 이상의 컴포넌트를 포함할 수 있다. 예를 들어, 주변 장치들(132)은 그래픽 프로세싱 유닛(GPU), 디스플레이 인터페이스(예를 들어, 디스플레이 포트(DisplayPort), 고화질 멀티미디어 인터페이스(HDMI, High-Definition Multimedia Interface) 포트 등), 범용 직렬 버스(USB, universal serial bus) 포트들, 이더넷 포트들, 범용 비동기 송수신기(UART, universal asynchronous transceiver) 포트들, 직렬 주변 장치 인터페이스(SPI, serial peripheral interface) 포트들, 범용 IO(GPIO, general purpose IO) 포트들, 직렬 고급 기술 첨부(SATA, serial advanced technology attachment) 포트들, PCIe 포트들 등을 포함할 수 있다. 주변장치들(15)은 MIO(13)에 커플링될 수 있다. 주변장치들(8)은 트랜시버들(7)에 커플링될 수 있다. 트랜시버들(7)은 시리얼라이저/디시리얼라이저(SERDES, serializer/deserializer) 회로들, MGT들 등을 포함할 수 있다.
도 8은 트랜시버들(37), 구성가능 로직 블럭들(CLB, configurable logic block)(33), 랜덤 액세스 메모리 블럭들(BRAM, random access memory block)(34), 입/출력 블럭들(IOB, input/output block)(36), 구성 및 클록킹 로직(CONFIG/CLOCKS, configuration and clocking logic)(42), 디지털 신호 프로세싱 블럭들(DSP, digital signal processing block)(35), 특수화된 입/출력 블럭들(I/O, input/output block)(41)(예를 들어, 구성 포트들 및 클럭 포트들), 및 기타 프로그램가능 로직(39), 예컨대 디지털 클럭 매니저들, 아날로그-디지털 컨버터들, 시스템 모니터링 로직 등을 포함하는 방대한 갯수의 상이한 프로그램가능 타일들을 포함한 프로그램가능 IC(1)의 필드 프로그램가능 게이트 어레이(FPGA, field programmable gate array) 구현예를 예시한다. FPGA는 또한 PCIe 인터페이스들(40), 아날로그-디지털 변환기들(ADC)(38) 등을 포함할 수 있다.
일부 FPGA들에서, 각각의 프로그램가능 타일들은 도 8의 상단에 포함된 예들에 의해 보여지는 바와 같이, 동일한 타일 내의 프로그램가능 로직 엘리먼트의 입력 및 출력 단자(48)에 연결되는 적어도 하나의 프로그램가능 상호접속 엘리먼트(INT, interconnect element)(43)를 포함할 수 있다. 각각의 프로그램가능한 상호접속 엘리먼트(43)는 또한 동일한 타일 또는 다른 타일(들)에서 인접한 프로그램가능 상호접속 엘리먼트(들)의 상호접속 세그먼트들(49)에 대한 연결부를 포함할 수 있다. 각각의 프로그램가능 상호접속 엘리먼트(43)는 또한 로직 블록들(미도시) 간의 일반적인 라우팅 리소스들의 상호접속 세그먼트들(50)에 대한 접속부들을 포함할 수 있다. 일반적인 라우팅 리소스들은 상호접속 세그먼트들(예를 들어, 상호접속 세그먼트들(50))의 트랙들을 포함하는 로직 블록들(미도시)과 상호접속 세그먼트들을 연결하기 위한 스위치 블록들(미도시) 사이의 라우팅 채널들을 포함할 수 있다. 일반적인 라우팅 리소스들의 상호접속 세그먼트들(예를 들어, 상호접속 세그먼트들(50))은 하나 이상의 로직 블록에 걸쳐있을 수 있다. 일반적인 라우팅 리소스들과 함께 취해진 프로그램가능 상호접속 엘리먼트들(43)은 예시된 FPGA를 위한 프로그램가능 상호접속 구조(프로그램가능 상호접속부)를 구현한다.
예시적인 구현예에서, CLB(33)는 사용자 로직을 구현하도록 프로그램될 수 있는 구성가능 로직 엘리먼트(CLE, configurable logic element)(44) 및 단일 프로그램가능 상호접속 엘리먼트(INT, interconnect element)(43)를 포함할 수 있다. BRAM(34)은 하나 이상의 프로그램가능 상호접속 엘리먼트에 부가하여 BRAM 로직 엘리먼트(BRL)(45)를 포함할 수 있다. 통상적으로, 타일에 포함된 상호접속 엘리먼트들의 개수는 타일의 높이에 좌우된다. 도시된 예에서, BRAM 타일은 5개의 CLB들과 동일한 높이를 갖지만, 다른 개수(예를 들어, 4개)가 또한 사용될 수 있다. DSP 타일(35)은 적절한 개수의 프로그램가능 상호접속 엘리먼트들에 부가하여 DSP 로직 엘리먼트(DSPL)(46)를 포함할 수 있다. IOB(36)는, 예컨대 프로그램가능 상호접속 엘리먼트(43)의 하나의 인스턴스에 부가하여 입/출력 로직 엘리먼트(IOL, input/output logic element)(47)의 두개의 인스턴스들을 포함할 수 있다. 당업자에게 명백한 바와 같이, 예를 들어 I/O 로직 엘리먼트(47)에 연결된 실제 I/O 패드들은 통상적으로 입/출력 로직 엘리먼트(47)의 영역에 국한되지 않는다.
도시된 예에서, (도 8에서 도시된) 다이의 중심 근처의 수평 영역은 구성 로직, 클럭 로직, 및 기타 제어 로직을 위해 이용된다. 이러한 수평 영역 또는 열로부터 연장하는 수직 열들(51)은 FPGA의 폭에 걸쳐 클록들 및 구성 신호들을 분배하는데 사용된다.
도 8에서 예시된 아키텍처를 이용한 몇몇 FPGA들은 FPGA의 대부분을 구성하는 규칙적인 기둥형 구조를 분열시키는 추가적인 로직 블록들을 포함한다. 추가적인 로직 블럭들은 프로그램가능 블럭들 및/또는 전용 로직일 수 있다.
도 8은 단지 예시적인 FPGA 아키텍처를 예시하려고 의도된 것임을 주목하라. 예를 들어, 도 8의 최상부에 포함된, 행 내의 로직 블럭들의 갯수, 행들의 상대적 폭, 행들의 갯수 및 순서, 행들 내에 포함된 로직 블럭들의 유형들, 로직 블럭들의 상대적 크기들, 및 상호접속부/로직 구현예들은 순전히 예시적인 것이다. 예를 들어, 실제의 FPGA에서는, 일반적으로 사용자 로직의 효율적인 구현을 촉진시키기 위해, CLB들이 나타나는 곳이라면 어디라도 CLB들의 하나보다 많은 인접한 행이 포함되지만, 인접한 CLB 행들의 개수는 FPGA의 총체적인 크기에 따라 달라진다.
일예에서, 집적 회로(IC)가 제공될 수 있다. 그러한 IC는: 네트워크 온 칩(NoC); NoC에 커플링된 마스터 디바이스; IC에 커플링된 메모리를 제어하도록 구성된, NoC에 커플링된 메모리 제어기; 및 NoC에 커플링된 인라인 에러 정정 코드(ECC) 회로를 포함하며, ECC 회로는 메모리를 타겟팅하는 판독 트랜잭션 및 기록 트랜잭션을 마스터 디바이스로부터 수신하고, 판독 트랜잭션 및 기록 트랜잭션에 기초하여 ECC 데이터를 계산하며, 발신 트랜잭션들을 메모리 제어기에 제공하도록 구성된다.
일부 그러한 IC에서, 인라인 ECC 회로는: 마스터 디바이스로부터 기록 트랜잭션을 수신하고; 기록 트랜잭션 내의 데이터에 기초하여 ECC 데이터를 계산하며; 데이터 및 ECC 데이터 모두를 메모리 내의 하나 이상의 목적지에 기록하기 위한 하나 이상의 발신 트랜잭션을 발생시키도록 구성될 수 있다.
일부 그러한 IC에서, 하나 이상의 발신 트랜잭션은 메모리의 모듈 내의 구역에 데이터 및 ECC 데이터 모두를 기록하기 위한 단일 발신 트랜잭션을 포함할 수 있다.
일부 그러한 IC에서, 하나 이상의 발신 트랜잭션은 메모리의 모듈의 제1 구역에 데이터를 기록하기 위한 제1 발신 트랜잭션 및 메모리의 모듈의 제2 구역에 데이터를 기록하기 위한 제2 발신 트랜잭션을 포함할 수 있다.
일부 그러한 IC에서, 하나 이상의 발신 트랜잭션은 메모리의 제1 모듈에 데이터를 기록하기 위한 제1 발신 트랜잭션 및 메모리의 제2 모듈에 데이터를 기록하기 위한 제2 발신 트랜잭션을 포함할 수 있다.
일부 그러한 IC에서, 인라인 ECC 회로는: 마스터 디바이스로부터 판독 트랜잭션을 수신하고; 메모리 내의 각각의 저장 위치들로부터 데이터 및 ECC 데이터 모두를 판독하기 위한 하나 이상의 발신 트랜잭션을 발생시키고; ECC 데이터로부터 ECC 신드롬들을 계산하며; 데이터를 포함하는 판독 트랜잭션에 대한 응답을 발생시키도록 구성될 수 있다.
일부 그러한 IC에서, 인라인 ECC 회로는: ECC 신드롬들을 사용하여 데이터 내의 하나 이상의 에러를 처리하도록 구성될 수 있다.
다른 예에서, IC의 메모리 관리 방법이 제공될 수 있다. 그러한 집적 회로(IC)의 메모리 관리 방법은: 네트워크 온 칩(NoC)을 통해 인라인 에러 정정 코드(ECC) 회로에서 마스터 디바이스로부터 트랜잭션을 수신하는 단계 ― 트랜잭션은 IC에 커플링된 메모리를 타겟팅함 ― ; 인라인 ECC 회로에서 트랜잭션에 기초하여 ECC 데이터를 결정하는 단계; 및 메모리를 제어하도록 구성되는 NoC에 커플링된 메모리 제어기에 하나 이상의 발신 트랜잭션을 제공하는 단계를 포함한다.
일부 그러한 방법에서, 트랜잭션은 기록 트랜잭션일 수 있고, 여기서 ECC 데이터는 기록 트랜잭션의 데이터에 기초하여 결정되며, 하나 이상의 발신 트랜잭션은 메모리 내의 하나 이상의 목적지에 데이터 및 ECC 데이터 모두를 기록하도록 구성될 수 있다.
일부 그러한 방법에서, 하나 이상의 발신 트랜잭션은 메모리의 모듈 내의 영역에 데이터 및 ECC 데이터 모두를 기록하기 위한 단일 발신 트랜잭션을 포함할 수 있다.
일부 그러한 방법에서, 하나 이상의 발신 트랜잭션은 메모리의 모듈의 제1 구역에 데이터를 기록하기 위한 제1 발신 트랜잭션 및 메모리의 모듈의 제2 구역에 데이터를 기록하기 위한 제2 발신 트랜잭션을 포함할 수 있다.
일부 그러한 방법에서, 하나 이상의 발신 트랜잭션은 메모리의 제1 모듈에 데이터를 기록하기 위한 제1 발신 트랜잭션 및 메모리의 제2 모듈에 데이터를 기록하기 위한 제2 발신 트랜잭션을 포함할 수 있다.
일부 그러한 방법에서, 트랜잭션은 판독 트랜잭션일 수 있고, 여기서 하나 이상의 발신 트랜잭션은 메모리 내의 각각의 저장 위치들로부터 데이터 및 ECC 데이터 모두를 판독하도록 구성될 수 있으며, 여기서 상기 방법은:
ECC 데이터로부터 ECC 신드롬들을 계산하는 단계; 및
데이터를 포함하는 판독 트랜잭션에 대한 응답을 발생시키는 단계를 더 포함한다.
일부 그러한 방법에서, 방법은: ECC 신드롬들을 사용하여 데이터 내의 하나 이상의 에러를 처리하는 단계를 더 포함한다.
또 다른 예에서, IC가 제공될 수 있다. 그러한 IC는: 프로세싱 시스템; 프로그램가능 로직 영역; 프로세싱 시스템 및 프로그램가능 로직 영역을 연결하는 네트워크 온 칩(NoC); NoC에 커플링된 마스터 디바이스; IC에 커플링된 메모리를 제어하도록 구성된, NoC에 커플링된 메모리 제어기; 및 NoC에 커플링된 인라인 에러 정정 코드(ECC) 회로를 포함할 수 있으며, ECC 회로는 메모리를 타겟팅하는 판독 트랜잭션 및 기록 트랜잭션을 마스터 디바이스로부터 수신하고, 판독 트랜잭션 및 기록 트랜잭션에 기초하여 ECC 데이터를 계산하며, 발신 트랜잭션들을 메모리 제어기에 제공하도록 구성된다.
일부 그러한 IC에서, 마스터 디바이스는 프로세싱 시스템에 배치될 수 있다.
일부 그러한 IC에서, 마스터 디바이스는 프로그램가능 로직 영역에 배치될 수 있다.
일부 그러한 IC에서, 마스터 디바이스는 프로그램가능 로직 영역에 구성될 수 있다.
그러한 IC에서, 인라인 ECC 회로는: 마스터 디바이스로부터 기록 트랜잭션을 수신하고; 기록 트랜잭션 내의 데이터에 기초하여 ECC 데이터를 계산하며; 데이터 및 ECC 데이터 모두를 메모리 내의 하나 이상의 목적지에 기록하기 위한 하나 이상의 발신 트랜잭션을 발생시키도록 구성될 수 있다.
그러한 IC에서, 인라인 ECC 회로는: 마스터 디바이스로부터 판독 트랜잭션을 수신하고; 메모리 내의 각각의 저장 위치들로부터 데이터 및 ECC 데이터 모두를 판독하기 위한 하나 이상의 발신 트랜잭션을 발생시키고; ECC 데이터로부터 ECC 신드롬들을 계산하며; 데이터를 포함하는 판독 트랜잭션에 대한 응답을 발생시키도록 구성될 수 있다.
전술한 내용은 특정 예들에 관한 것이지만, 다른 그리고 추가적인 예들이 본 발명의 기본 범위를 벗어나지 않고 고안될 수 있으며, 그 범위는 다음의 청구범위에 의해 결정된다.

Claims (14)

  1. 집적 회로(IC, integrated circuit)에 있어서,
    네트워크 온 칩(NoC, network-on-chip);
    상기 NoC에 커플링된 마스터 디바이스;
    상기 IC에 커플링된 메모리를 제어하도록 구성된, 상기 NoC에 커플링된 메모리 제어기; 및
    상기 NoC에 커플링된 인라인(inline) 에러 정정 코드(ECC, error-correcting code) 회로
    를 포함하며,
    상기 ECC 회로는 상기 메모리를 타겟팅하는 판독 트랜잭션 및 기록 트랜잭션을 상기 마스터 디바이스로부터 수신하고, 상기 판독 트랜잭션 및 기록 트랜잭션에 기초하여 ECC 데이터를 계산하며, 발신(outgoing) 트랜잭션들을 상기 메모리 제어기에 제공하도록 구성되는 것인, 집적 회로(IC).
  2. 제1항에 있어서,
    상기 인라인 ECC 회로는:
    상기 마스터 디바이스로부터 기록 트랜잭션을 수신하고;
    상기 기록 트랜잭션 내의 데이터에 기초하여 ECC 데이터를 계산하며;
    상기 데이터 및 상기 ECC 데이터 모두를 상기 메모리 내의 하나 이상의 목적지에 기록하기 위한 하나 이상의 발신 트랜잭션을 발생시키도록
    구성되는 것인, 집적 회로(IC).
  3. 제2항에 있어서,
    상기 하나 이상의 발신 트랜잭션은 상기 메모리의 모듈 내의 영역에 상기 데이터 및 상기 ECC 데이터 모두를 기록하기 위한 단일 발신 트랜잭션을 포함하는 것인, 집적 회로(IC).
  4. 제2항에 있어서,
    상기 하나 이상의 발신 트랜잭션은 상기 메모리의 모듈의 제1 영역에 상기 데이터를 기록하기 위한 제1 발신 트랜잭션 및 상기 메모리의 모듈의 제2 영역에 상기 데이터를 기록하기 위한 제2 발신 트랜잭션을 포함하는 것인, 집적 회로(IC).
  5. 제2항에 있어서,
    상기 하나 이상의 발신 트랜잭션은 상기 메모리의 제1 모듈에 상기 데이터를 기록하기 위한 제1 발신 트랜잭션 및 상기 메모리의 제2 모듈에 상기 데이터를 기록하기 위한 제2 발신 트랜잭션을 포함하는 것인, 집적 회로(IC).
  6. 제1항 내지 제5항 중 어느 한 항에 있어서,
    상기 인라인 ECC 회로는:
    상기 마스터 디바이스로부터 판독 트랜잭션을 수신하고;
    상기 메모리 내의 각각의 저장 위치들로부터 데이터 및 상기 ECC 데이터 모두를 판독하기 위한 하나 이상의 발신 트랜잭션을 발생시키고;
    상기 ECC 데이터로부터 ECC 신드롬(syndrome)들을 계산하며;
    상기 데이터를 포함하는 상기 판독 트랜잭션에 대한 응답을 발생시키도록
    구성되는 것인, 집적 회로(IC).
  7. 제6항에 있어서,
    상기 인라인 ECC 회로는:
    상기 ECC 신드롬들을 사용하여 상기 데이터 내의 하나 이상의 에러를 처리하도록
    구성되는 것인, 집적 회로(IC).
  8. 집적 회로(IC)의 메모리 관리 방법에 있어서,
    네트워크 온 칩(NoC)을 통해 인라인 에러 정정 코드(ECC) 회로에서 마스터 디바이스로부터 트랜잭션을 수신하는 단계 ― 상기 트랜잭션은 상기 IC에 커플링된 메모리를 타겟팅함 ― ;
    상기 인라인 ECC 회로에서 상기 트랜잭션에 기초하여 ECC 데이터를 결정하는 단계; 및
    상기 메모리를 제어하도록 구성되는, 상기 NoC에 커플링된 메모리 제어기에 하나 이상의 발신 트랜잭션을 제공하는 단계
    를 포함하는, 집적 회로(IC)의 메모리 관리 방법.
  9. 제8항에 있어서,
    상기 트랜잭션은 기록 트랜잭션이고, 상기 ECC 데이터는 상기 기록 트랜잭션의 데이터에 기초하여 결정되며, 상기 하나 이상의 발신 트랜잭션은 상기 메모리 내의 하나 이상의 목적지에 상기 데이터 및 상기 ECC 데이터 모두를 기록하도록 구성되는 것인, 집적 회로(IC)의 메모리 관리 방법.
  10. 제9항에 있어서,
    상기 하나 이상의 발신 트랜잭션은 상기 메모리의 모듈 내의 영역에 상기 데이터 및 상기 ECC 데이터 모두를 기록하기 위한 단일 발신 트랜잭션을 포함하는 것인, 집적 회로(IC)의 메모리 관리 방법.
  11. 제9항에 있어서,
    상기 하나 이상의 발신 트랜잭션은 상기 메모리의 모듈의 제1 영역에 상기 데이터를 기록하기 위한 제1 발신 트랜잭션 및 상기 메모리의 모듈의 제2 영역에 상기 데이터를 기록하기 위한 제2 발신 트랜잭션을 포함하는 것인, 집적 회로(IC)의 메모리 관리 방법.
  12. 제9항에 있어서,
    상기 하나 이상의 발신 트랜잭션은 상기 메모리의 제1 모듈에 상기 데이터를 기록하기 위한 제1 발신 트랜잭션 및 상기 메모리의 제2 모듈에 상기 데이터를 기록하기 위한 제2 발신 트랜잭션을 포함하는 것인, 집적 회로(IC)의 메모리 관리 방법.
  13. 제8항에 있어서,
    상기 트랜잭션은 판독 트랜잭션이고, 상기 하나 이상의 발신 트랜잭션은 상기 메모리 내의 각각의 저장 위치들로부터 데이터 및 상기 ECC 데이터 모두를 판독하도록 구성되며, 상기 방법은:
    상기 ECC 데이터로부터 ECC 신드롬들을 계산하는 단계; 및
    상기 데이터를 포함하는 상기 판독 트랜잭션에 대한 응답을 발생시키는 단계
    를 더 포함하는, 집적 회로(IC)의 메모리 관리 방법.
  14. 제13항에 있어서,
    상기 ECC 신드롬들을 사용하여 상기 데이터 내의 하나 이상의 에러를 처리하는 단계를 더 포함하는, 집적 회로(IC)의 메모리 관리 방법.
KR1020207020737A 2017-12-21 2018-10-09 시스템 온 칩을 위한 인라인 ecc 기능 KR20200097337A (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US15/851,449 2017-12-21
US15/851,449 US10346346B1 (en) 2017-12-21 2017-12-21 Inline ECC function for system-on-chip
PCT/US2018/055068 WO2019125584A1 (en) 2017-12-21 2018-10-09 Inline ecc function for system-on-chip

Publications (1)

Publication Number Publication Date
KR20200097337A true KR20200097337A (ko) 2020-08-18

Family

ID=64110063

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020207020737A KR20200097337A (ko) 2017-12-21 2018-10-09 시스템 온 칩을 위한 인라인 ecc 기능

Country Status (6)

Country Link
US (1) US10346346B1 (ko)
EP (1) EP3707609A1 (ko)
JP (1) JP7341142B2 (ko)
KR (1) KR20200097337A (ko)
CN (1) CN111492351A (ko)
WO (1) WO2019125584A1 (ko)

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10673439B1 (en) * 2019-03-27 2020-06-02 Xilinx, Inc. Adaptive integrated programmable device platform
US11474826B1 (en) * 2019-04-18 2022-10-18 Xilinx, Inc. Boot image file having a global partition for data processing engines of a programmable device
US10970248B2 (en) 2019-05-10 2021-04-06 Achronix Semiconductor Corporation Processing of ethernet packets at a programmable integrated circuit
US10608640B1 (en) * 2019-05-10 2020-03-31 Achronix Semiconductor Corporation On-chip network in programmable integrated circuit
US10936525B2 (en) 2019-05-10 2021-03-02 Achronix Semiconductor Corporation Flexible routing of network data within a programmable integrated circuit
US11416334B2 (en) * 2019-05-24 2022-08-16 Texas Instmments Incorporated Handling non-correctable errors
WO2021035811A1 (zh) * 2019-08-27 2021-03-04 江苏华存电子科技有限公司 一种可变动码率与更正能力内存控制方法
US11580057B2 (en) 2019-10-28 2023-02-14 Xilinx, Inc. Subsystem for configuration, security, and management of an adaptive system
US11513893B2 (en) 2020-12-21 2022-11-29 Intel Corporation Concurrent compute and ECC for in-memory matrix vector operations
US11983133B2 (en) * 2022-08-22 2024-05-14 Xilinx, Inc. Adaptive integrated programmable data processing unit

Family Cites Families (26)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7162644B1 (en) 2002-03-29 2007-01-09 Xilinx, Inc. Methods and circuits for protecting proprietary configuration data for programmable logic devices
US20040153902A1 (en) * 2003-01-21 2004-08-05 Nexflash Technologies, Inc. Serial flash integrated circuit having error detection and correction
US7143332B1 (en) 2003-12-16 2006-11-28 Xilinx, Inc. Methods and structures for providing programmable width and error correction in memory arrays in programmable logic devices
KR100632952B1 (ko) * 2004-09-30 2006-10-11 삼성전자주식회사 정전으로 인한 프로그램 페일의 유무를 판별할 수 있는방법 및 장치
US8032688B2 (en) * 2005-06-30 2011-10-04 Intel Corporation Micro-tile memory interfaces
US7380197B1 (en) 2005-07-12 2008-05-27 Xilinx, Inc. Circuit and method for error detection
US7620875B1 (en) 2006-03-07 2009-11-17 Xilinx, Inc. Error correction code memory system with a small footprint and byte write operation
US20100191911A1 (en) * 2008-12-23 2010-07-29 Marco Heddes System-On-A-Chip Having an Array of Programmable Processing Elements Linked By an On-Chip Network with Distributed On-Chip Shared Memory and External Shared Memory
US20100158005A1 (en) * 2008-12-23 2010-06-24 Suvhasis Mukhopadhyay System-On-a-Chip and Multi-Chip Systems Supporting Advanced Telecommunication Functions
US20100162265A1 (en) * 2008-12-23 2010-06-24 Marco Heddes System-On-A-Chip Employing A Network Of Nodes That Utilize Logical Channels And Logical Mux Channels For Communicating Messages Therebetween
US20100158023A1 (en) * 2008-12-23 2010-06-24 Suvhasis Mukhopadhyay System-On-a-Chip and Multi-Chip Systems Supporting Advanced Telecommunication Functions
US20100161938A1 (en) * 2008-12-23 2010-06-24 Marco Heddes System-On-A-Chip Supporting A Networked Array Of Configurable Symmetric Multiprocessing Nodes
KR20100104623A (ko) * 2009-03-18 2010-09-29 삼성전자주식회사 데이터 처리 시스템 및 그것의 부호율 제어 스킴
WO2011041269A2 (en) * 2009-09-30 2011-04-07 Samplify Systems, Inc. Enhanced multi-processor waveform data exchange using compression and decompression
EP2444903A1 (en) * 2010-09-29 2012-04-25 STMicroelectronics (Grenoble 2) SAS A transaction reordering arrangement
US8788904B2 (en) 2011-10-31 2014-07-22 Hewlett-Packard Development Company, L.P. Methods and apparatus to perform error detection and correction
EP2915045B1 (en) 2012-11-02 2019-01-02 Hewlett-Packard Enterprise Development LP Selective error correcting code and memory access granularity switching
US9417805B2 (en) 2013-11-19 2016-08-16 Emu Solutions, Inc. Exporting computational capabilities into a block-oriented disk memory
US9436546B2 (en) 2014-04-22 2016-09-06 Freescale Semiconductor, Inc. Apparatus for error detection in memory devices
US9632869B1 (en) 2015-09-08 2017-04-25 Xilinx, Inc. Error correction for interconnect circuits
US10331846B2 (en) * 2015-12-30 2019-06-25 Arteris, Inc. Dynamic link serialization in network-on-chip
US10387303B2 (en) * 2016-08-16 2019-08-20 Western Digital Technologies, Inc. Non-volatile storage system with compute engine to accelerate big data applications
US10459644B2 (en) * 2016-10-28 2019-10-29 Western Digital Techologies, Inc. Non-volatile storage system with integrated compute engine and optimized use of local fast memory
US10565123B2 (en) * 2017-04-10 2020-02-18 Western Digital Technologies, Inc. Hybrid logical to physical address translation for non-volatile storage devices with integrated compute module
US20180358989A1 (en) * 2017-06-09 2018-12-13 Western Digital Technologies, Inc. Non-volatile Storage Systems With Application-Aware Error-Correcting Codes
US10223216B1 (en) * 2017-10-30 2019-03-05 Western Digital Technologies, Inc. Non-volatile storage system that reclaims bad blocks

Also Published As

Publication number Publication date
US10346346B1 (en) 2019-07-09
JP7341142B2 (ja) 2023-09-08
US20190196901A1 (en) 2019-06-27
EP3707609A1 (en) 2020-09-16
JP2021509554A (ja) 2021-03-25
CN111492351A (zh) 2020-08-04
WO2019125584A1 (en) 2019-06-27

Similar Documents

Publication Publication Date Title
US10346346B1 (en) Inline ECC function for system-on-chip
US8572297B2 (en) Programmable system-on-chip hub
JP7244497B2 (ja) 集積回路パッケージへのプログラマブルデバイスおよび処理システムの集積
US11263169B2 (en) Configurable network-on-chip for a programmable device
CN105336352A (zh) 存储器装置
US10824505B1 (en) ECC proxy extension and byte organization for multi-master systems
US7315918B1 (en) Processor block placement relative to memory in a programmable logic device
KR20200139178A (ko) 집적 회로를 위한 데이터 프로세싱 엔진 타일 아키텍처
JP7383645B2 (ja) システムオンチップにおけるプログラマブル論理マスタのためのハードウェアベースの仮想-物理アドレス変換
US11386009B2 (en) Programmable device configuration memory system
US8941408B2 (en) Configuring data registers to program a programmable device with a configuration bit stream without phantom bits
US10936486B1 (en) Address interleave support in a programmable device
US20150227421A1 (en) Package On Package Memory Interface and Configuration With Error Code Correction
KR20150051641A (ko) 메모리 시스템의 동작 방법
CN117851146A (zh) 针对小芯片的fpga原型验证系统和原型验证方法