KR101513380B1 - 구성 정보에 따라 원자 메모리 동작들을 수행하기 위한 방법들 및 메모리들 - Google Patents

구성 정보에 따라 원자 메모리 동작들을 수행하기 위한 방법들 및 메모리들 Download PDF

Info

Publication number
KR101513380B1
KR101513380B1 KR1020137012860A KR20137012860A KR101513380B1 KR 101513380 B1 KR101513380 B1 KR 101513380B1 KR 1020137012860 A KR1020137012860 A KR 1020137012860A KR 20137012860 A KR20137012860 A KR 20137012860A KR 101513380 B1 KR101513380 B1 KR 101513380B1
Authority
KR
South Korea
Prior art keywords
data
instruction
memory
packet
configuration
Prior art date
Application number
KR1020137012860A
Other languages
English (en)
Other versions
KR20130085042A (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 KR20130085042A publication Critical patent/KR20130085042A/ko
Application granted granted Critical
Publication of KR101513380B1 publication Critical patent/KR101513380B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C7/00Arrangements for writing information into, or reading information out from, a digital store
    • G11C7/10Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers
    • G11C7/1006Data managing, e.g. manipulating data before writing or reading out, data bus switches or control circuits therefor
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C7/00Arrangements for writing information into, or reading information out from, a digital store
    • G11C7/10Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • 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/7821Tightly coupled to memory, e.g. computational memory, smart memory, processor in memory
    • 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/7839Architectures of general purpose stored program computers comprising a single central processing unit with memory
    • G06F15/7842Architectures of general purpose stored program computers comprising a single central processing unit with memory on one IC chip (single chip microcontrollers)
    • G06F15/785Architectures of general purpose stored program computers comprising a single central processing unit with memory on one IC chip (single chip microcontrollers) with decentralized control, e.g. smart memories
    • 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/80Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
    • G06F15/8053Vector processors
    • G06F15/8076Details on data register access
    • G06F15/8084Special arrangements thereof, e.g. mask or switch
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C7/00Arrangements for writing information into, or reading information out from, a digital store
    • G11C7/10Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers
    • G11C7/1006Data managing, e.g. manipulating data before writing or reading out, data bus switches or control circuits therefor
    • G11C7/1009Data masking during input/output
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C7/00Arrangements for writing information into, or reading information out from, a digital store
    • G11C7/10Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers
    • G11C7/1078Data input circuits, e.g. write amplifiers, data input buffers, data input registers, data input level conversion circuits
    • G11C7/109Control signal input circuits
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C8/00Arrangements for selecting an address in a digital store
    • G11C8/10Decoders
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C7/00Arrangements for writing information into, or reading information out from, a digital store
    • G11C7/22Read-write [R-W] timing or clocking circuits; Read-write [R-W] control signal generators or management 

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computing Systems (AREA)
  • Software Systems (AREA)
  • Microelectronics & Electronic Packaging (AREA)
  • Memory System (AREA)
  • Dram (AREA)
  • Executing Machine-Instructions (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

메모리 저장소, 동작 로직, 및 명령 디코더를 가진 메모리를 포함한, 메모리들 및 원자 메모리 동작을 수행하기 위한 방법들이 개시된다. 동작 로직은 데이터를 수신하고 내부 제어 신호들에 따라 그것에 대해 동작들을 수행하도록 구성될 수 있다. 명령 디코더는 메모리 명령이 제공되는 적어도 하나의 메모리 명령부 및 명령 패킷과 연관된 데이터에 관련된 구성 정보가 제공되는 데이터 구성부를 가진 명령 패킷들을 수신하도록 구성될 수 있다. 명령 디코더는 또한 상기 메모리 명령에 적어도 부분적으로 기초하여 명령 제어 신호를 생성하도록 구성되며 또한 상기 구성 정보에 적어도 부분적으로 기초하여 제어 신호를 생성하도록 구성된다.

Description

구성 정보에 따라 원자 메모리 동작들을 수행하기 위한 방법들 및 메모리들 {MEMORIES AND METHODS FOR PERFORMING ATOMIC MEMORY OPERATIONS IN ACCORDANCE WITH CONFIGURATION INFORMATION}
본 발명의 실시예들은 일반적으로 메모리들에 관한 것으로, 보다 구체적으로는 예시된 실시예들 중 하나 이상에서, 마스크 제어 하에서 원자 메모리 동작들을 제공하도록 동작가능한 로직을 가지며 가변적인 피연산자 크기를 갖는 메모리들에 관한 것이다.
메모리들은 예를 들면, 프로세서에 의해 나중의 프로세싱을 위해 검색될 수 있는 데이터를 저장하기 위해 전자 시스템들 및 회로들에 사용된다. 데이터는 나중에 메모리로부터 판독될 뿐만 아니라 메모리에 기록될 수 있다. 보다 진보된 메모리들에서, 기본 동작들은 프로세서가 동작을 관리할 뿐만 아니라 메모리에 다수의 메모리 명령들을 발행해야 하는 것을 막기 위해 메모리 자체의 로직에 의해 수행될 수 있다. 예를 들면, 프로세서는 메모리에 단일의 "판독-수정-기록" 명령을 발행할 수 있으며, 상기 메모리는 메모리로부터 데이터를 검색하는 단계, 상기 데이터에 대한 동작들을 수행하는 단계, 및 결과 데이터를 메모리에 다시 기록하는 단계를 관리한다. 따라서, 하나의 메모리 명령이 상기 메모리에 발행될지라도, 상기 메모리 자체는 메모리에 저장된 데이터를 액세스하는 것 및 상기 데이터에 대한 동작들을 수행하는 것을 포함하는 복수의 동작들을 관리 및 수행한다. 이 명령들은 "원자 메모리 동작들(atomic memory operations)"이라 불리울 수 있다. 이들 동작들은 그것들이 불가분적으로: 중단되거나 또는 다시 나뉠 수 없는 단일 시퀀스로서 수행되기 때문에 "원자"로 불리운다. 프로세서가 공유된 메모리 아이템을 업데이트해야 한다면, 제 1 프로세서가 업데이트된 데이터를 메모리에 리턴하기 전에 상기 업데이트를 실행하는 동안 공유 프로세서들이 데이터 아이템을 액세스하고 및/또는 수정하는 것을 방지하기 위해 부가적인 동작들이 실행되어야 한다. 상기 업데이트 동작을 메모리에 보다 직접 넣음으로써, 공유된 아이템들은 간섭성 오버헤드 없이, 보다 빠르게, 그리고 감소된 에너지 비용을 갖고 업데이트될 수 있다.
메모리들 및 원자 메모리 동작들을 수행하는 제어 로직은 상이한 크기들의 데이터에 대한 동작들을 수용하기 위해 유연성을 갖지 않을 수 있다. 즉, 메모리는 특정 길이를 가진 데이터, 및 특정 크기의 데이터 유닛들에 대한 동작들을 수행하도록 설계될 수 있다. 보다 작은 데이터 유닛들에 대한 동작들을 수행하는 것(예로서, 비록 4-바이트들의 데이터가 검색될지라도 1 바이트의 데이터에 대한 동작들을 수행하는 것)은 단지 보다 작은 데이터 유닛에 대한 결과들만이 요구될지라도 전체 동작 사이클을 소비할 것이다. 다른 데이터 유닛들에 대한 동작을 수행한 것으로부터의 결과들은 폐기된다. 원하는 데이터가 검색되기 위해 다수의 상이한 블록들의 데이터를 요구하는 방식으로 저장될 수 있으며 상이한 블록들로부터의 데이터를 사용한 동작은 단일의 단순한 시퀀스로 또는 효율적으로 수행될 수 없다는 사실로 인해 특정 데이터에 대한 동작들을 수행하는 것은 또한 복수의 동작들을 요구할 수 있다.
그러므로, 특정 메모리 동작들이 구현되는 방식으로부터 피연산자 및 데이터 크기에 독립적으로 유연성을 또한 제공하는 원자 메모리 동작들을 수행할 수 있는 메모리를 갖는 것이 바람직하다.
메모리 저장소, 동작 로직, 및 명령 디코더를 가진 메모리를 포함한, 메모리들 및 원자 메모리 동작을 수행하기 위한 방법들이 개시된다. 동작 로직은 데이터를 수신하고 내부 제어 신호들에 따라 동작들을 수행하도록 구성될 수 있다. 명령 디코더는 적어도 메모리 명령이 제공되는 메모리 명령부 및 명령 패킷과 연관된 데이터에 관련된 구성 정보가 제공되는 데이터 구성부를 가진 명령 패킷들을 수신하도록 구성될 수 있다. 명령 디코더는 또한 상기 메모리 명령에 적어도 부분적으로 기초하여 명령 제어 신호를 생성하도록 구성되며 또한 상기 구성 정보에 적어도 부분적으로 기초하여 제어 신호를 생성하도록 구성된다.
도 1은 본 발명의 일 실시예에 따른 메모리의 블록도이다.
도 2는 본 발명의 일 실시예에 따른 명령 패킷의 일부에 대한 도식 표현이다.
도 3은 본 발명의 일 실시예에 따른 패킷 디코더의 블록도이다.
도 4는 본 발명의 일 실시예에 따른 동작 로직의 일부의 블록도이다.
본 발명의 실시예들은 복수의 원자 동작들이 단일 명령으로 동시에 수행될 수 있도록 능력을 제공할 수 있다. 특정한 세부사항들이 본 발명의 실시예들에 대한 충분한 이해를 제공하기 위해 이하에 제시된다. 그러나, 본 발명의 실시예들이 이들 특정한 세부사항들 없이 실시될 수 있다는 것이 이 기술분야의 숙련자에게 명백할 것이다. 게다가, 여기에 설명된 본 발명의 특정 실시예들은 예로서 제공되며 본 발명의 범위를 이들 특정 실시예들에 제한하기 위해 사용되지 않아야 한다. 다른 인스턴스들에서, 잘 알려진 회로들, 제어 신호들, 타이밍 프로토콜들, 및 소프트웨어 연산들은 본 발명을 불필요하게 모호하게 하는 것을 회피하기 위해 상세히 도시되지 않는다.
도 1은 본 발명의 일 실시예에 따른 메모리(100)의 일부를 예시한다. 상기 메모리(100)는 메모리 명령의 실행을 요청하기 위해, 메모리 명령들, 뿐만 아니라 메모리 명령과 연관된 데이터에 관련된 구성 정보와 같은 다른 정보를 수신하는 IO 인터페이스(110)를 포함한다. 상기 메모리 명령들 및 구성 정보는 패킷화된 포맷으로 IO 인터페이스(110)에 제공될 수 있다. 즉, 명령 패킷은 필드들의 이진 숫자들(비트들)의 조합이 어떤 명령을 실행할지를 결정하기 위해 패킷 디코더(120)와 같은, 명령 디코더에 의해 디코딩될 수 있는 정보를 나타내는 필드들, 및 몇몇 실시예들에서 상기 명령 패킷과 연관된 데이터에 관련된 구성 정보를 포함할 수 있다. 상기 데이터에 관련된 구성 정보를 포함한 명령 패킷들의 예들이 이하에 보다 상세히 설명될 것이다.
상기 패킷 디코더(120)는 IO 인터페이스(110)로부터 패킷들을 수신하며 요청된 메모리 명령들을 실행하기 위해 내부 제어 및 타이밍 신호들을 생성하기 위해 상기 패킷을 디코딩한다. 예를 들면, 도 1의 실시예에서, 패킷 디코더(120)는 명령, 어드레스, 피연산자 데이터, 마스크 정보, 길이 정보, 및 데이터 유닛 크기 정보를 나타내는 내부 신호들을 생성하기 위해 패킷을 디코딩한다. 어드레스 정보는 명령의 실행 동안 액세스될 수 있는 메모리 위치들을 식별하기 위해 데이터를 저장하도록 구성되는 메모리 저장소(130)에 제공된다. 상기 메모리 저장소(130)는 다양한 상이한 기술들, 예를 들면, 동적 랜덤 액세스 메모리 셀들, 정적 랜덤 액세스 메모리 셀들, 뿐만 아니라 비-휘발성 메모리 셀들과 같은 메모리 셀 기술들, 및 자기 드라이브 미디어와 같은 디스크 기술들을 사용하여 구현될 수 있다.
상기 메모리(100)는 판독 및 기록 동작들과 같은 메모리 동작들, 뿐만 아니라 원자 메모리 동작의 일부일 수 있는 다른 동작들을 수행하는 동작 로직(140)을 더 포함한다. 상기 동작 로직(140)은 패킷 디코더(120)에 의해 제공된 내부 제어 및 타이밍 신호들(예를 들면, 명령, 어드레스, 피연산자 데이터, 및 마스크, 데이터 길이, 및 데이터 유닛 크기 정보)에 의해 제어된다. 이하에 보다 상세히 설명될 바와 같이, 동작 로직(140)의 제어는 메모리 패킷에 수신된 정보에 적어도 부분적으로 기초한다. 몇몇 실시예들에서, 상기 동작 로직(140)은 다양한 동작들, 예를 들면, 피연산자 데이터에 대한 로직 동작들, 산술 동작들, 비교 동작들을 수행한다. 상기 피연산자 데이터는 별개의 신호들에서의 제어, 기능 및 데이터와 또는 명령 패킷과 연관된 메모리(100)에 제공된 데이터; 명령 패킷에서의 명령에 응답하여 검색된 메모리 저장소(130)에 저장된 메모리 데이터; 또는 그것의 조합들일 수 있다. 데이터가 명령 패킷에 응답하여 리턴될 경우에, 메모리(100)에서의 패킷 어셈블러(150)는 동작 로직(140)으로부터 데이터를 수신하며 예를 들면, 리턴 데이터 패킷에 IO 인터페이스(110)를 통해 제공될 데이터를 준비한다. 몇몇 실시예들에서, 데이터는 직접 리턴될 수 있다. 상기 데이터는 동작 로직(140)에 의해 수행된 동작들의 결과, 메모리 저장소(130)로부터 검색된 데이터, 또는 몇몇 다른 데이터일 수 있다.
본 발명의 몇몇 실시예들에서, 도 1에 예시된 블록들은 서로로부터 독립적으로 동작될 수 있는 복수의 메모리들을 나타내는 메모리 저장소와 통신하도록 결합되는 메모리 저장소 인터페이스 회로를 나타낸다. 예를 들면, 상기 메모리 저장소는 모두 블록들(110, 120, 130, 140, 150)과 통신하는 복수의 메모리 디바이스들을 적층시킴으로써 일 실시예에서 구현될 수 있다.
상기 메모리(100)는 예를 들면, 메모리 어드레스에 의해 식별된 바와 같이 메모리 저장소(130)로부터의 데이터를 판독하고 그것에 데이터를 기록하는 종래의 메모리 동작들을 수행할 수 있다. 상기 메모리(100)는 또한 원자 메모리 동작들을 수행하도록 동작가능하다. 이전에 논의된 바와 같이, 원자 메모리 동작들은 메모리 명령을 발행하는 엔티티에 의해 나눌 수 없게 보이는 메모리 동작들이지만, 여러 개의 내부 메모리 동작들, 예를 들면, 다수의 메모리 저장소 액세스 동작들을 포함한다. 비록 하나의 원자 메모리 명령이 메모리에 발행되지만, 상기 메모리는 요청된 메모리 동작을 완료하기 위해 내부적으로 여러 개의 내부 메모리 동작들을 수행한다. 예를 들면, IO 인터페이스(110)는 명령 패킷들을 수신하며 패킷 디코더(120)는 원자 메모리 동작에 대한 메모리 명령을 디코딩한다. 이에 대응하여, 패킷 디코더(120)는 복수의 내부 메모리 동작들을 관리하기 위해 내부 제어 및 타이밍 신호들(예를 들면, 명령, 어드레스, 피연산자 데이터, 및 마스크, 데이터 길이, 및 데이터 유닛 크기 정보를 나타내는 신호들)을 생성한다.
원자 메모리 동작의 일 예는 메모리 위치로부터 데이터를 판독하는 것, 상기 메모리에 제공된 피연산자 및 상기 판독된 데이터를 갖고 산술 동작을 수행하는 것, 및 데이터가 초기에 판독되었던 메모리 위치에 결과를 다시 기록하는 것을 포함하는 메모리 동작이다. 본 발명의 몇몇 실시예들에서, 원자 메모리 동작은 2개의 버전들의 동작들을 가지며: 하나의 버전은 요청된 메모리 동작을 수행하고 원래의 메모리 위치에 결과를 다시 기록하는 것이며 또 다른 버전은 요청된 메모리 동작을 수행하고, 원래의 메모리 위치에 결과를 다시 기록하는 것뿐 아니라, 결과가 메모리로부터의 출력으로서 제공되는 것이다. 원자 메모리 동작들의 다른 예들이 이하에 설명될 것이다.
도 2는 본 발명의 일 실시예에 따른 명령 패킷(200)의 다양한 부분들을 도시한다. 패킷(200)의 명령부는 명령 필드(210)를 포함할 수 있지만, 패킷(200)의 구성부는 예를 들면, 데이터 길이 필드(220), 데이터 유닛 크기 필드(230) 및/또는 마스크 필드(240)를 포함할 수 있다. 상기 명령 패킷(200)은 이전에 논의된 바와 같이, 수행될 메모리 명령을 요청하기 위해, 메모리, 예를 들면, 도 1의 메모리(100)에 제공될 수 있다. 상기 명령 패킷(200)은 구체적으로 도 2에 도시된 것들 외에, 잘 알려지거나 또는 나중에 개발되는 다른 부분을 포함할 수 있다. 그러나 도 2에 구체적으로 식별된 필드들은 여기에 상세히 설명될 것이다. 필드들 및 필드 크기들의 특정 예들이 이하에 설명되지만, 본 발명은 이에 제한되지 않으며, 예를 들면, 본 발명의 범위로부터 벗어나지 않고 필드 크기들을 가변적일 수 있고 더 크거나 또는 더 작을 수 있다는 것이 이해될 것이다. 상기 명령 패킷(200)은 명령 필드(CMD)(210)를 포함한다. 상기 CMD 필드(210)는 동작을 수행하기 위해 명령 디코더에 의해 디코딩되는 명령을 제공하기 위해 사용된다. 도 2에 예시된 실시예에서, CMD 필드(210)는 길이가 [(N-M)+1] 비트들이다. 몇몇 실시예들에서, CMD 필드(210)는 6 비트 길이이다. 명령 패킷(200)은 상기 명령 패킷과 연관된 데이터에 대한 데이터의 총 길이(도시되지 않음)를 특정하기 위해 사용되는 데이터 길이 필드(LNG)(220)를 더 포함한다. 도 2에 예시된 특정 실시예에서, LNG 필드(210)는 길이가 [(P-O)+1] 비트들이다. 몇몇 실시예들에서, LNG 필드는 5 비트 길이이다. LNG 필드(210)에 의해 정의된 값은 데이터의 총 길이를 나타내는 코드에 대응할 수 있다. 예를 들면, 다음의 정의들은 본 발명의 일 실시예에서 사용될 수 있다:
LNG 총 피연산자 크기
0 0 바이트
1 8 바이트들
2 16 바이트들
따라서, LNG 필드(220)에서 1의 값은 패킷의 총 데이터 길이가 8 바이트 길이임을 정의한다. CMD 필드(210)에 의해 정의된 메모리 명령이 데이터를 요구하지 않을 때, 0의 값은 어떤 데이터도 패킷과 연관되지 않음을 표시하기 위해 LNG 필드(220)에 제공될 수 있다.
명령 패킷(200)은 데이터 유닛 크기 필드(SIZ)(230)를 더 포함한다. 도 2에 예시된 실시예에서, SIZ 필드(230)는 길이가 [(R-Q)+1] 비트이다. 본 발명의 일 실시예에서, SIZ 필드(230)는 3 비트 길이이다. SIZ 필드(230)에 포함된 값은 예를 들면, 바이트들의 수로 각각의 데이터 유닛의 크기를 정의한다. 예를 들면, 다음의 정의들은 본 발명의 일 실시예에 사용될 수 있다.
SIZ 데이터 유닛
1 1 바이트
2 2 바이트들
3 4 바이트들
4 8 바이트들
5 16 바이트들
따라서, SIZ 필드(230)에서 3의 값은 데이터 유닛 크기가 4 바이트 길이임을 정의한다. 즉, 패킷과 함께 포함된 데이터의 각각의 유닛은 길이가 4-바이트이다.
명령 패킷(200)은 마스크 필드(MSK)(240)를 더 포함한다. 도 2에 예시된 실시예에서, MSK 필드(240)는 길이가 [(T+S)+1] 비트들이다. 본 발명의 일 실시예에서, MSK 필드(240)는 길이가 16 비트들이다. MSK 필드(240)에서의 비트 조합은 패킷에서 데이터 유닛들 중 어떤 것이 마스킹되는지를 정의하기 위해 사용된다. 몇몇 실시예들에서, MSK 필드(240)의 비트 위치에서 "1"은 대응하는 데이터 유닛이 마스킹되어야 함을 표시하며 MSK 필드(240)의 비트 위치에서 "0"은 대응하는 데이터 유닛이 마스킹되지 않아야 함을 표시한다. 마스크 필드에서 "1"의 값은 명령 필드에 정의된 동작이 각각의 데이터 유닛 상에서 발생하는 것을 방지하며, "0" 값은 동작이 각각의 데이터 유닛 상에서 발생하도록 허용한다.
LNG, SIZ, 및 MSK 필드들(220, 230, 240)은 개별적으로 및 함께 CMD 필드(210)에 제공된 메모리 명령에 의해 동작되는 데이터에 관련된 구성 정보를 제공한다. 다음의 비-제한적인 예는 상기 필드들(220, 230, 240)의 정의들의 상호작용을 예시하기 위해 사용될 것이다.
LNG 필드(220)의 값이 16 바이트들의 총 데이터 길이를 정의하기 위해 2이며, SIZ 필드(230)의 값이 데이터 유닛의 크기가 1 바이트임을 정의하기 위해 1인 예시적인 명령 패킷에 대해 가정하자. 결과로서, 16 바이트의 총 데이터 길이 및 1 바이트의 데이터 유닛 크기를 갖고, 상기 예시적인 패킷은 16개의 데이터의 유닛들을 포함한다. MSK 필드(240)의 비트 조합은 (MSB) 1010 1010 1010 1010 (LSB)이고, 데이터로서 제공된 16개의 데이터 유닛들은 제 1 데이터 유닛이 마스킹되지 않고(제 1 마스크 비트는 "0"이다) 제 2 데이터 유닛이 마스킹(제 2 마스크 비트는 "1"이다)되도록 마스킹된다. 나머지 데이터 유닛들(즉, 바이트들 3 내지 16)의 모든 다른 데이터 유닛은 마스킹되며(즉, 바이트들 4, 6, 8, 10, 12, 14, 16) 상기 데이터 유닛들의 나머지는 마스킹되지 않는다(즉, 바이트들 3, 5, 7, 9, 11, 13, 15). 표시된 명령이 가산에 있다면, 각각의 마스킹되지 않은 데이터 바이트는 마스킹되지 않은 데이터 바이트들을 메모리에 다시 재기록하기 전에 메모리 데이터 바이트에 대응하는 데이터 아이템을 가산한다. 마스킹되는 메모리 데이터 바이트들은 수정되지 않는다.
또 다른 예에서, LSB로 시작하는 MASK 필드(240)의 비트들은 SIZ 필드(230)에 의해 정의된 바와 같이 각각의 데이터 유닛에 대응한다. 예를 들면, 16 바이트들의 총 데이터 길이를 정의하기 위해 LNG 필드(220)에 대해 2의 값을 갖는 예시적인 명령 패킷을 가정하며, SIZ 필드(230)에서의 값은 데이터 유닛 크기가 2 바이트들임을 정의하기 위해 2이다. 결과로서, 16 바이트들의 총 데이터 길이 및 2 바이트들의 데이터 유닛 크기를 갖는 예시적인 패킷은 8개의 데이터의 데이터 유닛들을 포함한다. MSK 필드(240)의 비트 조합이 (MSB) 1111 1111 0110 0110 (LSB)라고 가정하면, 데이터로서 제공된 8개의 데이터 유닛들은 제 1, 제 4, 제 5, 및 제 8 데이터 유닛들이 마스킹되지 않고 제 2, 제 3, 제 6, 및 제 7 데이터 유닛들이 마스킹되도록 마스킹된다. 상기 MSK 값의 최상위 8 비트들은 "1"이지만, 예시적인 패킷에 대한 데이터 유닛들의 수가 8이기 때문에, 단지 상기 MSK 값의 최하위 8 비트들만이 마스킹 동작을 위해 사용된다. 특정 예들이 설명되었지만, 상기 데이터에 관련된 구성 정보의 다른 배열들이 본 발명으로부터 벗어나지 않고 사용될 수 있다.
도 3은 본 발명의 실시예에 따른 패킷 디코더(300)를 도시한다. 패킷 디코더(300)는 도 1의 메모리(100)의 패킷 디코더(120)로서 사용될 수 있다. 패킷 디코더(300)는 특히, 메모리 명령 및 구성 정보, 예를 들면, 총 데이터 길이, 데이터 유닛 크기, 및 마스크 정보에 관련된 정보를 포함하는 명령 패킷을 IO 인터페이스(예로서, IO 인터페이스(110))로부터 수신한다. 몇몇 실시예들에서, 패킷 디코더(300)는 도 2의 명령 패킷(200)을 수신한다.
패킷 디코더(300)는 명령 패킷과 연관된 데이터에 관련된 정보, 예를 들면, 명령 패킷(200)의 LNG, SIZ, 및 MSK 필드들에 의해 제공된 정보를 수신한다. 패킷 디코더(300)는 다양한 필드들의 값들을 디코딩하며 패킷으로부터 명령, 어드레스, 피연산자 데이터 및 데이터 길이, 데이터 유닛 크기, 및 마스크 정보를 나타내는 내부 신호들을 생성한다. 이하에 보다 상세히 설명될 바와 같이, 디코딩된 정보는 명령 패킷과 연관된 데이터에 대한 동작들을 실행하기 위해 사용될 수 있다.
도 4는 본 발명의 일 실시예에 따른 동작 로직(400)을 예시한다. 동작 로직(400)은 도 1의 메모리(100)의 동작 로직(140)에 대해 사용될 수 있다. 동작 로직(400)은 메모리 저장소로부터 판독 데이터를 수신하고, 또한 명령 패킷과 연관된 어드레스, 데이터 길이, 및 데이터 유닛 크기 정보를 수신하도록 구성되는 제 1 선택기(410)를 포함한다. 제 1 선택기(410)는 동작 유닛(420) 및 제 2 선택기(430)에 판독된 데이터를 제공한다. 동작 유닛(420)은 상기 동작 유닛(420)에 제공될 어드레스, 데이터 길이, 및 데이터 유닛 크기 정보에 따라 상기 데이터를 구성한다. 예를 들면, 상기 정보에 의해 식별된 바와 같이 데이터의 선택 부분들은 동작 유닛(420)에 제공된다. 상기 구성된 데이터는 또한 제 2 선택기(430)에 또한 제공된다. 동작 유닛(420)은 또한 피연산자 데이터 및 상기 명령 패킷과 연관된 명령을 수신하고 상기 명령에 따라 상기 판독된 데이터 및/또는 피연산자 데이터에 대한 다양한 동작들을 수행한다. 예시적인 동작들이 이하에 보다 상세히 설명될 것이다.
동작 유닛(420)으로부터의 결과 데이터는 제 2 선택기(430)에 제공된다. 제 2 선택기는 요청 디바이스에 리턴할 및/또는 메모리 저장소에 저장할 데이터를 제공하기 위해 명령 패킷과 연관된 마스크, 데이터 길이, 및 데이터 유닛 크기 정보를 사용한다(이러한 데이터는 판독 데이터, 결과 데이터, 또는 앞서 말한 것 중 하나의 부분 또는 몇몇 조합일 수 있다). 데이터는 메모리 저장소에 제공될 수 있고 및/또는 IO 인터페이스(예로서, 도 1에서의 IO 인터페이스(110))를 통해 리턴되도록 준비될 수 있다. 몇몇 실시예들에서, 어떤 데이터가 제 2 선택기(430)에 의해 제공될지는 명령 패킷으로부터의 정보에 적어도 부분적으로 기초한다. 예를 들면, 마스크 비트가 "0"이면, 제 2 선택기(430)는 결과 데이터의 대응 부분을 제공하는 반면, "1"에 대해, 판독된 데이터의 대응 부분이 제공된다. 몇몇 실시예들에서, 상이한 데이터는 원자 동작이 어떻게 정의되는지에 적어도 부분적으로 기초하여 메모리 저장소에 저장되기보다는 요청 프로세서에 리턴된다.
도 4에 도시된 실시예에서, 동작 유닛(420)은 산술 동작들을 수행하도록 동작가능하다. 예를 들면, 본 발명의 일 실시예에서, 동작 유닛(420)은 두 개의 32-비트 값들에 대한 산술 동작들을 수행하도록 동작가능하다. 동작 유닛(420)은 데이터에 대한 로직 동작들을 수행하도록 동작가능할 수 있다. 예를 들면, 본 발명의 일 실시예에서, 동작 유닛(420)은 64-비트 값에 대한 로직 동작들을 수행하도록 동작가능하다.
본 발명의 일 실시예에서, 동작 유닛(420)은 다음의 산술 동작들을 수행하도록 동작가능하다.
명칭 기능
INC 1을 메모리 필드(들)에 가산
DEC 메모리 필드(들)로부터 1을 감산
ADD 피연산자(들)를 메모리 필드(들)에 가산
SUB 메모리 필드(들)로부터 피연산자(들)를 감산
본 발명의 일 실시예에서, 동작 유닛(420)은 다음의 로직 동작들을 수행하도록 동작가능하다.
명칭 기능
CB 비트들 삭제/AND
SB 비트들 설정/OR
TB 비트들 토글/XOR
동작 유닛은 또한 다른 로직 동작들을 수행할 수 있다. 예를 들면, 스왑(swap) 및 저장 동작들과 같은 비교 로직 동작들, 뿐만 아니라 다른 것들이 수행될 수 있다. 비교 로직 동작들은 2개의 값들을 비교하며 두 개의 값들 중 어떤 것이 더 크거나 또는 더 작은지(또는, 몇몇 실시예들에서, 2개의 값들이 동일한지)에 대해 결정한다. 비교 및 스왑 로직 동작들로 보다 크거나 또는 보다 작은 값이 저장되도록 선택될 수 있다.
이전에 설명된 바와 같이, 동작에서, 어드레스, LNG, 및 SIZ 값들은 동작 유닛(420)에 의한 동작을 위한 판독된 데이터를 구성하기 위해 제 1 선택기(410)에 의해 사용된다. 예를 들면, 동작 유닛(420)이 2개의 32-비트 데이터 아이템들까지 동작들을 수행할 수 있다고 가정한다면, 동작 유닛(420)은 4×1 바이트, 2×2 바이트, 또는 1×4 바이트 동작 로직으로서 동작들을 수행하기 위해 사용될 수 있다. 즉, 데이터 유닛 크기가 1 바이트들일 때, 2 세트들의 4×1 바이트 피연산자들은 동작 유닛(420)에 의해 동작될 수 있다. 또 다른 예에서, 데이터 유닛 크기가 4 바이트들일 때, 2 세트들의 1×4 바이트 데이터 피연산자들이 동작 유닛(420)에 의해 동작될 수 있다.
추가로 이전에 설명된 바와 같이, MSK 값은 패킷과 연관된 데이터의 데이터 유닛들을 마스킹하거나 또는 마스킹하지 않기 위해 사용될 수 있으며, 상기 데이터 유닛들은 SIZ 값에 의해 정의된다. 동작시, MSK 및 SIZ 값들은 제 2 선택기(430)에 의해 제공될 데이터의 특정 데이터 유닛들을 선택하기 위해 사용될 수 있다. 예를 들면, MSK 값을 적용할 때, 상기 데이터의 데이터 유닛들은 제 2 선택기(430)에 의해 선택적으로 제공될 수 있다. 이러한 동작은 이전에 설명된 예를 고려함으로써 예시될 수 있다. 이전에 설명된 예에서, 16 바이트들의 총 데이터 길이 및 1 바이트가 될 데이터 유닛의 크기는 16개의 데이터 유닛들의 데이터를 포함하는 연관된 데이터를 가진 예시적인 패킷을 초래한다고 가정된다. 예시적인 MSK 값은 제 1 및 모든 다른 바이트 길이 데이터 유닛을 마스킹하지 않지만, 제 2 및 모든 다른 바이트 길이 데이터 유닛을 마스킹한다. 특정 데이터 유닛들의 선택에 적용된 바와 같이, 16 바이트-길이 유닛들의 데이터, 제 1, 제 3, 제 5, 제 7, 제 9, 제 11, 제 13, 및 제 15 데이터 유닛들, 즉 가능한 16 바이트-길이 데이터 유닛들 중 8개는 제 2 선택기(430)에 의해 제공된다.
앞서 말한 것으로부터, 본 발명의 특정 실시예들이 예시를 위해 여기에 설명되지만, 다양한 변경들이 본 발명의 사상 및 범위로부터 벗어나지 않고 이루어질 수 있다는 것이 이해될 것이다. 따라서, 본 발명은 첨부된 청구항들에 의해서를 제외하고는 제한되지 않는다.

Claims (27)

  1. 메모리에 있어서,
    명령 패킷들을 수신하도록 구성된 명령 디코더 - 상기 명령 패킷들의 각각은 메모리 명령이 제공되는 적어도 하나의 메모리 명령부 및 명령 패킷과 연관된 데이터에 관련된 구성 정보가 제공되는 구성부를 갖고, 상기 명령 디코더는 또한 상기 메모리 명령에 적어도 부분적으로 기초하여 명령 제어 신호를 생성하도록 구성되며 또한 상기 구성 정보에 적어도 부분적으로 기초하여 구성 제어 신호를 생성하도록 구성됨 -; 및
    메모리 저장소로부터 상기 명령 패킷과 연관된 데이터를 수신하고, 상기 명령 제어 신호 및 상기 구성 제어 신호에 따라 상기 데이터에 대해 원자 동작을 수행하도록 구성된 동작 로직
    을 포함하고,
    상기 동작 로직은,
    상기 구성 제어 신호에 따라 상기 데이터를 구성하도록 구성된 제1 선택기;
    상기 명령 제어 신호에 따라 상기 구성된 데이터에 대해 원자 동작을 수행하여 결과물(resultant)을 생성하도록 구성된 동작 유닛; 및
    상기 제1 선택기로부터의 상기 구성된 데이터 및 상기 동작 유닛으로부터의 상기 결과물을 수신하고, 상기 구성 정보에 의해 마스킹되지 않은 상기 결과물의 부분들을 패킷 어셈블러로 포워딩하고, 상기 구성된 데이터의 마스킹된 부분들을 상기 패킷 어셈블러로 포워딩하도록 구성된 제2 선택기
    를 포함하는, 메모리.
  2. 제 1 항에 있어서,
    상기 명령 디코더는,
    상기 구성 정보로서 적어도 마스크 제어 정보를 포함하는 명령 패킷들을 수신하도록 구성된 패킷 디코더를 포함하는, 메모리.
  3. 제 2 항에 있어서,
    상기 패킷 디코더는 16 비트들의 마스크 제어 정보를 수신하도록 구성되는, 메모리.
  4. 제 2 항에 있어서,
    상기 마스크 제어 정보는 상기 원자 동작으로부터의 상기 결과물의 각각의 데이터 유닛에 대한 마스크를 선택적으로 인에이블하며 상기 동작 로직은 상기 마스크 제어 정보에 기초하여 상기 결과물의 데이터 유닛을 선택적으로 저장하도록 구성되는, 메모리.
  5. 제 1 항에 있어서,
    상기 명령 디코더는:
    적어도 각각의 명령 패킷과 연관된 상기 데이터에 대한 길이를 적어도 부분적으로 정의하는 데이터 길이 정보를 포함하는 명령 패킷들을 수신하도록 구성된 패킷 디코더를 포함하는, 메모리.
  6. 제 5 항에 있어서,
    상기 명령 디코더는 0 바이트, 8 바이트들, 또는 16 바이트들 중 하나로서 상기 데이터 길이를 정의하는 데이터 길이 정보를 수신하도록 구성되는, 메모리.
  7. 제 1 항에 있어서,
    상기 명령 디코더는:
    적어도 각각의 명령 패킷과 연관된 상기 데이터의 데이터 유닛의 크기를 적어도 부분적으로 정의하는 데이터 유닛 크기 정보를 포함하는 명령 패킷들을 수신하도록 구성된 패킷 디코더를 포함하는, 메모리.
  8. 제 7 항에 있어서,
    상기 명령 디코더는 바이트들로 중 하나로서 상기 데이터 유닛 크기를 정의하는 데이터 유닛 크기 정보를 수신하도록 구성되는, 메모리.
  9. 제 8 항에 있어서,
    상기 명령 디코더는 0 바이트, 1 바이트, 2 바이트들, 4 바이트들, 8 바이트들, 또는 16 바이트들 중에서 상기 데이터 유닛 크기들을 정의하는 데이터 유닛 크기 정보를 수신하도록 구성되는, 메모리.
  10. 제 1 항에 있어서,
    상기 명령 디코더는:
    원자 메모리 명령을 수신 및 디코딩하도록 구성되며 상기 원자 메모리 명령을 실행하기 위해 복수의 내부 동작들을 관리하도록 구성된 명령 디코더를 포함하는, 메모리.
  11. 제 1 항에 있어서,
    상기 동작 로직은 상기 명령 디코더에 의해 제공된 상기 구성 제어 신호에 적어도 부분적으로 기초한 마스크 제어 하에서 수신된 데이터에 대한 동작들을 수행하도록 구성된 동작 로직을 포함하는, 메모리.
  12. 제 11 항에 있어서,
    상기 구성 제어 신호는 구성 제어 신호들을 포함하며 상기 명령 디코더는 데이터 길이, 데이터 유닛 크기, 및 데이터 마스크 정보에 적어도 부분적으로 기초하여 상기 구성 제어 신호들을 생성하도록 구성되는, 메모리.
  13. 메모리에 있어서,
    명령에 따라 피연산자 데이터 및 판독 데이터에 대해 원자 동작을 수행하여 결과물을 제공하도록 구성된 동작 로직 - 상기 원자 동작은 상기 명령, 상기 피연산자 데이터, 데이터 크기 및 마스킹 구성을 포함하는 명령 및 구성 패킷에 따라 수행되고, 상기 동작 로직은, 상기 판독 데이터 및 구성 지시(configuration instruction)를 수신하고 상기 구성 지시에 따라 상기 판독 데이터를 구성하도록 구성된 데이터 구성 유닛; 상기 구성된 데이터, 상기 명령 및 상기 피연산자 데이터를 수신하고, 상기 명령에 따라 상기 구성된 데이터 및 상기 피연산자 데이터에 대해 상기 원자 동작을 수행하여 상기 결과물을 생성하도록 구성된 동작 유닛; 및 상기 구성 지시 및 상기 결과물을 수신하고, 상기 마스킹 구성에 기초하여 상기 결과물로부터 데이터 유닛들을 선택하도록 구성된 데이터 선택기를 포함하고, 상기 마스킹 구성은, 상기 결과물의 어느 데이터 유닛들이 메모리에 저장되는지 및 상기 결과물의 어느 데이터 유닛들이 패킷 어셈블러로 포워딩되는지를 판정함 -; 및
    상기 동작 로직에 결합되며 상기 명령을 수신하도록 구성되고 또한 상기 피연산자 데이터 및/또는 상기 결과물에 관련된 상기 구성 지시를 수신하도록 구성되는 명령 디코더 - 상기 명령 디코더는 원자 메모리 동작을 실행하기 위해 내부 제어 및 타이밍 신호들을 생성하도록 구성됨 -
    를 포함하는, 메모리.
  14. 제 13 항에 있어서,
    상기 명령 및 구성 정보는 패킷화된 포맷으로 상기 명령 디코더에 제공되는, 메모리.
  15. 제 13 항에 있어서,
    상기 동작 로직은 산술 동작을 수행하도록 구성된 동작 로직을 포함하는, 메모리.
  16. 제 15 항에 있어서,
    상기 동작 로직은, 다음의 산술 동작들:
    메모리 저장소로부터 판독된 데이터에 1을 가산하기;
    상기 메모리 저장소로부터 판독된 데이터로부터 1을 감산하기;
    상기 메모리 저장소로부터 판독된 상기 데이터에 상기 피연산자 데이터를 가산하기; 및
    상기 메모리 저장소로부터 판독된 데이터에 상기 피연산자 데이터를 감산하기, 중 적어도 하나를 수행하도록 구성되는, 메모리.
  17. 제 13 항에 있어서,
    상기 동작 로직은 로직 동작을 수행하도록 구성된 동작 로직을 포함하는, 메모리.
  18. 제 17 항에 있어서,
    상기 동작 로직은, 다음의 동작들:
    비트들을 삭제하기;
    비트들을 설정하기; 및
    비트들을 토글(toggle)하기, 중 적어도 하나를 수행하도록 구성되는, 메모리.
  19. 제 13 항에 있어서,
    상기 동작 로직은 2개의 16-바이트 데이터 값들까지 산술 동작들을 수행하도록 구성된 동작 로직을 포함하는, 메모리.
  20. 제 13 항에 있어서,
    데이터 유닛 크기 파라미터에 적어도 부분적으로 기초하여 데이터에 대한 동작들을 수행하도록 구성된 동작 로직을 포함하는, 메모리.
  21. 원자 메모리 동작을 수행하는 방법에 있어서,
    원자 메모리 동작에 대한 명령 패킷을 수신하는 단계 - 상기 명령 패킷은 명령 동작, 메모리 저장 어드레스 및 구성부를 포함함 -;
    상기 원자 메모리 동작과 연관되고 또한 상기 명령 패킷에 포함된 마스크 제어 정보를 수신하는 단계;
    상기 명령 패킷의 상기 구성부에 따라 상기 메모리 저장 어드레스와 연관된 데이터를 구성하는 단계;
    상기 명령 동작에 따라 상기 구성된 데이터에 대해 상기 원자 메모리 동작을 수행하여 결과를 생성하는 단계;
    상기 마스크 제어 정보에 기초하여 상기 결과의 부분들을 상기 메모리 저장 어드레스와 연관된 메모리 저장 위치에 저장하는 단계; 및
    상기 결과로부터 데이터 패킷을 준비하여 요청 프로세서에 제공하는 단계 - 상기 데이터 패킷은 상기 메모리 저장 어드레스에 저장된 것과는 상이한 결과의 부분들을 포함함 -
    를 포함하는, 원자 메모리 동작을 수행하는 방법.
  22. 제 21 항에 있어서,
    상기 원자 메모리 동작이 피연산자 데이터의 길이 및 상기 피연산자 데이터에서의 데이터의 유닛의 크기에 적어도 부분적으로 기초하여 수행되는 피연산자 데이터를 구성하는 단계를 더 포함하는, 원자 메모리 동작을 수행하는 방법.
  23. 제 22 항에 있어서,
    상기 명령과 연관된 상기 데이터 유닛의 상기 크기에 관련된 정보를 수신하는 단계를 더 포함하는, 원자 메모리 동작을 수행하는 방법.
  24. 제 21 항에 있어서,
    상기 원자 메모리 동작에 대한 상기 명령에 대한 데이터 유닛의 크기 및 피연산자 데이터의 길이를 제공하는 단계를 더 포함하는, 원자 메모리 동작을 수행하는 방법.
  25. 제 21 항에 있어서,
    동작들을 수행하는 것은 메모리로부터 검색된 데이터 및 피연산자 데이터에 대한 산술 동작을 수행하는 단계를 포함하는, 원자 메모리 동작을 수행하는 방법.
  26. 제 21 항에 있어서,
    동작들을 수행하는 것은 피연산자 데이터에 대한 로직 동작을 수행하는 단계를 포함하는, 원자 메모리 동작을 수행하는 방법.
  27. 제 21 항에 있어서,
    동작들을 수행하는 것은 피연산자 데이터에 대한 비교, 스왑(swap), 저장, 또는 그것의 조합들의 로직 동작들 중 적어도 하나를 수행하는 단계를 포함하는, 원자 메모리 동작을 수행하는 방법.
KR1020137012860A 2010-10-21 2011-09-19 구성 정보에 따라 원자 메모리 동작들을 수행하기 위한 방법들 및 메모리들 KR101513380B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US12/909,678 2010-10-21
US12/909,678 US10026458B2 (en) 2010-10-21 2010-10-21 Memories and methods for performing vector atomic memory operations with mask control and variable data length and data unit size
PCT/US2011/052093 WO2012054159A1 (en) 2010-10-21 2011-09-19 Memories and methods for performing atomic memory operations in accordance with configuration information

Publications (2)

Publication Number Publication Date
KR20130085042A KR20130085042A (ko) 2013-07-26
KR101513380B1 true KR101513380B1 (ko) 2015-04-17

Family

ID=45973961

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020137012860A KR101513380B1 (ko) 2010-10-21 2011-09-19 구성 정보에 따라 원자 메모리 동작들을 수행하기 위한 방법들 및 메모리들

Country Status (6)

Country Link
US (2) US10026458B2 (ko)
EP (1) EP2630642B1 (ko)
KR (1) KR101513380B1 (ko)
CN (1) CN103222003B (ko)
TW (1) TWI461910B (ko)
WO (1) WO2012054159A1 (ko)

Families Citing this family (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8291174B2 (en) 2007-08-15 2012-10-16 Micron Technology, Inc. Memory device and method having on-board address protection system for facilitating interface with multiple processors, and computer system using same
US8055852B2 (en) 2007-08-15 2011-11-08 Micron Technology, Inc. Memory device and method having on-board processing logic for facilitating interface with multiple processors, and computer system using same
US7822911B2 (en) * 2007-08-15 2010-10-26 Micron Technology, Inc. Memory device and method with on-board cache system for facilitating interface with multiple processors, and computer system using same
US9779057B2 (en) 2009-09-11 2017-10-03 Micron Technology, Inc. Autonomous memory architecture
US10026458B2 (en) 2010-10-21 2018-07-17 Micron Technology, Inc. Memories and methods for performing vector atomic memory operations with mask control and variable data length and data unit size
KR101975534B1 (ko) 2012-09-11 2019-05-07 삼성전자주식회사 연산기능을 갖는 반도체 메모리 장치
US11074169B2 (en) 2013-07-03 2021-07-27 Micron Technology, Inc. Programmed memory controlled data movement and timing within a main memory device
US9842128B2 (en) * 2013-08-01 2017-12-12 Sandisk Technologies Llc Systems and methods for atomic storage operations
US9779138B2 (en) 2013-08-13 2017-10-03 Micron Technology, Inc. Methods and systems for autonomous memory searching
US9519440B2 (en) 2013-09-10 2016-12-13 Qualcomm Incorporated Providing command queuing in embedded memories
US10003675B2 (en) * 2013-12-02 2018-06-19 Micron Technology, Inc. Packet processor receiving packets containing instructions, data, and starting location and generating packets containing instructions and data
US9710185B2 (en) * 2014-07-10 2017-07-18 Samsung Electronics Co., Ltd. Computing system with partial data computing and method of operation thereof
CN106886504B (zh) * 2017-04-05 2020-12-04 上海弘矽半导体有限公司 基于ahb总线的多核soc中实现原子操作系统及方法

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040193837A1 (en) * 2003-03-31 2004-09-30 Patrick Devaney CPU datapaths and local memory that executes either vector or superscalar instructions
US20090138680A1 (en) * 2007-11-28 2009-05-28 Johnson Timothy J Vector atomic memory operations

Family Cites Families (66)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5067071A (en) 1985-02-27 1991-11-19 Encore Computer Corporation Multiprocessor computer system employing a plurality of tightly coupled processors with interrupt vector bus
US4789925A (en) * 1985-07-31 1988-12-06 Unisys Corporation Vector data logical usage conflict detection
US4873630A (en) * 1985-07-31 1989-10-10 Unisys Corporation Scientific processor to support a host processor referencing common memory
US4787041A (en) 1985-08-01 1988-11-22 Honeywell Data control system for digital automatic flight control system channel with plural dissimilar data processing
US4796232A (en) 1987-10-20 1989-01-03 Contel Corporation Dual port memory controller
US4975878A (en) 1988-01-28 1990-12-04 National Semiconductor Programmable memory data protection scheme
US5420994A (en) 1990-08-06 1995-05-30 Ncr Corp. Method for reading a multiple byte data element in a memory system with at least one cache and a main memory
US5163139A (en) 1990-08-29 1992-11-10 Hitachi America, Ltd. Instruction preprocessor for conditionally combining short memory instructions into virtual long instructions
US5457482A (en) 1991-03-15 1995-10-10 Hewlett Packard Company Method and apparatus for utilizing off-screen memory as a simultaneously displayable channel
JPH06215160A (ja) * 1992-08-25 1994-08-05 Texas Instr Inc <Ti> データ処理方法および装置
JP3307473B2 (ja) 1992-09-09 2002-07-24 ソニー エレクトロニクス インコーポレイテッド 半導体メモリの試験回路
US5524225A (en) 1992-12-18 1996-06-04 Advanced Micro Devices Inc. Cache system and method for providing software controlled writeback
DE69519816T2 (de) 1994-05-03 2001-09-20 Hewlett Packard Co Anordnung mit Duplikat des Cache-Etikettenspeichers
US5488583A (en) 1994-09-22 1996-01-30 Micron Technology, Inc. Memory integrated circuits having on-chip topology logic driver, and methods for testing and producing such memory integrated circuits
FR2728363A1 (fr) 1994-12-20 1996-06-21 Sgs Thomson Microelectronics Dispositif de protection de l'acces a des mots memoires
US5682344A (en) 1995-09-11 1997-10-28 Micron Technology, Inc. Destructive read protection using address blocking technique
US5802541A (en) 1996-02-28 1998-09-01 Motorola, Inc. Method and apparatus in a data processing system for using chip selects to perform a memory management function
US5835925A (en) 1996-03-13 1998-11-10 Cray Research, Inc. Using external registers to extend memory reference capabilities of a microprocessor
JP3789173B2 (ja) 1996-07-22 2006-06-21 Necエレクトロニクス株式会社 半導体記憶装置及び半導体記憶装置のアクセス方法
US6092155A (en) 1997-07-10 2000-07-18 International Business Machines Corporation Cache coherent network adapter for scalable shared memory processing systems
US6026478A (en) * 1997-08-01 2000-02-15 Micron Technology, Inc. Split embedded DRAM processor
US6081876A (en) 1997-09-22 2000-06-27 Hewlett-Packard Company Memory error containment in network cache environment via restricted access
US6049487A (en) 1998-03-16 2000-04-11 Actel Corporation Embedded static random access memory for field programmable gate array
JP2000132969A (ja) 1998-10-28 2000-05-12 Nec Corp ダイナミックメモリ装置
US6378049B1 (en) 1998-11-16 2002-04-23 Infineon Technologies A.G. Universal memory controller
US6526481B1 (en) 1998-12-17 2003-02-25 Massachusetts Institute Of Technology Adaptive cache coherence protocols
JP3807582B2 (ja) 1999-02-18 2006-08-09 株式会社ルネサステクノロジ 情報処理装置及び半導体装置
EP1050884A1 (en) 1999-05-03 2000-11-08 STMicroelectronics SA A multiport memory system with write conflict detection
US6321314B1 (en) 1999-06-09 2001-11-20 Ati International S.R.L. Method and apparatus for restricting memory access
US6563754B1 (en) 2001-02-08 2003-05-13 Integrated Device Technology, Inc. DRAM circuit with separate refresh memory
US6775750B2 (en) 2001-06-29 2004-08-10 Texas Instruments Incorporated System protection map
US7032082B1 (en) 2001-08-31 2006-04-18 Juniper Networks, Inc. Centralized memory allocation with write pointer drift correction
US7085955B2 (en) 2001-09-14 2006-08-01 Hewlett-Packard Development Company, L.P. Checkpointing with a write back controller
US6757784B2 (en) 2001-09-28 2004-06-29 Intel Corporation Hiding refresh of memory and refresh-hidden memory
US7174429B2 (en) 2001-12-28 2007-02-06 Intel Corporation Method for extending the local memory address space of a processor
US7546446B2 (en) 2002-03-08 2009-06-09 Ip-First, Llc Selective interrupt suppression
KR100543447B1 (ko) 2003-04-03 2006-01-23 삼성전자주식회사 에러정정기능을 가진 플래쉬메모리장치
JP4563715B2 (ja) 2003-04-29 2010-10-13 三星電子株式会社 パーシャルコピーバック動作モードを有するフラッシュメモリ装置
US7320100B2 (en) 2003-05-20 2008-01-15 Cray Inc. Apparatus and method for memory with bit swapping on the fly and testing
US6868019B2 (en) 2003-07-02 2005-03-15 Micron Technology, Inc. Reduced power redundancy address decoder and comparison circuit
US6903361B2 (en) 2003-09-17 2005-06-07 Micron Technology, Inc. Non-volatile memory structure
US7281079B2 (en) 2003-12-31 2007-10-09 Intel Corporation Method and apparatus to counter mismatched burst lengths
US7082075B2 (en) 2004-03-18 2006-07-25 Micron Technology, Inc. Memory device and method having banks of different sizes
US7437541B2 (en) * 2004-07-08 2008-10-14 International Business Machiens Corporation Atomically updating 64 bit fields in the 32 bit AIX kernel
GB2417577A (en) 2004-08-25 2006-03-01 Imagination Tech Ltd Memory controller with randomised bank selection
JP2006190402A (ja) 2005-01-07 2006-07-20 Renesas Technology Corp 半導体装置
US8276185B2 (en) 2005-01-19 2012-09-25 Micron Technology, Inc. Enhanced security memory access method and architecture
CN100403803C (zh) 2005-01-19 2008-07-16 威盛电子股份有限公司 具有快取的阶层式搜寻方法与系统
US7209405B2 (en) 2005-02-23 2007-04-24 Micron Technology, Inc. Memory device and method having multiple internal data buses and memory bank interleaving
US7397700B2 (en) 2005-04-11 2008-07-08 Stmicroelectronics S.R.L. Non-volatile memory electronic device with NAND structure being monolithically integrated on semiconductor
JP4989872B2 (ja) 2005-10-13 2012-08-01 ルネサスエレクトロニクス株式会社 半導体記憶装置および演算処理装置
WO2007059800A1 (en) 2005-11-22 2007-05-31 Freescale Semiconductor, Inc. A method for processing atm cells and a device having atm cell processing capabilites
US7509463B2 (en) 2005-12-01 2009-03-24 Sony Computer Entertainment, Inc. Cell processor atomic compare and swap using dedicated synergistic processor element
US20070150671A1 (en) * 2005-12-23 2007-06-28 Boston Circuits, Inc. Supporting macro memory instructions
KR100782594B1 (ko) 2006-07-14 2007-12-06 엠텍비젼 주식회사 데이터 처리 기능을 구비한 메모리 장치
US9141572B2 (en) * 2006-12-15 2015-09-22 Microchip Technology Incorporated Direct memory access controller
US7574576B2 (en) 2006-12-22 2009-08-11 Spansion Llc Semiconductor device and method of controlling the same
US20080183984A1 (en) 2007-01-31 2008-07-31 Dale Beucler Memory system with read-modify-write
US7797503B2 (en) 2007-06-26 2010-09-14 International Business Machines Corporation Configurable memory system and method for providing atomic counting operations in a memory device
US8055852B2 (en) 2007-08-15 2011-11-08 Micron Technology, Inc. Memory device and method having on-board processing logic for facilitating interface with multiple processors, and computer system using same
US7822911B2 (en) 2007-08-15 2010-10-26 Micron Technology, Inc. Memory device and method with on-board cache system for facilitating interface with multiple processors, and computer system using same
US8291174B2 (en) 2007-08-15 2012-10-16 Micron Technology, Inc. Memory device and method having on-board address protection system for facilitating interface with multiple processors, and computer system using same
US8583896B2 (en) * 2009-11-13 2013-11-12 Nec Laboratories America, Inc. Massively parallel processing core with plural chains of processing elements and respective smart memory storing select data received from each chain
US9342471B2 (en) 2010-01-29 2016-05-17 Mosys, Inc. High utilization multi-partitioned serial memory
US8504777B2 (en) * 2010-09-21 2013-08-06 Freescale Semiconductor, Inc. Data processor for processing decorated instructions with cache bypass
US10026458B2 (en) 2010-10-21 2018-07-17 Micron Technology, Inc. Memories and methods for performing vector atomic memory operations with mask control and variable data length and data unit size

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040193837A1 (en) * 2003-03-31 2004-09-30 Patrick Devaney CPU datapaths and local memory that executes either vector or superscalar instructions
US20090138680A1 (en) * 2007-11-28 2009-05-28 Johnson Timothy J Vector atomic memory operations

Also Published As

Publication number Publication date
KR20130085042A (ko) 2013-07-26
US20180342270A1 (en) 2018-11-29
EP2630642A1 (en) 2013-08-28
TWI461910B (zh) 2014-11-21
US20120102275A1 (en) 2012-04-26
US10026458B2 (en) 2018-07-17
TW201232254A (en) 2012-08-01
EP2630642B1 (en) 2019-11-06
CN103222003B (zh) 2017-07-18
WO2012054159A1 (en) 2012-04-26
EP2630642A4 (en) 2014-06-04
CN103222003A (zh) 2013-07-24
US11183225B2 (en) 2021-11-23

Similar Documents

Publication Publication Date Title
KR101513380B1 (ko) 구성 정보에 따라 원자 메모리 동작들을 수행하기 위한 방법들 및 메모리들
TWI463332B (zh) 在單一指令多資料之資料處理器中提供擴充尋址模式
TWI808869B (zh) 硬體處理器及處理器
US20140281209A1 (en) Hardware-based pre-page walk virtual address transformation
CN105993000B (zh) 用于浮点寄存器混叠的处理器和方法
KR20140118924A (ko) 마스킹된 전체 레지스터 액세스들을 이용한 부분적 레지스터 액세스들을 구현하기 위한 프로세서들, 방법들 및 시스템들
KR20190108109A (ko) 캐시 라인 로킹을 이용한 원자적 프리미트브들의 구현
US9898293B2 (en) Decoding instructions that are modified by one or more other instructions
US3701977A (en) General purpose digital computer
US9639362B2 (en) Integrated circuit device and methods of performing bit manipulation therefor
JP7245842B2 (ja) デバイスをデバッグするときにメタデータにアクセスするための装置及び方法
US7124261B2 (en) Access to bit values within data words stored in a memory
US9021238B2 (en) System for accessing a register file using an address retrieved from the register file
US8572147B2 (en) Method for implementing a bit-reversed increment in a data processing system
US6427200B1 (en) Multiple changeable addressing mapping circuit
WO2020172988A1 (en) Shader alu outlet control
CN112579481B (zh) 数据处理方法、数据处理装置和计算装置
CN105404588B (zh) 处理器和其中生成数据存储操作的一个或多个地址的方法
JP2008065370A (ja) スーパースカラープロセッサ及びキャッシュメモリのアクセス方法
CN116266121A (zh) 用于实现使用窄寄存器的能力的电路和方法
WO2009136402A2 (en) Register file system and method thereof for enabling a substantially direct memory access
JPH04241650A (ja) 1ビット書込み処理方式
JP2010020450A (ja) 信号処理プロセッサ及び半導体装置
JP2010044487A (ja) 信号処理プロセッサ及び半導体装置

Legal Events

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

Payment date: 20180329

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20190411

Year of fee payment: 5