KR20230161517A - 오프로드된 동작에 사용된 데이터 오류 검사 - Google Patents

오프로드된 동작에 사용된 데이터 오류 검사 Download PDF

Info

Publication number
KR20230161517A
KR20230161517A KR1020237037395A KR20237037395A KR20230161517A KR 20230161517 A KR20230161517 A KR 20230161517A KR 1020237037395 A KR1020237037395 A KR 1020237037395A KR 20237037395 A KR20237037395 A KR 20237037395A KR 20230161517 A KR20230161517 A KR 20230161517A
Authority
KR
South Korea
Prior art keywords
data
host
error checking
block
new data
Prior art date
Application number
KR1020237037395A
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 KR20230161517A publication Critical patent/KR20230161517A/ko

Links

Images

Classifications

    • 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
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • G06F3/0619Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • 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)
  • Human Computer Interaction (AREA)
  • Quality & Reliability (AREA)
  • Computer Security & Cryptography (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Detection And Correction Of Errors (AREA)
  • Memory System (AREA)

Abstract

오프로드된 동작에 사용된 데이터의 오류 검사가 개시된다. 원격 실행 디바이스는 호스트로부터 데이터 블록을 메모리 영역에 저장하라는 요청을 수신한다. 데이터 블록은 데이터와 해당 데이터에 대한 호스트-생성 오류 검사 정보를 포함한다. 원격 실행 디바이스는 호스트-생성 오류 검사 정보를 해당 데이터에 대해 로컬로 생성된 오류 검사 정보로 덮어쓰기 하여 데이터 블록을 업데이트한다. 그런 다음 데이터 블록은 메모리 영역에 저장된다.

Description

오프로드된 동작에 사용된 데이터 오류 검사
컴퓨팅 시스템(computing system)은 종종 명령어를 검색 및 실행하고 실행된 명령어의 결과를 적절한 위치에 저장할 수 있는 다수의 처리 리소스들(예를 들어, 하나 이상의 프로세서)을 포함한다. 처리 리소스(예를 들어, 중앙 처리 장치(CPU))는 산술 논리 장치(ALU) 회로부, 부동 소수점 장치(FPU) 회로부 및/또는 조합 로직 블록과 같은 여러 기능 유닛들을 포함할 수 있고, 예를 들어, 이는 데이터(예를 들어, 하나 이상의 피연산자)에 대한 논리 연산을 수행하여 명령어를 실행하는 데 사용될 수 있다. 예를 들어, 기능 유닛 회로부는 피연산자에 대한 덧셈, 뺄셈, 곱셈 및/또는 나눗셈과 같은 산술 연산을 수행하는 데 사용될 수 있다. 전형적으로, 처리 리소스(예를 들어, 프로세서 및/또는 연관된 기능 유닛 회로부)는 메모리 어레이 외부에 있을 수 있고, 데이터는 명령어들의 세트를 실행하기 위해 처리 리소스과 메모리 어레이 사이의 버스를 통해 액세스된다. 메모리 어레이에서 데이터를 가져오거나 저장하기 위한 액세스 양을 줄이기 위해, 컴퓨팅 시스템은 처리 리소스 또는 처리 리소스들의 그룹에서 사용하기 위해 최근에 액세스했거나 수정된 데이터를 일시적으로 저장하는 캐시 계층구조(cache hierarchy)를 사용할 수 있다. 그러나 특정 작업을 프로세서-인-메모리(PIM) 디바이스로 오프로드함으로써 처리 성능이 더욱 향상될 수 있으며, 여기서 처리 리소스는 메모리 내부 및/또는 메모리 근처에 구현될 수 있으므로, 계산을 위해 데이터를 처리 리소스에 더 가깝게 가져오는 대신 데이터를 저장하는 메모리 위치에 더 가깝게 데이터 처리가 수행된다. PIM 디바이스는 외부 통신을 줄이거나 제거하여 시간을 절약할 수 있으며 전력도 절약할 수 있다.
도 1은 본 개시의 실시예에 따라 오프로드된 동작에 사용되는 데이터 오류 검사를 위한 예시적인 시스템의 블록도를 설명한다.
도 2는 본 개시의 실시예에 따라 오프로드된 동작에 사용되는 데이터 오류 검사를 위한 예시적인 시스템의 블록도를 설명한다.
도 3은 본 개시의 실시예에 따라 오프로드된 동작에 사용되는 데이터 오류 검사의 다른 예시적인 방법을 나타내는 흐름도를 설명한다.
도 4는 본 개시의 실시예에 따라 오프로드된 동작에 사용되는 데이터 오류 검사의 다른 예시적인 방법을 나타내는 흐름도를 설명한다.
도 5는 본 개시의 실시예에 따라 오프로드된 동작에 사용되는 데이터 오류 검사의 다른 예시적인 방법을 나타내는 흐름도를 설명한다.
도 6은 본 개시의 실시예에 따라 오프로드된 동작에 사용되는 데이터 오류 검사의 다른 예시적인 방법을 나타내는 흐름도를 설명한다.
도 7은 본 개시의 실시예에 따라 오프로드된 동작에 사용되는 데이터 오류 검사의 다른 예시적인 방법을 나타내는 흐름도를 설명한다.
도 8은 본 개시의 실시예에 따라 오프로드된 동작에 사용되는 데이터 오류 검사의 다른 예시적인 방법을 나타내는 흐름도를 설명한다.
도 9는 본 개시의 실시예에 따라 오프로드된 동작에 사용되는 데이터 오류 검사의 다른 예시적인 방법을 나타내는 흐름도를 설명한다.
PIM(processing-in-memory) 아키텍처는 메모리 내 또는 메모리 근처에서 실행하기 위한 오프로딩 명령어를 지원하여 프로세서와 메모리 사이의 데이터 링크의 대역폭이 보존되고 프로세서의 전력 소비가 감소될 수 있도록 한다. 예를 들어 PIM 디바이스를 통해 오프로드된 명령어를 실행하려면 데이터를 로컬 중앙 처리 장치(CPU) 레지스터에 로드하고 로컬 CPU 스토리지의 데이터를 메모리에 다시 기록할 필요가 없다. PIM 아키텍처는 일반적으로 동작을 PIM 디바이스로 오프로드하기 위해 PIM 명령어를 실행하도록 구성된 PIM-지원(enabled) 호스트(예를 들어, CPU 또는 그래픽 처리 장치 GPU)를 포함한다. 일반적으로, PIM 디바이스는 메모리 디바이스 내에 컴퓨팅 기능(예를 들어, PIM 컴퓨팅 로직)을 구현하는 메모리 디바이스이지만, PIM 디바이스는 메모리 디바이스에 긴밀하게 결합될 수도 있다. 설명의 편의를 위해, 본 개시에서는 PIM 디바이스가 컴퓨팅 기능을 구현하는 메모리 디바이스 내에 내장된 PIM 컴퓨팅 로직을 갖춘 PIM-지원 메모리 디바이스인 것으로 가정한다.
메모리에 기록된 데이터에 대한 오류 검출을 지원하기 위해, 호스트는 메모리에 기록된 데이터에 대한 RAS(reliability, availability, serviceability) 메타데이터를 생성할 수 있다. 이 메타데이터는 일반적으로 메모리 디바이스의 데이터와 함께 저장되며 나중에 메모리 디바이스에서 데이터를 검색할 때 오류 검출 검사를 수행하는 데 사용된다. 예를 들어, 호스트는 메모리에서 판독된 데이터에 오류 검출 기능을 적용하여 해당 기능의 결과가 메타데이터와 일치하는지 결정할 수 있다. 이 오류 검출 검사를 충족하지 못하면 메모리에서 데이터를 올바르게 검색하지 못하거나 데이터 자체가 손상되었음을 나타낼 수 있다. PIM 동작으로 해당 데이터가 수정되면 문제가 발생하며, 이는 데이터 수정으로 인해 RAS 메타데이터가 유효하지 않게 될 수 있기 때문이다. 즉, PIM-수정 데이터가 호스트에 의해 검색될 때, PIM-수정 데이터에 적용된 오류 검출 기능의 결과는 데이터와 함께 저장된 RAS 메타데이터와 일치하지 않을 가능성이 높다. 또 다른 문제는 PIM 디바이스가 호스트의 오류 검출 체계를 알지 못하면 호스트에서 생성된 RAS 메타데이터를 사용할 수 없다는 것이다. 따라서 PIM-지원 메모리 디바이스는 호스트 오류 검사 정보를 무시하기 때문에 데이터는 보호되지 않은 상태로 유지된다.
이 문제에 대한 한 가지 해결책은 호스트-기반 오류 보호 기술을 메모리 디바이스에 미러링하는 것이다. 그러나 이를 위해서는 모든 PIM-지원 메모리 공급업체와 모든 PIM-지원 호스트 공급업체가 동일한 오류 보호 기술을 사용하는 데 동의해야 할 수도 있으며, 또는 호스트가 사용하는 독점 오류 검출 기술을 사용하여 PIM 지원 메모리 디바이스를 구체적으로 구성하도록 호스트가 필요할 수도 있다. 호스트 공급업체는 이러한 독점 기술을 공개하기를 원하지 않는 경우가 많다. 따라서 PIM-지원 메모리 디바이스에서 호스트 기반 오류 검출 기술을 미러링하거나 정확하게 복제하는 것은 실행 가능한 해결책이 아닐 수 있다. 또한, PIM 지원 메모리 디바이스가 자체 오류 검사 방식을 사용하여 PIM-지원 메모리 디바이스 내에서 수행되는 동작에 대한 RAS 메타데이터를 추적하려면, PIM-지원 메모리 디바이스에서 생성된 RAS 메타데이터를 저장하기 위해 별도의 버퍼를 사용해야 하거나 로컬로 생성된 RAS 메타데이터를 저장하기 위해 호스트로부터 수신된 데이터에 추가 공간을 할당해야 한다.
이 문제와 기타 문제를 해결하기 위해 본 개시에 따른 실시예는 호스트-생성 RAS 메타데이터를 로컬로 생성된 RAS 메타데이터로 덮어쓰기(overwriting)함으로써 호스트 생성 RAS 메타데이터가 차지하는 공간을 활용하여, PIM-지원 메모리 디바이스와 같은 원격 실행 디바이스가 디바이스 내(on-device) 데이터 오류를 식별하고 수정할 수 있도록 한다. 호스트는 데이터를 원격 실행 디바이스로 발송하기 전에 호스트가 생성한 RAS 메타데이터를 사용하여 오류 검사를 수행하고 수정 불가능한 오류가 발생한 경우 표시한다. 원격 실행 디바이스는 데이터를 호스트로 발송하기 전에 로컬로 생성된 RAS 메타데이터를 사용하여 오류 검사를 수행하고 수정 불가능한 오류가 발생한 경우 표시한다.
본 개시에 따른 실시예는 오프로드된 동작에 사용되는 데이터의 오류 확인 방법에 관한 것이다. 방법은 메모리 영역에 데이터 블록을 저장하기 위해 호스트에 의해 발행된 요청을 식별하는 단계를 포함하며, 여기서 데이터 블록은 데이터 및 데이터에 대한 호스트-생성 오류 검사 정보를 포함한다. 이 방법은 또한 호스트-생성 오류 검사 정보를 데이터에 대해 로컬로 생성된 오류 검사 정보로 덮어쓰는 방식으로 데이터 블록을 업데이트하는 단계도 포함한다. 이 방법은 또한 업데이트된 데이터 블록을 메모리 영역에 저장하는 단계를 포함한다. 일부 구현예에서, 방법은 데이터 블록에서 호스트-제공 오류 표시자(indicator)를 식별하는 단계도 포함할 수 있다.
일부 구현예에서, 메모리 영역은 호스트로부터 오프로드된 동작을 실행하도록 구성된 처리 유닛에 결합된다. 이러한 구현예에서, 방법은 업데이트된 데이터 블록을 메모리 영역으로부터 처리 유닛으로 판독할 때 로컬로 생성된 오류 검사 정보를 사용하여 데이터를 검증하는 단계를 또한 포함할 수 있다. 이러한 구현예에서, 방법은 처리 유닛에 의해 새로운 데이터를 생성하는 단계 및 새로운 데이터에 대한 오류 검사 정보를 생성하는 단계도 포함할 수 있다. 이러한 구현예에서, 방법은 또한 새로운 데이터 블록에 새로운 데이터를 저장하고, 새로운 데이터에 대해 로컬로 생성된 오류 검사 정보를 메모리 영역의 새로운 메모리 블록에 저장하는 단계를 포함하고, 여기서 새로운 데이터 블록은 새로운 데이터가 오프로드된 동작으로부터 생성되었음을 나타내도록 표시된다. 메모리 영역 및 처리 유닛은 메모리 프로세싱-인-메모리 디바이스로 구현될 수 있다.
일부 구현예에서, 방법은 또한 새로운 데이터를 호스트에 제공하기 전에 새로운 데이터에 대해 로컬로 생성된 오류 검사 정보를 사용하여 새로운 데이터를 검증하는 단계를 포함한다. 이들 구현예에서, 방법은 또한 복구 불가능한(unrecoverable) 오류가 검출될 때 오류 표시자로 새로운 데이터를 표시하는 단계를 포함할 수 있다.
본 개시에 따른 또 다른 실시예는 오프로드된 동작에 사용되는 데이터의 오류를 검사하기 위한 장치에 관한 것으로, 장치는 호스트로부터 오프로드된 동작을 실행하도록 구성된 처리 유닛, 처리 유닛에 결합된 메모리 영역, 및 메모리 영역에 데이터 블록을 저장하기 위해 호스트에 의해 발행된 요청을 식별하도록 구성된 논리 회로부를 포함하고, 데이터 블록은 데이터 및 데이터에 대한 호스트-생성 오류 검사 정보를 포함한다. 논리 회로부는 또한 호스트-생성 오류 검사 정보를 데이터에 대해 로컬로 생성된 오류 검사 정보로 덮어써서 데이터 블록을 업데이트하도록 구성된다. 논리 회로부는 또한 업데이트된 데이터 블록을 메모리 영역에 저장하도록 구성된다.
일부 구현예에서, 논리 회로부는 데이터 블록에서 호스트-제공 오류 표시자를 식별하도록 더 구성된다. 일부 구현예에서, 논리 회로부는 업데이트된 데이터 블록을 메모리 영역으로부터 처리 유닛으로 판독할 때 로컬로 생성된 오류 검사 정보를 사용하여 데이터를 검증하도록 추가로 구성된다. 일부 구현예에서, 논리 회로부는 처리 유닛에 의해 생성된 새로운 데이터에 대한 오류 검사 정보를 생성하고 새로운 데이터를 새로운 데이터 블록에 저장하고, 로컬로 생성된 새로운 데이터에 대한 오류 검사 정보를 메모리 영역의 새로운 메모리 블록에 저장하도록 더 구성되며, 여기서 새로운 데이터 블록은 오프로드된 동작으로부터 새로운 데이터가 생성되었음을 나타내도록 표시된다.
일부 구현예에서, 논리 회로부는 새로운 데이터를 호스트에 제공하기 전에 새로운 데이터에 대해 로컬로 생성된 오류 검사 정보를 사용하여 새로운 데이터를 검증하도록 더 구성된다. 이들 구현예에서, 논리 회로부는 복구 불가능한 오류가 검출될 때 오류 표시자로 새로운 데이터를 표시하도록 더 구성될 수 있다. 일부 구현예에서, 장치는 PIM(processing-in-memory) 장치이다.
본 개시에 따른 또 다른 실시예는 오프로드된 동작에 사용되는 데이터 오류 검사용 시스템에 관한 것이다. 시스템은 호스트의 프로세서로부터 오프로드된 동작을 실행하기 위해 원격 실행 디바이스를 구성하도록 구성된 프로세서를 포함하는 호스트를 포함한다. 또한, 호스트는 데이터 블록을 원격 실행 디바이스로 복사하기 전에 데이터 블록에 저장된 호스트-생성 오류 검사 정보를 이용하여 호스트 메모리로부터 판독한 데이터 블록에 대한 오류 검사를 수행하도록 구성된다. 호스트는 원격 실행 디바이스의 메모리 영역에 데이터 블록을 저장하라는 요청을 발송하도록 추가로 구성된다. 원격 실행 디바이스는 데이터 블록을 메모리 영역에 저장하라는 호스트의 요청을 식별하도록 구성되며, 데이터 블록은 데이터 및 해당 데이터에 대한 호스트-생성 오류 검사 정보를 포함한다. 또한, 원격 실행 디바이스는 호스트-생성한 오류 검사 정보를 해당 데이터에 대해 로컬로 생성된 오류 검사 정보로 덮어써서 데이터 블록을 업데이트하도록 구성된다. 원격 실행 디바이스는 업데이트된 데이터 블록을 메모리 영역에 저장하도록 구성된다.
일부 구현예에서, 원격 실행 디바이스는 새로운 데이터를 생성하고, 새로운 데이터에 대한 오류 검사 정보를 생성하고, 새로운 데이터를 새로운 데이터 블록에 저장하고, 로컬로 생성된 새로운 데이터에 대한 오류 검사 정보를 메모리 영역의 새로운 메모리 블록에 저장하도록 더 구성되고 여기서, 새로운 데이터 블록은 새로운 데이터가 오프로드된 동작으로부터 생성되었음을 나타내도록 표시된다. 일부 구현예에서, 원격 실행 디바이스는 새로운 데이터를 호스트에 제공하기 전에 새로운 데이터에 대해 로컬로 생성된 오류 검사 정보를 사용하여 새로운 데이터를 검증하도록 더 구성될 수 있다. 이러한 구현예에서, 원격 실행 디바이스는 복구 불가능한 오류가 검출될 때 오류 표시자로 새로운 데이터를 표시하도록 추가로 구성될 수 있다. 일부 구현에서, 원격 실행 디바이스는 PIM(processing-in-memory) 디바이스일 수 있다.
본 개시에 따른 실시예는 도 1을 시작으로 더 자세히 설명될 것이다. 도 1은 본 개시에 따라 오프로드된 동작에 사용되는 데이터의 오류 검사를 위한 예시적인 시스템(100)의 블록도를 설명한다. 도 1의 예시적인 시스템(100)은 가속기, 코프로세서, PIM(processing-in-memory) 유닛, 또는 컴퓨팅 커널의 오프로드된 실행을 위한 타겟으로서 호스트 프로세서(102)를 대신하여 작동하는 다른 유형의 원격 실행 디바이스와 같은 원격 실행 디바이스(104)에 결합된 호스트 디바이스(102)를 포함한다. 호스트 디바이스(102)는 데이터를 판독하고 호스트 메모리 영역(106)에 기록하기 위한 명령어, 원격 실행 디바이스(104)에 의한 오프로드된 실행을 위한 커맨드를 생성하기 위한 명령어, 및 원격 실행 디바이스 메모리 영역(108)에 데이터를 기록하고 판독하기 위한 명령어를 포함하는 명령어를 실행하는 적어도 하나의 프로세서(105)(예를 들어, 중앙 처리 장치(CPU) 또는 그래픽 처리 장치(GPU))를 포함한다. 원격 실행 디바이스 메모리 영역(108) 및 호스트 메모리 영역(106)은 동일한 메모리 디바이스(예를 들어, 칩 또는 모듈)에 구현될 수도 있고, 별도의 메모리 디바이스에 구현될 수도 있다. 원격 실행 유닛(112)은 원격 실행 디바이스 메모리 영역(108)에 결합된다. 원격 실행 유닛(112)은 호스트 디바이스(102)에 의해 오프로드된 컴퓨팅 커널을 실행하기 위한 로직, ALU, 레지스터 및 기타 컴포넌트를 포함한다. 일부 예에서, 컴퓨팅 커널이 원격 실행 유닛(112)에 의한 실행을 위해 오프로드될 때, 커널에 의해 활용되는 데이터는 호스트 메모리 영역(106)에서 원격 실행 디바이스 메모리 영역(108)으로 복사된다. 이러한 예에서 복사된 데이터는 오프로드된 코드의 보다 효율적인 실행을 제공하기 위해 재정렬될 수 있다.
일부 예에서, 원격 실행 디바이스(104)는 원격 실행 유닛으로서 PIM 유닛으로 구성된 메모리 뱅크와 같은 PIM-지원 메모리 디바이스다. 따라서, 이 PIM-지원 메모리 뱅크는 호스트 메모리로 지정된 다른 메모리 뱅크와 동일한 메모리 디바이스에 구현될 수 있다. 다른 예에서, 원격 실행 디바이스(104)는 원격 실행 디바이스 메모리 영역(108)을 포함하는 전용 메모리를 갖춘 가속기 또는 코프로세서이고, 원격 실행 디바이스 메모리 영역(108)과 호스트 메모리 영역이 별개의 메모리 디바이스로 구현되도록 한다. 다양한 예에서, 원격 실행 디바이스(104)는 오프로드된 명령어(예를 들어, PIM 커맨드)를 실행하기 위한 실행 로직이 프로세서(105)의 일부가 아니라는 점에서 "원격" 디바이스이다. 예를 들어, 원격 실행 디바이스(104)는 실행 로컬리티(execution locality)와 관련하여 프로세서(105)로부터 "원격"을 유지하면서 호스트 디바이스(102)와 동일한 칩 또는 동일한 패키지에 구현될 수 있다. 일부 예에서, 시스템(100)의 호스트 디바이스(102)와 원격 실행 디바이스(104)는 동일한 칩(예를 들어, 시스템-온-칩(SoC))에 통합되어 있다. 다른 예에서, 시스템(100)은 시스템-인-패키지(SiP) 아키텍처를 구현하며, 여기서 호스트 디바이스(102) 및 그 컴포넌트(예를 들어 SoC와 같은)는 동일한 반도체 패키지의 원격 실행 디바이스(104)와 함께 인터포저 웨이퍼(interposer wafer)에 배치된다.
호스트 프로세서(102)의 메모리 컨트롤러(113)는 실행된 명령어로부터 생성된 메모리 요청을 수신하고, 요청을 메모리 채널을 통해 호스트 메모리 영역(106) 및 원격 실행 디바이스 메모리 영역(108)으로 송신되는 메모리 커맨드로 해석한다. 호스트 메모리 영역(106) 및 원격 실행 디바이스 메모리 영역(108)에 각각 대응하는 메모리 인터페이스 로직(116, 118)은 커맨드(및 관련 데이터)를 수신하고 해당 메모리 영역에 데이터를 기록하거나 판독함으로써 요청을 이행한다.
RAS 목적을 충족시키기 위해, 호스트 디바이스(102)는 호스트 메모리 영역(106)에 데이터를 기록하고 판독할 때 오류 검출 및 교정 기술을 사용할 수 있다. 그러한 기술 중 하나는 메모리에 기록된 데이터에 대한 오류 검출 및 교정 정보를 생성하는 것이다. 오류 검출 및 교정 정보는 오류 교정 코드(ECC), 주기적 리던던시 검사(CRC), 체크섬, 패리티 정보 등을 포함할 수 있다. 도 1의 예에서는 오류 교정 및 검출 코드가 ECC라고 가정한다. ECC 체크비트(checkbit)는 호스트 메모리 영역(106)에 기록되는 데이터와 함께 메타데이터로 저장될 수 있다. 데이터가 이후에 호스트 메모리 영역(106)으로부터 판독될 때, 검색된 데이터에 대해 체크비트가 생성되어 체크비트가 데이터와 함께 메타데이터에 저장된 체크비트와 일치하는지 여부를 결정한다. 불일치하는 경우 메모리 디바이스에서 데이터를 판독하는 중 오류가 발생했을 수 있다.
호스트 디바이스(102)가 메모리 유닛(140)의 (메모리 컨트롤러(113) 및 메모리 인터페이스 로직(116)을 통해) 호스트 메모리 영역(106)에 데이터(120)를 기록하는 동작을 실행하는 도 1에 도시된 예를 고려한다. 데이터(120)에 대한 기록 요청을 발행하기 전에, 호스트 오류 검사 모듈(115)은 데이터(120)에 대한 ECC 체크비트(122)를 생성하는 기능을 적용한다. 데이터(120) 및 ECC 체크비트(122)는 기록 동작의 일부로서 호스트 메모리 영역(106)에 저장된다. 이어서, 호스트 메모리 영역(106)으로부터 데이터(120) 및 ECC 체크비트(122)가 판독되면, 오류 검사 모듈(115)은 데이터(120)에 대한 새로운 ECC 체크비트를 생성하기 위해 동일한 기능을 적용하고 새로운 ECC 체크비트를 저장된 ECC 체크비트(122)와 비교함으로써 수신된 데이터(120)의 무결성(integrity)을 검증한다. 불일치가 있는 경우, 판독 오류 또는 데이터(120)의 손상이 발생했을 가능성이 높다. 일부 경우에는 ECC 체크비트(122)와 ECC 기능을 사용하여 오류를 교정할 수 있다. 그렇지 않으면 데이터가 손상된 것으로 표시될 수 있다.
위의 예를 계속하면, 데이터(120)는 원격 실행 디바이스(104)에 오프로드된 컴퓨팅 커널을 실행하는 데 필요할 수 있다. 이로써, 데이터(120)는 원격 실행 디바이스 메모리 영역(108)에 복사된다. 커널 오프로드의 일부로, 데이터(120)(및 커널에 의해 활용되는 다른 데이터)는 호스트 메모리 영역(106)으로부터 판독되고 데이터(120) 및 ECC 체크비트(122)를 원격 실행 디바이스 메모리 영역(108)에 기록하기 전에 ECC 검사는 데이터(120)의 무결성을 검증하기 위해 ECC 체크비트(122)를 사용하여 호스트 오류 검사 모듈(115)에 의해 수행된다. 그러나, 호스트 디바이스(102)에 의해 사용되는 ECC 방식에 대한 지식이 없으면, 원격 실행 디바이스(104)는 호스트 디바이스(102)에 의해 생성된 ECC 체크비트(122)를 사용하여 무결성 검사를 수행할 수 없다. 더욱이, 호스트 디바이스(102)에 의해 사용되는 ECC 방식에 대한 지식 없이는, 원격 실행 디바이스(104)는 데이터(120)가 원격 실행 디바이스에 의해 수정될 때 ECC 체크비트(122)를 정확하게 업데이트할 수 없으며, 호스트 디바이스(102)에 의한 원본 ECC 체크비트를 갖는 수정된 데이터의 후속 판독은 호스트 오류 검사 모듈(115)이 데이터 판독/손상 오류를 잘못 식별하게 할 가능성이 높다. 원격 실행 디바이스(104)는 데이터(120)를 검증하거나 호스트-생성 ECC 체크비트(122)를 업데이트하기 위해 호스트 디바이스(102)의 ECC 방식을 복제할 수 없기 때문에, 이 정보는 데이터(120)에 대한 메타데이터 비트를 불필요하게 점유한다.
본 개시의 실시예에 따르면, 원격 실행 디바이스(104)는 호스트-생성 ECC 체크비트(122)를 원격 실행 디바이스 오류 검사 모듈(130)에 의해 생성된 로컬로 생성된 ECC 체크비트(132)로 덮어쓰고, 원격 실행 디바이스(114)와 원격 실행 디바이스 메모리 영역(108) 사이에서 데이터를 판독하고 기록할 때 RAS 목적을 충족시키기 위해 로컬로 생성된 ECC 체크비트(132)를 사용한다. 이러한 방식으로, 원격 실행 디바이스(104)는 호스트-생성 ECC 체크비트(122)가 차지하는 공간을 활용하여 원격 실행 디바이스(114)와 원격 실행 디바이스 메모리 영역(108) 사이의 판독 및 기록 오류를 검출하고 교정하는 데 사용되는 로컬 오류 검출 및 교정 정보를 저장하기 위해 추가 공간 할당이 필요하지 않도록 한다. 일부 구현예에서, 원격 실행 디바이스(104)는 데이터(120)가 호스트 메모리 영역(106)에서 원격 실행 디바이스 메모리 영역(108)으로 복사될 때 호스트-생성 ECC 체크비트(122)를 로컬로 생성된 ECC 체크비트(132)로 덮어쓴다. 원격 실행 유닛(114)에 의해 원격 실행 디바이스 메모리 영역(108)으로부터 데이터(120)가 판독될 때, ECC 체크비트(132) 및 로컬 ECC 방식은 데이터(120)의 무결성을 검증하는 데 사용된다. 데이터(120)가 수정되면, 수정된 데이터(120) 및 업데이트된 ECC 체크비트(132)가 원격 실행 디바이스 메모리 영역(108)에 기록된다. 일부 예에서, ECC 체크비트(132)는 데이터(120)가 호스트 디바이스(102)에 의해 원격 실행 디바이스 메모리 영역(108)으로부터 판독되거나 호스트 메모리 영역(106)에 복사될 때 데이터(120)의 무결성을 검증하는 데 사용된다. 이러한 예에서, 교정 불가능한 오류가 검출된 경우, 호스트 디바이스(102)에 의한 오류 처리를 위해 오류가 호스트 디바이스(102)에 표시될 수 있다. 일부 구현예에서, 데이터(120)는 ECC 정보를 포함하는 비트가 호스트-기반 ECC 방식에 대한 유효한 ECC 비트가 아니도록 원격으로 수정된 데이터를 포함하는(또는 잠재적으로 포함하는) 것으로 표시될 수 있다. 즉, 원격 실행 디바이스(104)는 데이터(120)에 포함된 ECC 체크비트가 호스트-생성 ECC가 아니거나 데이터(120)가 원격으로 수정된 데이터라는 것을 호스트 디바이스(102)에 표시할 수 있다.
추가 설명을 위해, 도 2는 본 개시에 따라 오프로드된 동작에 사용되는 데이터의 오류 검사를 위한 다른 예시적인 시스템(200)의 블록도를 제시한다. 도 2의 예에서, 위에서 설명한 원격 실행 디바이스는 PIM 메모리 영역(208)에 결합된 PIM 유닛(210)(도 1의 원격 실행 유닛(114)과 유사)을 포함하는 PIM 가능 메모리 유닛(204)으로 구현된다(도 1의 원격 실행 디바이스 메모리 영역(108)과 유사). 일부 구현예에서, PIM 메모리 영역(208)과 호스트 메모리 영역(106)은 동일한 메모리 디바이스(230)의 별도의 영역(예를 들어, 별도의 뱅크 또는 뱅크 그룹)이어서, 호스트 메모리 영역(106), PIM 메모리 영역(208) 및 PIM 유닛(210)이 동일한 칩, 모듈 또는 패키지로 구현되도록 한다. 다른 구현예에서, PIM 메모리 영역(208)과 호스트 메모리 영역(106)은 별개의 메모리 디바이스로 구현된다.
도 2의 예에서, PIM 유닛(210)은 PIM-지원 메모리 유닛(204)에서의 원격 실행을 위해 호스트 디바이스(102)로부터 오프로드된 컴퓨팅 명령어의 커널을 저장하는 커맨드 버퍼(212)를 포함한다. PIM 유닛은 또한 컴퓨팅 커널에서 명령어를 실행하기 위한 PIM ALU(216)와 피연산자 및 해당 동작의 결과를 일시적으로 유지하기 위한 PIM 레지스터 파일(218)을 포함한다. 호스트 디바이스(102)가 커널을 실행하도록 PIM 지원 메모리 유닛(204)을 구성할 때, 호스트 디바이스(102)는 커널을 커맨드 버퍼(212)에 기록하고 커널에 의해 활용되는 데이터를 호스트 메모리 영역(106)으로부터 PIM 메모리 영역(208)에 복사한다. PIM 메모리 영역에 복사된 데이터는 PIM 메모리 영역의 데이터가 컴퓨팅 커널에 의해 사용되는 어드레스 공간에 구성되도록 호스트 디바이스(102)에 의해 재정렬될 수 있다. PIM 유닛(210)은 또한 컴퓨팅 커널의 실행을 용이하게 하기 위해 프로그램 카운터, 스케줄러 등과 같은 PIM 제어 로직(214)을 포함한다. 제한이 아닌 예로서, PIM-지원 메모리 유닛(204)은 PIM 메모리 영역(208)의 위치로부터 PIM 레지스터 파일(218)의 레지스터 r0으로 데이터를 로딩하고 호스트 프로세서(105)에 의해 계산된 호스트 디바이스(102)로부터 수신된 데이터를 PIM 레지스터 파일(218)의 레지스터 r1에 로딩하기 위한 커널로 구성될 수 있다. 이 예에서, PIM ALU(216)는 레지스터 r1의 값을 레지스터 r0의 값에 더하고 그 결과를 레지스터 r0에 저장한다. 그런 다음 레지스터 r0의 결과는 PIM 메모리 영역(208)의 위치에 다시 기록된다.
위에서 설명한 바와 같이, 호스트 디바이스(102)가 PIM 메모리 영역(208)에 복사하기 위해 호스트 메모리 영역(106)으로부터 데이터 블록(260)을 판독할 때, 호스트 디바이스(102)는 데이터 블록(260)의 ECC 부분(266)에 있는 호스트-생성 ECC 체크비트(268)와 호스트의 ECC 방식을 사용하여 데이터 블록(260)의 데이터 부분(264)에 있는 데이터(262)의 무결성을 검증한다. 호스트 디바이스(102)가 데이터(262)의 무결성을 검증할 때 수정 불가능한 오류를 식별하면, PIM-지원 메모리 디바이스(204)에 의한 처리를 위해 데이터에 대한 포이즌 비트(poison bit)가 데이터 블록(260)에 설정될 수 있다. 일부 예에서, 데이터 블록(260)을 PIM 메모리 영역(208)에 기록할 때, 데이터 블록(260)은 PIM 데이터를 포함하는 것으로 (예를 들어 제어 정보에) 표시된다. 본 명세서에서 사용되는 "PIM 데이터"는 PIM 동작을 수행하기 위해 PIM-지원 메모리 유닛(204)에 의해 사용되는 데이터이다.
데이터 블록(260)이 PIM 메모리 영역(208)에 복사되면, PIM 오류 검사 모듈(220)은 PIM ECC 방식을 사용하여 데이터(262)에 대한 PIM ECC 체크비트(274)를 생성하고 PIM ECC 체크비트(274)를 데이터 블록(260)의 ECC 부분(266)에 기록한다. 데이터(262)가 PIM 메모리 영역(208)으로부터 PIM 유닛(210)의 PIM 레지스터 파일(218)에 있는 레지스터로 판독될 때, PIM 오류 검사 모듈(220)은 PIM ECC 체크비트(274)를 사용하여 데이터(262)의 무결성을 검증한다. 새로운 또는 수정된 데이터가 PIM 유닛(210)의 PIM 레지스터 파일(218)에 있는 레지스터로부터 PIM 메모리 영역(208)의 데이터 블록(260)에 기록될 때, PIM 오류 검사 모듈(220)은 데이터 블록(260)에 기록되는 업데이트된 PIM ECC 체크비트(274)를 생성한다.
데이터 블록(260)이 PIM 메모리 영역(208)으로부터 호스트 디바이스에 의해 판독될 때, PIM 오류 검사 모듈(220)은 PIM ECC 체크비트(274)를 사용하여 데이터(262)의 무결성을 검증한다. PIM-지원 메모리 디바이스(204)가 데이터(262)의 무결성을 검증할 때 수정 불가능한 오류를 식별하는 경우, 호스트 디바이스(102)에 의한 처리를 위해 데이터에 대한 포이즌 비트가 데이터 블록(260)에 설정될 수 있다. 데이터 블록(260)은 PIM 데이터 및/또는 PIM ECC 체크비트를 포함하는 것으로 표시되어, 호스트 디바이스(102)는 ECC 부분(266)의 ECC 체크비트에 의존해서는 안 된다는 것을 인식한다.
추가 설명을 위해, 도 3은 본 개시에 따라 오프로드된 동작에 사용되는 데이터의 오류 검사를 위한 예시적인 방법을 도시하는 흐름도를 제시한다. 도 3의 예는 도 1 및 도 2를 참조하여 위에서 논의된 호스트 디바이스(102)와 유사할 수 있는 호스트(302)를 포함한다. 도 3에 도시된 호스트(302)는 위에서 설명된 스토리지 시스템과 동일하거나, 더 적거나, 추가 컴포넌트를 포함할 수 있다. 도 3의 예는 또한 도 1 및 도 2를 참조하여 전술한 원격 실행 디바이스(104) 또는 PIM-지원 메모리 디바이스(204)와 유사할 수 있는 원격 실행 디바이스(304)를 포함한다.도 3에 도시된 원격 실행 디바이스(304)는 위에서 설명된 스토리지 시스템과 동일하거나 더 적거나 추가적인 컴포넌트를 포함할 수 있다. 일부 예에서, 원격 실행 디바이스(304)는 호스트로부터 오프로드된 동작을 실행하도록 구성된 처리 유닛에 결합된 메모리 영역을 포함한다. 일부 구현예에서, 원격 실행 디바이스(304)는 도 2를 참조하여 전술한 바와 같이 메모리 디바이스(230)와 같은 메모리 디바이스에 구현된 PIM-지원 메모리 디바이스(204)와 같은 PIM-지원 메모리 디바이스다.다음 예 중 많은 부분이 PIM-지원 메모리 디바이스의 맥락에서 설명되어 있지만, 독자는 다음 예가 메모리 디바이스에 구현되지 않은 가속기 또는 코프로세서의 맥락에서 구현될 수도 있다는 것을 이해할 것이다.
위에서 논의된 바와 같이, 호스트(302)가 프로세서로부터 오프로드된 동작의 원격 실행을 개시할 때, 컴퓨팅 커널 및 컴퓨팅 커널에 의해 타겟화된 데이터가 원격 실행 디바이스(304)에 복사된다. 특히, 오프로드된 동작에 의해 활용되는 하나 이상의 데이터 블록은 원격 실행 디바이스(304)의 메모리 영역에 복사된다. 예를 들어, 호스트(302)는 원격 처리 유닛에 결합된 메모리 영역에 하나 이상의 데이터 블록을 기록하라는 요청을 발행한다. 특정 예에서, 호스트(302)는 호스트 메모리 영역에서 PIM 메모리 영역으로 하나 이상의 데이터 블록을 기록하라는 요청을 포함하여 PIM 컴퓨팅 커널의 오프로딩을 개시한다. 이 예에서 요청은 PIM 메모리 영역을 포함하는 PIM-지원 메모리 유닛의 메모리 제어 로직에 의해 수신된다. 하나 이상의 데이터 블록은 데이터 및 메타데이터를 포함하며 제어 비트도 포함할 수 있고, 이는 오류 검사 정보를 포함한다. 예를 들어, 오류 검사 정보는 해당 데이터에 대한 다수의 ECC 검사 비트를 포함할 수 있다.
도 3의 방법은 메모리 영역에 데이터 블록을 저장하기 위해 호스트에 의해 발행된 요청을 식별하는 단계(306)를 포함하며, 여기서 데이터 블록은 데이터 및 데이터에 대한 호스트-생성 오류 검사 정보를 포함한다. 일부 예에서, 메모리 영역에 데이터 블록을 저장하기 위해 호스트에 의해 발행된 요청을 식별하는 단계(306)는 - 여기서, 데이터 블록은 데이터 및 데이터에 대한 호스트-생성 오류 검사 정보를 포함함 - 처리 유닛에 결합된 원격 처리 디바이스 메모리 영역에 데이터 블록을 기록하라는 요청을 수신하는 원격 실행 디바이스(304)에 의해 수행된다. 일부 구현예에서, 호스트는 호스트 기반-오류 검사 기술이 사용되는 호스트 메모리 영역으로부터 메모리 영역으로 데이터 블록이 복사되는 복사 동작을 개시한다. 호스트-기반 오류 검사 기술에서, 호스트가 데이터에 대한 오류 검사 정보를 생성하고, 해당 오류 검사 정보를 데이터 블록에 저장한다. 예를 들어, 오류 검사 정보는 체크비트 등의 ECC 정보일 수 있다. 일부 예에서, 메모리 영역에 데이터 블록을 저장하기 위해 호스트에 의해 발행된 요청을 식별하는 단계(306) - 여기서 데이터 블록은 데이터 및 데이터에 대한 호스트-생성 오류 검출 정보를 포함함 - 호스트-생성 오류 검사 정보가 로컬로 생성된 오류 검사 정보로 덮어쓰기 될 수 있음을 식별하는 단계를 포함한다. 호스트-생성 오류 검사 정보가 로컬로 생성된 오류 검사 정보로 덮어쓸 수 있는지 식별하는 단계는 요청이 전달된 메모리 영역을 기반으로 한 추론을 통해 수행되거나 데이터 블록의 제어 정보를 기반으로 수행될 수 있다.
원격 실행 디바이스가 PIM-지원 메모리 디바이스인 특정 예에서, 호스트는 호스트 메모리 영역에서 PIM 메모리 영역으로 데이터 블록을 복사하기 위해 복사 동작을 개시한다. PIM-지원 메모리 유닛은 PIM 메모리 영역에 데이터 블록을 기록하라는 요청을 수신하고 기록 버퍼에 데이터 블록을 수신한다. 호스트 메모리 영역으로부터 복사되는 데이터 블록은 호스트-생성 오류 검사 정보를 포함한다. 일부 예들에서, 데이터 블록은 데이터 블록이 PIM 데이터를 포함함을 나타내는 제어 정보를 또한 포함할 수 있다.
도 3의 방법은 또한 데이터에 대해 로컬로 생성된 오류 검사 정보로 호스트-생성 오류 검출 정보를 덮어쓰는 방식으로 데이터 블록을 업데이트하는 단계(308)를 포함한다. 일부 예에서, 데이터에 대해 로컬로 생성된 오류 검사 정보로 호스트-생성 오류 검출 정보를 덮어쓰는 방식으로 데이터 블록을 업데이트(308)하는 단계는 원격 실행 디바이스(304)의 오류 검사 모듈에 의해 수행되어 데이터 블록 내의 데이터에 대한 오류 검사 정보를 생성한다. 예를 들어, 로컬로 생성된 오류 검출 정보는 호스트-기반 ECC 방식과 다른 로컬 ECC 방식을 사용하여 인코딩된 ECC 체크비트일 수 있다. 이 예에서는, 데이터에 대해 로컬로 생성된 오류 검사 정보로 호스트-생성 오류 검출 정보를 덮어쓰는 방식으로 데이터 블록을 업데이트(308)하는 단계는 호스트-생성 오류 검사 정보가 차지하는 데이터 블록의 위치에 로컬로 생성된 오류 검출 정보를 저장함으로써 추가로 수행된다. 예를 들어, 데이터 블록의 호스트-기반 ECC 체크비트는 로컬로 생성된 ECC 체크비트로 대체된다. 이에 따라, 메모리 영역에 데이터 블록을 위한 추가 공간을 할당하지 않고, 데이터 블록 내의 데이터에 대해 원격 실행 장치가 사용하는 오류 검사 정보를 생성할 수 있으며, 오류 검사 정보를 별도로 저장할 필요도 없다.
원격 실행 디바이스(304)가 PIM-지원 메모리 유닛(예를 들어, 도 2의 PIM-지원 메모리 유닛(204))인 특별한 예에서, PIM-지원 메모리 유닛은 호스트-기반 ECC 방식과 다른 PIM 기반 ECC 방식을 사용하는 ECC 체크비트를 생성하는 PIM-지원 메모리 유닛의 오류 검사 모듈에 의해 생성된 오류 검사 정보로 호스트-생성 오류 검출 정보를 덮어써서 데이터 블록을 업데이트한다. 예를 들어, PIM-지원 메모리 디바이스는 데이터 블록이 기록 버퍼에 있는 동안 호스트에서 생성된 ECC 체크비트를 PIM ECC 체크비트로 덮어쓰기 한다. 일부 예에서, PIM-지원 메모리 유닛은 PIM 메모리 영역에 데이터를 기록하라는 요청에 응답하여 자동으로 호스트-생성 ECC 체크비트를 PIM ECC 체크비트로 덮어쓰기 한다. 다른 예에서, PIM-지원 메모리 유닛은 데이터 블록이 PIM 데이터를 포함하거나 호스트-생성 ECC 체크비트가 덮어쓰기 될 수 있음을 나타내는 데이터 블록의 제어 정보에 기초하여 호스트-생성 ECC 체크비트를 PIM ECC 체크비트로 덮어쓰기 한다.
도 3의 방법은 또한 업데이트된 데이터 블록을 메모리 영역에 저장하는 단계(310)를 포함한다. 일부 예에서, 업데이트된 데이터 블록을 메모리 영역에 저장하는 단계(310)는 원격 실행 디바이스(304)의 처리 유닛에 결합된 메모리 영역에, 로컬로 생성된 오류 검사 정보가 호스트-생성 오류 검사 정보를 대체하는, 데이터 블록을 저장하는 원격 실행 디바이스(304)에 의해 수행된다. 특정 예에서, PIM-지원 메모리 유닛은 호스트-생성 ECC 체크비트 대신에 PIM ECC 체크비트를 포함하는 업데이트된 데이터 블록을 PIM 유닛에 결합된 PIM 메모리 영역에 저장한다.
추가 설명을 위해, 도 4는 본 개시에 따라 오프로드된 동작에 사용되는 데이터 오류 검사를 위한 예시적인 방법을 도시하는 흐름도를 제시한다. 도 3의 예시적인 방법과 마찬가지로, 도 4의 방법은 또한 메모리 영역에 데이터 블록을 저장하기 위해 호스트에 의해 발행된 요청을 식별하는 단계(306) - 여기서 상기 데이터 블록은 데이터 및 상기 데이터에 대한 호스트 생성 오류 검사 정보를 포함함 -, 데이터에 대해 로컬로 생성된 오류 검사 정보로 호스트-생성 오류 검출 정보를 덮어써서 데이터 블록을 업데이트하는 단계(308) 및 업데이트된 데이터 블록을 메모리 영역에 저장하는 단계(310)를 포함한다.
도 4의 방법은 또한 데이터 블록에서 호스트-제공 오류 표시자를 식별하는 단계(402)를 포함한다. 위에서 논의된 바와 같이, 도 1 및 2의 호스트 디바이스와 관련하여, 호스트(302)는 호스트 메모리 영역으로부터 하나 이상의 데이터 블록을 판독하고 데이터 블록을 원격 실행 디바이스 메모리 영역에 기록하기 전에 데이터 블록에 대한 오류 검사를 수행할 수 있다. 호스트(302)가 데이터 블록에서 교정할 수 없는 오류를 발견하면 데이터 블록에 오류가 표시된다. 예를 들어, 호스트(302)는 데이터 블록을 포이즌 비트로 표시한다. 일부 예에서, 데이터 블록에서 호스트 제공 오류 표시자를 식별하는 단계(402)는 호스트(302)에 의해 포함된 데이터 블록에서 마커를 검출하는 원격 실행 디바이스(304)에 의해 수행된다. 예를 들어, 마커는 포이즌 비트일 수 있다.
추가 설명을 위해, 도 5는 본 개시에 따라 오프로드된 동작에 사용되는 데이터 오류 검사를 위한 예시적인 방법을 도시하는 흐름도를 제시한다.도 3의 예시적인 방법과 마찬가지로, 도 5의 방법은 또한 메모리 영역에 데이터 블록을 저장하기 위해 호스트에 의해 발행된 요청을 식별하는 단계(306) - 여기서 상기 데이터 블록은 데이터 및 상기 데이터에 대한 호스트 생성 오류 검사 정보를 포함함 -, 데이터에 대해 로컬로 생성된 오류 검사 정보로 호스트-생성 오류 검출 정보를 덮어써서 데이터 블록을 업데이트 하는 단계(308) 및 업데이트된 데이터 블록을 메모리 영역에 저장하는 단계(310)를 포함한다.
도 5의 방법은 또한 업데이트된 데이터 블록을 메모리 영역으로부터 처리 유닛으로 판독할 때 로컬로 생성된 오류 검사 정보를 사용하여 데이터를 검증하는 단계(502)를 포함한다. 일부 예에서, 업데이트된 데이터 블록을 메모리 영역으로부터 처리 유닛으로 판독할 때 로컬로 생성된 오류 검사 정보를 사용하여 데이터를 검증하는 단계(502)는 원격 실행 디바이스 메모리 영역으로부터 데이터를 처리 유닛의 레지스터로 판독하는 동작을 처리 유닛이 실행하는 것에 응답하여 수행된다. 일부 예에서, 메모리 영역에서 처리 유닛으로 업데이트된 데이터 블록을 판독할 때 로컬로 생성된 오류 검사 정보를 사용하여 데이터를 검증하는 단계(502)는 원격 실행 디바이스(304)의 오류 검사 모듈에 의해 수행되어 오류 검사 정보를 디코딩하고 로컬 오류 검사 방식을 이용하여 데이터 블록 내의 데이터에 대한 오류 검사 정보를 생성하고 생성된 오류 검사 정보와 데이터 블록에 저장된 오류 검사 정보를 비교한다. 예를 들어, 원격 실행 디바이스(304)는 로컬 ECC 방식을 사용하여 데이터 블록의 데이터에 대한 ECC 체크비트를 생성하고 생성된 ECC 체크비트를 데이터 블록의 저장된 ECC 체크비트와 비교할 수 있다. 오류가 발생하면, 원격 실행 디바이스(304)는 오류 검사 정보를 이용하여 오류 교정을 시도할 수 있다.
원격 실행 디바이스가 PIM-지원 메모리 유닛(예를 들어, 도 2의 PIM-지원 메모리 유닛(210))인 특정 예에서, 업데이트된 데이터 블록을 메모리 영역으로부터 처리 유닛으로 판독할 때 로컬로 생성된 오류 검사 정보를 사용하여 데이터를 검증하는 단계(502)는 PIM 메모리 영역으로부터 PIM 데이터를 로딩하기 위한 PIM 동작에 직면한 PIM 유닛에 응답하여 수행된다. PIM 유닛이 데이터 블록의 데이터를 PIM 레지스터 파일의 레지스터로 판독할 때, PIM 오류 검사 모듈은 데이터에 대한 ECC 체크비트를 생성하고 생성된 ECC 체크비트를 데이터 블록의 ECC 체크비트와 비교한다. 오류가 발생하면, PIM 유닛은 데이터를 레지스터로 판독하기 전에 데이터의 오류를 교정하려고 시도한다. 오류를 교정할 수 없으면 로드 동작이 취소되고 데이터가 손상된 것으로 표시된다.
추가 설명을 위해, 도 6은 본 개시에 따라 오프로드된 동작에 사용되는 데이터 오류 검사를 위한 예시적인 방법을 도시하는 흐름도를 제시한다.도 5의 예시적인 방법과 마찬가지로, 도 6의 방법은 또한 메모리 영역에 데이터 블록을 저장하기 위해 호스트에 의해 발행된 요청을 식별하는 단계(306) - 여기서 상기 데이터 블록은 데이터 및 상기 데이터에 대한 호스트 생성 오류 검사 정보를 포함함 -, 데이터에 대해 로컬로 생성된 오류 검사 정보로 호스트-생성 오류 검출 정보를 덮어쓰는 방식으로 데이터 블록을 업데이트하는 단계(308), 업데이트된 데이터 블록을 메모리 영역에 저장하는 단계(310), 및 업데이트된 데이터 블록을 메모리 영역으로부터 처리 유닛으로 판독할 때 로컬로 생성된 오류 검사 정보를 사용하여 데이터를 검증하는 단계(502)를 포함한다.
도 6의 방법은 또한 처리 유닛에 의해 새로운 데이터를 생성하는 단계(602)를 포함한다. 일부 예에서, 처리 유닛에 의해 새로운 데이터를 생성하는 단계(602)는 호스트(302)에 의해 오프로드된 동작을 실행함으로써 데이터를 생성하는 원격 실행 디바이스(304)의 처리 유닛에 의해 수행된다. 이러한 예에서, 새로운 데이터를 생성하는 단계는 업데이트된 데이터 블록의 데이터를 수정하거나 데이터를 생성하는 단계를 포함할 수 있다. 동작으로 인한 새로운 데이터는 처리 유닛의 레지스터에 임시 저장된다. 원격 실행 디바이스(304)가 PIM-지원 메모리 유닛(예를 들어, 도 2의 PIM-지원 메모리 유닛(210))인 특정 예에서, 처리 유닛에 의해 새로운 데이터를 생성하는 단계(602)는 PIM 데이터를 생성하기 위해 호스트(302)로부터 오프로드된 PIM 동작을 실행하는 PIM 처리 유닛에 의해 수행된다. PIM 동작은 PIM 메모리 영역에서 로딩된 PIM 레지스터의 데이터를 수정하고 결과를 PIM 레지스터 또는 다른 PIM 레지스터에 저장한다.
도 6의 방법은 또한 새로운 데이터에 대한 오류 검사 정보를 생성하는 단계(604)를 포함한다. 일부 예에서, 오류 검사 정보를 생성하는 단계(604)는 새로운 데이터에 대한 오류 검사 정보를 생성하는 원격 실행 디바이스(304)의 오류 검사 모듈에 의해 수행된다. 예를 들어, 오류 검사 모듈은 ECC 방식을 사용하여 새로운 데이터에 대한 ECC 검사 비트를 생성할 수 있다. 원격 실행 디바이스(304)가 PIM-지원 메모리 유닛(예를 들어, 도 2의 PIM-지원 메모리 유닛(210))인 특정 예에서, 오류 검사 정보를 생성하는 단계(604)는 PIM 오류 검사 모듈에 의해 수행되며 PIM 동작으로 인해 발생하는 PIM 데이터에 대한 새로운 ECC 검사 비트를 계산한다.
도 6의 방법은 또한 새로운 데이터와 새로운 데이터에 대해 로컬로 생성된 오류 검사 정보를 메모리 영역의 새로운 메모리 블록에 저장하는 단계(606)를 포함하며 여기서 새로운 데이터 블록은 새로운 데이터가 오프로드된 동작으로부터 생성되었음을 나타내도록 표시된다. 일부 예에서, 새로운 데이터와 새로운 데이터에 대한 로컬로 생성된 오류 검사 정보를 메모리 영역의 새로운 메모리 블록에 저장하는 단계는(606) - 여기서 새로운 데이터 블록은 새로운 데이터가 오프로드된 동작으로부터 생성되었음을 나타내도록 표시됨 - 원격 실행 디바이스(304)에 의해 수행되어 새로운 데이터에 대해 생성된 오류 검사 정보와 함께 처리 유닛의 레지스터로부터의 새로운 데이터를 처리 유닛에 결합된 메모리 영역의 데이터 블록에 기록한다. 예를 들어, 새로운 데이터 블록은 오프로드된 동작으로부터 생성된 새로운 데이터와 새로운 데이터에 대해 계산된 ECC 체크비트를 포함한다. 새로운 데이터 블록은 처리 유닛의 레지스터로부터 업데이트된 데이터 블록과 동일한 메모리 영역의 어드레스에 기록되어 업데이트된 데이터 블록을 덮어쓰기 하거나, 새로운 데이터 블록이 다른 어드레스에 기록될 수 있다. 새로운 데이터 블록은 데이터 블록의 데이터가 오프로드된 동작으로부터 생성되었음을 나타내기 위해 표시된다. 따라서, 이후에 호스트에 의해 판독될 때, 호스트는 새로운 데이터 블록에 호스트-생성 오류 검사 정보가 포함되어 있지 않음을 인식할 수 있다. 일부 예에서, 데이터 블록의 데이터가 오프로드된 동작으로부터 생성되었음을 나타내기 위해 새로운 데이터 블록을 표시하는 단계는 새로운 데이터 블록에 제어 비트를 설정함으로써 수행된다.
원격 실행 디바이스(304)가 PIM-지원 메모리 유닛(예를 들어, 도 2의 PIM-지원 메모리 유닛(210))인 특정 예에서, 새로운 데이터와 새로운 데이터에 대한 로컬로 생성된 오류 검사 정보를 메모리 영역의 새로운 메모리 블록에 저장하는 단계는(606) - 여기서 새로운 데이터 블록은 새로운 데이터가 오프로드된 동작으로부터 생성되었음을 나타내도록 표시됨 - PIM ECC 체크비트와 함께 PIM 레지스터의 PIM 데이터를 PIM 메모리 영역의 새로운 데이터 블록에 기록하는 PIM-지원 메모리 디바이스에 의해 수행된다. 예를 들어 새로운 데이터 블록에 제어 비트를 설정하면 새로운 데이터 블록이 PIM 데이터를 포함하는 것으로 표시된다.
추가 설명을 위해, 도 7은 본 개시에 따라 오프로드된 동작에 사용되는 데이터 오류 검사를 위한 예시적인 방법을 도시하는 흐름도를 제시한다. 도 6의 예시적인 방법과 마찬가지로, 도 7의 방법은 또한 메모리 영역에 데이터 블록을 저장하기 위해 호스트에 의해 발행된 요청을 식별하는 단계(306) - 여기서 데이터 블록은 데이터 및 데이터에 대한 호스트-생성 오류 검사 정보를 포함함 -, 데이터에 대해 로컬로 생성된 오류 검사 정보로 호스트-생성 오류 검출 정보를 덮어쓰기 하여 데이터 블록을 업데이트하는 단계(308), 업데이트된 데이터 블록을 메모리 영역에 저장하는 단계(310), 업데이트된 데이터 블록을 메모리 영역에서 처리 유닛으로 판독할 때 로컬로 생성된 오류 검사 정보를 사용하여 데이터를 검증하는 단계(502), 처리 유닛이 새로운 데이터를 생성하는 단계(602), 새로운 데이터에 대한 오류 검사 정보를 생성하는 단계(604), 및 새로운 데이터와 새로운 데이터에 대해 로컬로 생성된 오류 검사 정보를 메모리 영역의 새로운 메모리 블록에 저장하는 단계(606)를 포함하고, 여기서, 새로운 데이터 블록은 새로운 데이터가 오프로드된 동작으로부터 생성되었음을 나타내도록 표시된다.
도 7의 방법은 또한 새로운 데이터를 호스트에 제공하기 전에 새로운 데이터에 대해 로컬로 생성된 오류 검사 정보를 사용하여 새로운 데이터를 검증하는 단계(702)를 포함한다. 일부 예에서, 새로운 데이터를 호스트에 제공하기 전에 새로운 데이터에 대해 로컬로 생성된 오류 검사 정보를 사용하여 새로운 데이터를 검증하는 단계(702)는 원격 실행 디바이스(304)의 오류 검사 모듈에 의해 수행되어, 로컬 오류 검사 방식을 이용하여 새로운 데이터 블록에 포함된 데이터에 대한 오류 검사 정보를 생성하고, 생성된 오류 검사 정보와 새로운 데이터 블록에 저장된 오류 검사 정보를 비교한다. 예를 들어, 원격 실행 디바이스(304)는 데이터 블록의 데이터에 대한 ECC 체크비트를 생성하고 생성된 ECC 체크비트를 데이터 블록의 저장된 ECC 체크비트와 비교한다. 오류가 발생하면, 원격 실행 디바이스(304)는 오류 검사 정보를 이용하여 오류 교정을 시도할 수 있다. 일부 예에서는, 새로운 데이터를 호스트에 제공하기 전에 로컬로 생성된 새로운 데이터에 대한 오류 검사 정보를 사용하여 새로운 데이터를 검증하는 단계(702)는 오프로드된 동작의 완료 또는 판독 요청에 대한 응답으로 수행된다. 일부 예에서, 호스트에 새로운 데이터를 제공하는 단계는 원격 실행 디바이스 메모리 영역에서 호스트 메모리 영역으로 데이터를 직접 복사함으로써 수행된다. 다른 예에서, 새로운 데이터를 호스트에 제공하는 단계는 판독 요청에 응답하여 데이터를 호스트에 발송함으로써 수행된다. 일부 구현예에서, 새로운 데이터를 호스트에 제공하는 단계는 데이터, 제어 정보 및 로컬로 생성된 오류 검사 정보를 포함하는 전체 데이터 블록을 제공하는 단계를 포함합니다. 다른 구현예에서, 호스트에 새로운 데이터를 제공하는 단계는 데이터 및 제어 정보만을 제공하는 단계를 포함한다.
원격 실행 디바이스가 PIM-지원 메모리 유닛(예를 들어, 도 2의 PIM-지원 메모리 유닛(210))인 특정 예에서, 새로운 데이터를 호스트에 제공하기 전에 새로운 데이터에 대해 로컬로 생성된 오류 검사 정보를 사용하여 새로운 데이터를 검증하는 단계(702)는 PIM 오류 검사 모듈에 의해 수행되어, 데이터에 대한 ECC 체크비트를 생성하고 생성된 ECC 체크비트를 데이터 블록의 ECC 체크비트와 비교한다. 오류가 발생하면 PIM 유닛은 새로운 데이터를 호스트에 제공하기 전에 데이터의 오류를 교정하려고 시도한다. 일부 예에서, 호스트에 새로운 데이터를 제공하는 단계는 PIM 메모리 영역에서 호스트 메모리 영역으로 데이터를 직접 복사함으로써 수행된다. 다른 예에서, 새로운 데이터를 호스트에 제공하는 단계는 판독 요청에 응답하여 데이터를 호스트에 발송함으로써 수행된다.
추가 설명을 위해, 도 8은 본 개시에 따라 오프로드된 동작에 사용되는 데이터 오류 검사를 위한 예시적인 방법을 도시하는 흐름도를 제시한다.도 7의 예시적인 방법과 마찬가지로, 도 8의 방법은 또한 메모리 영역에 데이터 블록을 저장하기 위해 호스트에 의해 발행된 요청을 식별하는 단계(306) - 여기서 데이터 블록은 데이터 및 데이터에 대한 호스트-생성 오류 검사 정보를 포함함 -, 데이터에 대해 로컬로 생성된 오류 검사 정보로 호스트-생성 오류 검사 정보를 덮어쓰기 하여 데이터 블록을 업데이트하는 단계(308), 업데이트된 데이터 블록을 메모리 영역에 저장하는 단계(310), 업데이트된 데이터 블록을 메모리 영역으로부터 처리 유닛으로 판독할 때 로컬로 생성된 오류 검사 정보를 사용하여 데이터를 검증하는 단계(502), 처리 유닛에 의해 새로운 데이터를 생성하는 단계(602), 새로운 데이터에 대한 오류 검사 정보를 생성하는 단계(604), 새로운 데이터와 새로운 데이터에 대한 로컬로 생성된 오류 검사 정보를 메모리 영역의 새로운 메모리 블록에 저장하는 단계(606) - 여기서 새로운 데이터 블록은 새로운 데이터가 오프로드된 동작으로부터 생성되었음을 나타내기 위해 표시됨 -, 및 새로운 데이터를 호스트에 제공하기 전에 새로운 데이터에 대해 로컬로 생성된 오류 검사 정보를 사용하여 새로운 데이터를 검증하는 단계(702)를 포함한다.
도 8의 방법은 또한 복구 불가능한 오류가 검출될 때 오류 표시자로 새로운 데이터를 표시하는 단계(802)를 포함한다. 원격 실행 디바이스(304)가 로컬로 생성된 오류 검사 정보를 이용하여 새로운 데이터를 검증할 때 발견된 오류를 교정할 수 없는 경우, 오류를 교정할 수 없으므로 데이터 블록이나 데이터 블록의 일부가 손상될 수 있다. 일부 예에서, 복구 불가능한 오류가 검출될 때 오류 표시자로 새로운 데이터를 표시하는 단계(802)는 데이터 블록 내에서 데이터 또는 그 일부가 손상되었음을 표시하는 원격 실행 디바이스(304)에 의해 수행된다. 예를 들어, 새로운 데이터 블록에는 포이즌 비트가 표시되어 데이터 블록의 데이터가 손상되었음을 나타낼 수 있다. 이후에 호스트가 호스트 메모리 영역에서 이 데이터 블록을 판독하며 호스트는 데이터가 손상되었다는 표시를 인식하고 오류를 처리할 수 있다. 원격 실행 디바이스가 PIM-지원 메모리 유닛(예를 들어, 도 2의 PIM-지원 메모리 유닛(210))인 특정 예에서, 복구 불가능한 오류가 검출될 때 오류 표시자로 새로운 데이터를 표시하는 단계(802)는 PIM 데이터를 포함하는 데이터 블록을 손상된 것으로 표시하는 PIM-지원 메모리 유닛에 의해 수행된다.
추가 설명을 위해, 도 9는 본 개시에 따라 오프로드된 동작에 사용되는 데이터 오류 검사를 위한 예시적인 방법을 도시하는 흐름도를 제시한다.도 3의 예시 방법과 마찬가지로, 도 9의 방법은 또한 메모리 영역에 데이터 블록을 저장하기 위해 호스트에 의해 발행된 요청을 식별하는 단계(306) - 여기서 데이터 블록은 데이터 및 데이터에 대한 호스트-생성 오류 검사 정보를 포함함 -, 데이터에 대해 로컬로 생성된 오류 검사 정보로 호스트 생성 오류 검출 정보를 덮어쓰기 하여 데이터 블록을 업데이트하는 단계(308) 및 업데이트된 데이터 블록을 메모리 영역에 저장하는 단계(310)를 포함한다.
도 9의 방법은 또한 호스트의 프로세서로부터 오프로드된 동작을 실행하도록 원격 실행 디바이스를 구성하는 단계(902)를 포함한다. 일부 예에서, 호스트의 프로세서로부터 오프로드된 동작을 실행하도록 원격 실행 디바이스를 구성하는 단계(902)는 위에서 논의된 바와 같이 호스트(302)가 컴퓨팅 커널을 원격 실행 디바이스(304)로 오프로드함으로써 수행된다. 원격 실행 디바이스가 PIM-지원 메모리 유닛(예를 들어, 도 2의 PIM-지원 메모리 유닛(210))인 특정 예에서, 호스트의 프로세서로부터 오프로드된 동작을 실행하도록 원격 실행 디바이스를 구성하는 단계(902)는 PIM 커맨드로 PIM-지원 메모리 디바이스의 PIM 유닛을 구성함으로써 수행된다.
도 9의 방법은 또한 데이터 블록을 원격 실행 디바이스에 복사하기 전에 데이터 블록에 저장된 호스트-생성 오류 검사 정보를 사용하여 호스트 메모리에서 판독된 데이터 블록에 대한 오류 검사를 수행하는 단계(904)를 포함한다. 일부 예에서는, 데이터 블록을 원격 실행 디바이스에 복사하기 전, 데이터 블록에 저장된 호스트-생성 오류 검사 정보를 이용하여 호스트 메모리로부터 판독한 데이터 블록에 대한 오류 검사를 수행하는 단계(904)는 데이터 블록 내의 데이터에 대한 오류 검사 정보를 생성하고, 생성된 데이터에 대한 오류 검사 정보와 데이터 블록에 저장된 오류 검사 정보를 비교하는 오류 검사 모듈에 의해 수행된다. 예를 들어, 오류 검사 모듈은 호스트-기반 ECC 방식을 이용하여 데이터에 대해 ECC 체크비트를 생성하고, 생성된 ECC 체크비트와 데이터 블록에 저장된 ECC 체크비트를 비교할 수 있다. 오류가 발생하면 PIM 유닛은 원격 실행 디바이스 메모리 영역에 데이터 블록을 기록하기 전에 데이터의 오류 교정을 시도한다.
일부 구현예에서, 데이터 블록을 원격 실행 디바이스에 복사하기 전, 데이터 블록에 저장된 호스트-생성 오류 검사 정보를 이용하여 호스트 메모리로부터 판독한 데이터 블록에 대한 오류 검사를 수행하는 단계(904) 복구 불가능한 오류가 감지되면 오류 표시자로 데이터 블록을 표시하는 단계(802)를 포함한다. 일부 예에서, 복구 불가능한 오류가 검출될 때 오류 표시자로 데이터 블록을 표시하는 단계(802)는 데이터 또는 그 일부가 손상되었음을 데이터 블록 내에서 표시하는 호스트(302)에 의해 수행된다. 예를 들어, 데이터 블록에 포이즌 비트가 표시되어 데이터 블록의 데이터가 손상되었음을 나타낼 수 있다. 원격 실행 디바이스(304)가 이 데이터 블록을 수신하면, 원격 실행 디바이스는 데이터가 손상되었음을 인지하고 오류를 처리할 수 있다.
도 9의 방법은 또한 원격 실행 디바이스의 메모리 영역에 데이터 블록을 저장하라는 요청을 발송하는 단계(906)를 포함한다. 일부 예에서, 원격 실행 디바이스의 메모리 영역에 데이터 블록을 저장하라는 요청을 발송하는 단계(906)는 원격 실행 디바이스(304)의 메모리 영역으로 향하는 데이터 블록에 대한 기록 요청을 발행하는 호스트(302)에 의해 수행된다. 원격 실행 디바이스가 PIM-지원 메모리 유닛(예를 들어, 도 2의 PIM-지원 메모리 유닛(210))인 특정 예에서, 호스트(302)는 PIM 메모리 영역에 데이터 블록을 저장하기 위해 PIM-지원 메모리 유닛에 기록 요청을 발행한다.
실시예는 시스템, 장치, 방법 및/또는 논리 회로부일 수 있다. 본 개시의 컴퓨터 판독 가능 프로그램 명령어는 어셈블러 명령어, 명령어-세트-아키텍처(ISA) 명령어, 기계 명령어, 기계 의존 명령어, 마이크로코드, 펌웨어 지침, 상태 설정 데이터 또는 Smalltalk, C++ 등과 같은 객체 지향 프로그래밍 언어 및 "C" 프로그래밍 언어 또는 이와 유사한 프로그래밍 언어 등과 같은 기존의 절차적 프로그래밍 언어를 포함하는 하나 이상의 프로그래밍 언어의 조합으로 작성된 소스 코드 또는 개체 코드일 수 있다. 일부 실시예에서, 예를 들어 프로그래밍 가능 논리 회로부, 현장 프로그래밍 가능 게이트 어레이(FPGA) 또는 프로그래밍 가능 논리 어레이(PLA)를 포함하는 전자 회로부는 컴퓨터 판독가능 프로그램 명령어의 상태 정보를 활용하여 컴퓨터가 판독할 있는 프로그램 명령어를 실행할 수 있다.
본 개시의 양태는 본 개시의 일부 실시예에 따른 방법, 장치(시스템) 및 논리 회로부의 흐름도 예시 및/또는 블록도를 참조하여 본 명세서에 설명된다. 흐름도 예시 및/또는 블록도의 각 블록, 그리고 흐름도 예시 및/또는 블록도의 블록 조합은 논리 회로부에 의해 구현될 수 있다는 것이 이해될 것이다.
논리 회로부는 프로세서, 다른 프로그래밍 가능한 데이터 처리 장치, 또는 다른 장치에서 구현되어 일련의 동작 단계가 프로세서, 다른 프로그램 가능한 장치 또는 다른 장치에서 수행되어 컴퓨터 구현 프로세스를 생성할 수 있어서, 컴퓨터, 기타 프로그래밍 가능한 장치 또는 기타 장치에서 실행되는 명령어는 순서도 및/또는 블록 다이어그램 블록에 지정된 기능/동작을 구현하도록 한다.
도면의 흐름도 및 블록도는 본 개시의 다양한 실시예에 따른 시스템, 방법 및 논리 회로의 가능한 구현의 아키텍처, 기능 및 동작을 예시한다. 이와 관련하여, 흐름도 또는 블록도의 각 블록은 지정된 논리 기능(들)을 구현하기 위한 하나 이상의 실행 가능한 명령어를 포함하는 명령어의 모듈, 세그먼트 또는 부분을 나타낼 수 있다. 일부 대안적인 구현예에서, 블록에 언급된 기능은 도면에 언급된 순서를 벗어나 발생할 수 있다. 예를 들어, 연속적으로 도시된 두 블록들은 실제로는 실질적으로 동시에 실행될 수 있거나, 관련된 기능에 따라 블록이 때때로 역순으로 실행될 수 있다. 또한 블록 다이어그램 및/또는 순서도 예시의 각 블록 및 블록 다이어그램 및/또는 순서도 예시의 블록 조합은 지정된 기능을 수행하거나 특수 목적 하드웨어와 컴퓨터 명령어의 조합을 수행하거나 수행하는 특수 목적 하드웨어 기반 시스템에 의해 구현될 수 있다는 점에 유의한다.
본 개시는 그 실시예를 참조하여 구체적으로 도시되고 설명되었지만, 다음 청구범위의 사상과 범위를 벗어나지 않으면서 형태와 세부사항에 대한 다양한 변경이 이루어질 수 있다는 것이 이해될 것이다. 그러므로 본 명세서에 기술된 실시예들은 단지 설명적인 관점에서만 고려되어야 하며, 한정적인 의미로 고려되어서는 안 된다. 본 개시는 상세한 설명이 아니라 첨부된 특허청구범위에 의해 정의되며, 그 범위 내에 있는 모든 차이점은 본 발명에 포함된 것으로 해석되어야 할 것이다.

Claims (20)

  1. 오프로드된 동작(offloaded operation)에 사용되는 데이터의 오류 검사 방법에 있어서, 상기 방법은:
    메모리 영역에 데이터 블록을 저장하기 위해 호스트에 의해 발행된 요청을 식별하는 단계 - 여기서, 상기 데이터 블록은 데이터 및 상기 데이터에 대한 호스트-생성 오류 검사 정보를 포함함 -;
    상기 호스트-생성 오류 검사 정보를 상기 데이터에 대해 로컬로 생성된 오류 검사 정보로 덮어쓰기 하여(overwriting) 상기 데이터 블록을 업데이트하는 단계; 및
    상기 업데이트된 데이터 블록을 상기 메모리 영역에 저장하는 단계를 포함하는, 방법.
  2. 제1항에 있어서, 상기 데이터 블록에서 호스트-제공 오류 표시자를 식별하는 단계를 더 포함하는, 방법.
  3. 제1항에 있어서, 상기 메모리 영역은 상기 호스트로부터 오프로드된 동작을 실행하도록 구성된 처리 유닛에 결합되는, 방법.
  4. 제3항에 있어서, 상기 업데이트된 데이터 블록을 상기 메모리 영역으로부터 상기 처리 유닛으로 판독할 때, 상기 로컬로 생성된 오류 검사 정보를 이용하여 상기 데이터를 검증하는 단계를 더 포함하는, 방법.
  5. 제4항에 있어서,
    상기 처리 유닛에 의해, 새로운 데이터를 생성하는 단계;
    상기 새로운 데이터에 대한 오류 검사 정보를 생성하는 단계; 및
    상기 새로운 데이터를 새로운 데이터 블록에 저장하고, 상기 새로운 데이터에 대해 상기 로컬로 생성된 오류 검사 정보를 상기 메모리 영역의 새로운 메모리 블록에 저장하는 단계를 더 포함하고, 상기 새로운 데이터 블록은 상기 새로운 데이터가 상기 오프로드된 동작으로부터 생성되었음을 나타내도록 표시되는, 방법.
  6. 제5항에 있어서, 상기 새로운 데이터를 상기 호스트에 제공하기 전에, 상기 새로운 데이터에 대해 상기 로컬로 생성된 오류 검사 정보를 이용하여 상기 새로운 데이터를 검증하는 단계를 더 포함하는, 방법.
  7. 제6항에 있어서, 복구 불가능한 오류가 검출되면 오류 표시자로 상기 새로운 데이터를 표시하는 단계를 더 포함하는, 방법.
  8. 제3항에 있어서, 상기 메모리 영역 및 상기 처리 유닛은 PIM(processing-in-memory) 디바이스에 포함되는, 방법.
  9. 오프로드된 동작에 사용되는 데이터의 오류 검사 장치에 있어서, 상기 장치는:
    호스트로부터 오프로드된 동작을 실행하도록 구성된 처리 유닛;
    상기 처리 유닛에 결합된 메모리 영역; 및
    논리 회로부를 포함하고, 상기 논리 회로부는:
    상기 메모리 영역에 데이터 블록을 저장하기 위해 상기 호스트에 의해 발행된 요청을 식별하고 - 여기서, 상기 데이터 블록은 데이터 및 상기 데이터에 대한 호스트-생성 오류 검사 정보를 포함함 -;
    상기 호스트-생성 오류 검사 정보를 상기 데이터에 대해 로컬로 생성된 오류 검사 정보로 덮어쓰기 하여 상기 데이터 블록을 업데이트하고;
    상기 업데이트된 데이터 블록을 상기 메모리 영역에 저장하도록 구성되는, 장치.
  10. 제9항에 있어서, 상기 논리 회로부는 상기 데이터 블록에서 호스트-제공 오류 표시자를 식별하도록 더 구성되는, 장치.
  11. 제9항에 있어서, 상기 논리 회로부는 상기 업데이트된 데이터 블록을 상기 메모리 영역으로부터 상기 처리 유닛으로 판독할 때 상기 로컬로 생성된 오류 검사 정보를 사용하여 상기 데이터를 검증하도록 더 구성되는, 장치.
  12. 제9항에 있어서, 상기 논리 회로부는:
    상기 처리 유닛에 의해 생성된 새로운 데이터에 대한 오류 검사 정보를 생성하고;
    상기 새로운 데이터를 새로운 데이터 블록에 저장하고, 상기 새로운 데이터에 대한 상기 로컬로 생성된 오류 검사 정보를 상기 메모리 영역의 새로운 메모리 블록에 저장하도록 더 구성되고, 상기 새로운 데이터 블록은 상기 새로운 데이터가 오프로드된 동작으로부터 생성되었음을 나타내도록 표시되는, 장치.
  13. 제12항에 있어서, 상기 논리 회로부는 상기 새로운 데이터를 상기 호스트에 제공하기 전에 상기 새로운 데이터에 대해 상기 로컬로 생성된 오류 검사 정보를 사용하여 상기 새로운 데이터를 검증하도록 더 구성되는, 장치.
  14. 제13항에 있어서, 상기 논리 회로부는 복구 불가능한 오류가 검출될 때 오류 표시자로 상기 새로운 데이터를 표시하도록 더 구성되는, 장치.
  15. 제9항에 있어서, 상기 장치는 PIM(processing-in-memory) 디바이스인, 장치.
  16. 오프로드된 동작에 사용되는 데이터의 오류 검사 시스템에 있어서, 상기 시스템은:
    프로세서를 포함하는 호스트를 포함하고, 상기 호스트는:
    상기 프로세서로부터 오프로드된 동작을 실행하도록 원격 실행 디바이스를 구성하고;
    데이터 블록을 상기 원격 실행 디바이스에 복사하기 전에, 상기 데이터 블록에 저장된 호스트-생성 오류 검사 정보를 이용하여 호스트 메모리로부터 판독된 상기 데이터 블록에 대한 오류 검사를 수행하고;
    상기 원격 실행 디바이스의 메모리 영역에 상기 데이터 블록을 저장하라는 요청을 발송하도록 구성되고;
    상기 원격 실행 디바이스는:
    상기 메모리 영역에 데이터 블록을 저장하기 위해 상기 호스트에 의해 발행된 요청을 식별하고 - 여기서, 상기 데이터 블록은 데이터 및 상기 데이터에 대한 호스트-생성 오류 검사 정보를 포함함 -;
    상기 호스트-생성 오류 검사 정보를 상기 데이터에 대해 로컬로 생성된 오류 검사 정보로 덮어쓰기 하여 상기 데이터 블록을 업데이트하고;
    상기 업데이트된 데이터 블록을 상기 메모리 영역에 저장하도록 구성되는, 시스템.
  17. 제16항에 있어서, 상기 원격 실행 디바이스는:
    새로운 데이터를 생성하고;
    상기 새로운 데이터에 대한 오류 검사 정보를 생성하고; 및
    상기 새로운 데이터를 새로운 데이터 블록에 저장하고, 상기 새로운 데이터에 대한 상기 로컬로 생성된 오류 검사 정보를 상기 메모리 영역의 새로운 메모리 블록에 저장하도록 더 구성되고, 상기 새로운 데이터 블록은 상기 새로운 데이터가 오프로드된 동작으로부터 생성되었음을 나타내도록 표시되는, 시스템.
  18. 제17항에 있어서, 상기 원격 실행 디바이스는 상기 새로운 데이터를 상기 호스트에 제공하기 전에 상기 새로운 데이터에 대해 상기 로컬로 생성된 오류 검사 정보를 사용하여 상기 새로운 데이터를 검증하도록 더 구성되는, 시스템.
  19. 제18항에 있어서, 상기 원격 실행 디바이스는 복구 불가능한 오류가 검출될 때 오류 표시자로 상기 새로운 데이터를 표시하도록 더 구성되는, 시스템.
  20. 제16항에 있어서, 상기 원격 실행 디바이스는 PIM(processing-in-memory) 디바이스인, 시스템.
KR1020237037395A 2021-03-31 2022-03-24 오프로드된 동작에 사용된 데이터 오류 검사 KR20230161517A (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US17/218,535 US11573853B2 (en) 2021-03-31 2021-03-31 Error checking data used in offloaded operations
US17/218,535 2021-03-31
PCT/US2022/021776 WO2022212176A1 (en) 2021-03-31 2022-03-24 Error checking data used in offloaded operations

Publications (1)

Publication Number Publication Date
KR20230161517A true KR20230161517A (ko) 2023-11-27

Family

ID=81308361

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020237037395A KR20230161517A (ko) 2021-03-31 2022-03-24 오프로드된 동작에 사용된 데이터 오류 검사

Country Status (6)

Country Link
US (1) US11573853B2 (ko)
EP (1) EP4315067A1 (ko)
JP (1) JP2024513174A (ko)
KR (1) KR20230161517A (ko)
CN (1) CN117136355A (ko)
WO (1) WO2022212176A1 (ko)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20230099831A1 (en) * 2021-09-24 2023-03-30 Samsung Electronics Co., Ltd. Systems and methods for near-storage processing in solid state drives
US11940872B2 (en) * 2022-04-21 2024-03-26 Analog Devices International Unlimited Company Error correction code validation

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1324207B1 (en) * 2001-12-11 2007-02-14 Matsushita Electric Industrial Co., Ltd. Ic card and data processing method therefor
EP2552080B1 (en) * 2006-07-10 2017-05-10 Solarflare Communications Inc Chimney onload implementation of network protocol stack
JP4374015B2 (ja) * 2006-11-30 2009-12-02 株式会社東芝 データ送信装置、データ受信装置及びデータ通信システム
US8739012B2 (en) * 2011-06-15 2014-05-27 Texas Instruments Incorporated Co-hosted cyclical redundancy check calculation
WO2013048451A1 (en) * 2011-09-30 2013-04-04 Intel Corporation Presentation of direct accessed storage under a logical drive model
US8812898B1 (en) 2012-09-27 2014-08-19 Cadence Design Systems, Inc. System and method for transfer of data between memory with dynamic error recovery
US9325449B2 (en) * 2013-12-06 2016-04-26 Intel Corporation Lane error detection and lane removal mechanism to reduce the probability of data corruption
US9558062B2 (en) * 2014-07-28 2017-01-31 Qualcomm Incorporated Cyclic redundancy check (CRC) false detection reduction in communication systems
KR102479212B1 (ko) 2016-08-17 2022-12-20 삼성전자주식회사 반도체 메모리 장치, 이를 포함하는 메모리 시스템 및 이의 동작 방법
US10157142B2 (en) * 2016-09-29 2018-12-18 Intel Corporation Offload data transfer engine for a block data transfer interface
US10761779B2 (en) 2018-12-05 2020-09-01 Intel Corporation Storage compute offloads on sharded and erasure-coded data

Also Published As

Publication number Publication date
JP2024513174A (ja) 2024-03-22
EP4315067A1 (en) 2024-02-07
US11573853B2 (en) 2023-02-07
CN117136355A (zh) 2023-11-28
WO2022212176A1 (en) 2022-10-06
US20220318089A1 (en) 2022-10-06

Similar Documents

Publication Publication Date Title
US10789117B2 (en) Data error detection in computing systems
US6539503B1 (en) Method and apparatus for testing error detection
US10127109B2 (en) Resiliency to memory failures in computer systems
US7036066B2 (en) Error detection using data block mapping
US8176405B2 (en) Data integrity validation in a computing environment
US8775903B2 (en) Transparent recovery from hardware memory errors
US20140068208A1 (en) Separately stored redundancy
KR20230161517A (ko) 오프로드된 동작에 사용된 데이터 오류 검사
US10684913B2 (en) Systems and methods for detecting errors and/or restoring non-volatile random access memory using error correction code
US10262754B2 (en) Fine grained online remapping to handle memory errors
US8074113B2 (en) System and method for data protection against power failure during sector remapping
US8719664B1 (en) Memory protection cache
US20040153746A1 (en) Mechanisms for embedding and using integrity metadata
US20190042355A1 (en) Raid write request handling without prior storage to journaling drive
US8868517B2 (en) Scatter gather list for data integrity
CN116670652A (zh) 在远程执行设备中提供基于主机的错误检测能力
US7240272B2 (en) Method and system for correcting errors in a memory device
US8751898B2 (en) Utilizing error correcting code data associated with a region of memory
CN111061591B (zh) 基于存储器完整性检查控制器实现数据完整性检查的系统和方法
US20230409426A1 (en) Host-level error detection and fault correction
US11429485B1 (en) Memories with end-to-end data protection using physical location check
JP2012022508A (ja) 半導体記憶装置、制御装置、及び半導体記憶装置の制御方法
JPS6159696A (ja) 制御メモリ修復方式