KR101341286B1 - 멀티-포트 메모리 디바이스의 포트간 통신 - Google Patents

멀티-포트 메모리 디바이스의 포트간 통신 Download PDF

Info

Publication number
KR101341286B1
KR101341286B1 KR1020087026426A KR20087026426A KR101341286B1 KR 101341286 B1 KR101341286 B1 KR 101341286B1 KR 1020087026426 A KR1020087026426 A KR 1020087026426A KR 20087026426 A KR20087026426 A KR 20087026426A KR 101341286 B1 KR101341286 B1 KR 101341286B1
Authority
KR
South Korea
Prior art keywords
port
interrupt
message
component
interrupt register
Prior art date
Application number
KR1020087026426A
Other languages
English (en)
Other versions
KR20080104388A (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 KR20080104388A publication Critical patent/KR20080104388A/ko
Application granted granted Critical
Publication of KR101341286B1 publication Critical patent/KR101341286B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C8/00Arrangements for selecting an address in a digital store
    • G11C8/16Multiple access memory array, e.g. addressing one storage element via at least two independent addressing line groups
    • 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 
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/40Bus structure
    • G06F13/4004Coupling between buses
    • G06F13/4027Coupling between buses using bus bridges
    • G06F13/405Coupling between buses using bus bridges where the bridge performs a synchronising function
    • G06F13/4054Coupling between buses using bus bridges where the bridge performs a synchronising function where the function is bus cycle extension, e.g. to meet the timing requirements of the target bus
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/42Bus transfer protocol, e.g. handshake; Synchronisation
    • G06F13/4204Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus
    • G06F13/4234Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus being a memory bus
    • G06F13/4243Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus being a memory bus with synchronous protocol
    • 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/1075Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers for multiport memories each having random access ports and serial ports, e.g. video RAM
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C2207/00Indexing scheme relating to arrangements for writing information into, or reading information out from, a digital store
    • G11C2207/10Aspects relating to interfaces of memory device to external buses
    • G11C2207/108Wide data ports

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Microelectronics & Electronic Packaging (AREA)
  • Multimedia (AREA)
  • Computer Hardware Design (AREA)
  • Multi Processors (AREA)
  • Static Random-Access Memory (AREA)
  • Dram (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Stored Programmes (AREA)
  • Computer And Data Communications (AREA)

Abstract

멀티-포트 메모리 디바이스를 사용하여 포트간 통신을 위한 방법 및 시스템이 제공된다. 메모리 디바이스는 인터럽트 레지스터, 인터럽트 신호 인터페이스(예를 들어, 전용 핀), 인터럽트 마스크, 및 각각의 포트와 연관된 하나 이상의 메시지 버퍼들을 포함한다. 메모리 디바이스의 제1 포트에 연결된 제1 컴포넌트가 메모리 디바이스의 제2 포트에 연결된 제2 컴포넌트와 통신을 원하는 경우, 제1 컴포넌트는 제2 포트와 연관된 메시지 버퍼에 메시지를 기입한다. 제2 포트의 입력 레지스터의 인터럽트는 제2 포트와 연결된 제2 컴포넌트에 새로운 메시지가 사용가능함을 통지하도록 설정된다. 인터럽트를 수신하면, 제2 컴포넌트는 인터럽트 레지스터를 판독하여 인터럽트의 성질을 판정한다. 다음으로 제2 컴포넌트는 메시지 버퍼로부터 메시지를 판독한다.
Figure R1020087026426
메모리 공유, 컴퓨터-판독가능 매체, 정보 공유 시스템

Description

멀티-포트 메모리 디바이스의 포트간 통신{INTER-PORT COMMUNICATION IN A MULTI-PORT MEMORY DEVICE}
본 발명은, 2006년 3월 30일에 출원된, 발명의 명칭이 "INTEGRATED MULTI-PORT SERIAL MEMORY AND INTER-PROCESSOR COMMUNICATION"인, 미국 가특허출원 제60/788,401호(대리인 도켓 번호 제59472-8826.US00호)의 우선권을 주장하며, 본 명세서에 참조로서 포함된다.
컴퓨터 하드웨어에서, 공유 메모리는 일반적으로 수개의 상이한 CPU(central processing unit)들 또는 다중-프로세서 컴퓨터 시스템의 그외의 컴포넌트들에 의해 액세스될 수 있는 RAM(random access memory)의 큰 블록을 지칭한다. 예를 들어, 휴대폰들은 종종 기저대역(baseband) 프로세서, 미디어 프로세서, 및 LCD 제어기를 포함하고, 이들 각각은 공통의 메모리 영역을 공유할 수 있다. 다중-프로세서 시스템의 컴포넌트들은 종종 정보를 공유하는 것을 필요로한다. 예를 들어, 이동 전화기의 미디어 프로세서는 통화 연결을 위해 기저대역 프로세서와 상호작용하는 동작 시스템을 구동할 수 있다. 다른 예시로서, 미디어 프로세서는 디스플레이될 화상을 기술하는 LCD 제어기의 프레임 버퍼(frame buffer)로 정보를 기입할 수 있다. 컴포넌트들 사이의 정보 공유는 일반적으로 다수의 상이한 제어 및 데이터 인터페이스들을 필요로한다. 제어 및 데이터 인터페이스들은 각각의 컴포넌트들 사이 및 컴포넌트들과 공유 메모리 사이에 정의될 수 있다. 또한, 공유 메모리의 액세스들을 조정하기 위해 각각의 컴포넌트 사이에 공유 메모리를 사용하는 추가의 인터페이스들이 존재할 수 있다.
멀티-프로세서 아키텍쳐의 결과로 다양한 인터페이스들을 핸들링(handling)하기 때문에 각각의 컴포넌트 내의 복잡도가 증가하고, 컴포넌트들 사이에 필요한 통신을 지원하는데 필요한 상호접속부(interconnect)들의 갯수가 증가한다. 상호접속부들은 고가이고 사용할 각각의 컴포넌트에 대하여 여분의 작업을 필요로한다. 종종 바람직한 컴포넌트들은 그 컴포넌트들이 다른 필요한 컴포넌트와 정확하게 상호동작하지 않기 때문에 사용될 수 없다. 예를 들어, 특정한 LCD 제어기는 특정한 미디어 프로세서가 필요로하는 속도로 통신할 수 없고, 더 고가의 LCD 제어기가 선택되어야 한다. 인터페이스 요구물들은 전체 시스템의 복잡도를 증가시킬 뿐만 아니라, 비용도 증가시킨다. 따라서, 시스템의 컴포넌트들에 의해 관리되어야하는 통신 오버헤드(overhead)를 최소화하는 방법으로 멀티 프로세서 시스템 내에서 통신하는 향상된 방법에 대한 필요성이 존재한다.
도 1은 통신 채널로서 사용되는 멀티-포트 메모리 디바이스의 아키텍쳐를 도시하는 블록도이다.
도 2는 멀티-포트 메모리 디바이스의 레지스터 파일의 구성을 도시하는 블록도이다.
도 3은 통신 채널로서 멀티-포트 메모리 디바이스를 사용하는 것이 컴포넌트들 사이의 상호접속부들을 어떻게 간략화하는지를 도시하는 블록도이다.
도 4는 컴포넌트들 사이에 통신 메시지들을 전송하는 경우 멀티-포트 메모리 디바이스의 프로세스를 도시하는 흐름도이다.
멀티-포트 메모리 디바이스를 사용하는 포트간 통신을 위한 시스템 및 방법이 제공된다. 멀티-포트 메모리 디바이스는 멀티프로세서 시스템의 컴포넌트들이 접속할 수 있는 다중 포트들을 포함한다. 각각의 포트들에 접속된 컴포넌트들 사이의 메시지들의 통신은 공유 메모리 내의 레지스터 파일의 사용에 의해 인에이블된다. 멀티-포트 메모리 디바이스의 각각의 포트에 있어서, 메모리 디바이스는 인터럽트 레지스터, 인터럽트 신호 인터페이스(예를 들어, 전용 핀), 인터럽트 마스크, 및 하나 이상의 메시지 버퍼들을 포함한다. 메모리 디바이스의 제1 포트에 연결된 제1 컴포넌트가 메모리 디바이스의 제2 포트에 연결된 제2 컴포넌트와 통신을 원하는 경우, 제1 컴포넌트는 제2 포트와 연관된 메시지 버퍼에 메시지를 기입한다. 제2 포트의 입력 레지스터의 인터럽트는 제2 포트에 연결된 제2 컴포넌트에 새로운 메시지가 사용가능하다는 것을 통지하도록 설정된다. 인터럽트를 수신하면, 제2 컴포넌트는 인터럽트의 성질(nature)을 판정하기 위해 인터럽트 레지스터를 판독한다. 다음으로, 제2 컴포넌트는 메시지 버퍼로부터 메시지를 판독한다. 제2 컴포넌트는, 제1 컴포넌트에 제2 컴포넌트가 메시지의 처리를 완료하였다는 신호를 보내기 위해 제1 포트와 연관된 인터럽트 레지스터에 인터럽트를 설정할 수 있다. 따라서, 멀티-포트 메모리 디바이스는 메모리를 공유하는 컴포넌트들이 외부의 통신 하드웨어 또는 공유 메모리에 대한 기입 및 판독 외의 패러다임(paradigm)들의 추가의 이해 없이 통신하는 것을 가능하게 한다.
통신 채널로서 멀티-포트 메모리 디바이스를 사용하는 다양한 실시예들이 이하에 기술될 것이다. 이하의 설명은 이러한 예시들의 가능한 설명 및 완전한 이해를 위해 특정한 세부사항(detail)들을 제공한다. 그러나, 본 기술분야의 당업자들은 기술이 다수의 이러한 세부사항들 없이 구현될 수 있다는 것을 이해할 것이다. 또한, 다양한 실시예들의 관련 기술을 불필요하게 불명확하게 하는 것을 피하기 위해, 일부의 잘 알려진 구조들 또는 기능들은 도시되지 않거나 또는 상세하게 기술되지 않을 수 있다. 이하의 설명에 사용된 용어는, 그것이 기술의 특정한 구체적인 예시들의 상세한 설명과 함께 사용되지만, 가장 광범위하고 합리적인 방법으로 해석되도록 의도된다. 어떤 용어들은 이하에서 강조될 수 있지만, 임의의 제한적인 방법으로 해석되도록 의도된 임의의 용어는 상세한 설명의 부분에서와 같이 명백하고 구체적으로 정의될 것이다.
Ⅰ. 시스템 아키텍쳐
도 1은 멀티-프로세서 환경에서 멀티-포트 메모리 디바이스 아키텍쳐를 다수의 컴포넌트들에 연결된 것으로 도시하는 블록도이다. 멀티-포트 메모리 디바이스(100)는 메모리(110)의 하나 이상의 뱅크들, 두개 이상의 포트들(120), 및 레지스터 파일(130)을 포함한다. 메모리, 포트들, 및 레지스터 파일은 메모리의 임의의 뱅크 또는 레지스터 파일이 임의의 포트에 의해 액세스되도록 인에이블하는 버 스(140)에 의해 모두 연결된다. 메모리(110)의 하나 이상의 뱅크들은 포트들을 통해 액세스될 수 있는 데이터를 저장한다. 메모리(110)의 뱅크들은 DRAM(dynamic random access memory) 또는 그외의 일반적인 유형의 메모리 디바이스들로 구성될 수 있다. 두개 이상의 포트들(120) 각각은 대응하는 포트 마스터(port master)(PM)(150)에 접속될 수 있다. 포트 마스터들(150)은, 기저대역 프로세서, 미디어 프로세서, 또는 LCD 제어기 등의 공유 메모리를 사용하는 임의의 유형의 시스템 컴포넌트일 수 있다. 본 명세서에 추가로 상세하게 기술될 바와 같이, 멀티-포트 메모리 디바이스는 멀티-프로세서 환경에서 컴포넌트들 사이에 데이터 통신을 인에이블하는 통신 채널로서 사용될 수 있다.
도 2는 일부의 실시예들에서 레지스터 파일(130)의 구성을 도시하는 블록도이다. 레지스터 파일은 특정한 포트에 대한 통신 유무를 표시하는 공통 신호 인터페이스로서 동작함으로써 멀티-프로세서 환경에서 컴포넌트들 사이의 통신을 인에이블한다. 멀티-포트 메모리의 각각의 포트에 있어서, 레지스터 파일(130)은 인터럽트 레지스터(210), 인터럽트 핀(220)과 같은 인터럽트 신호 인터페이스, 인터럽트 마스크 버퍼(230), 및 하나 이상의 메시지 버퍼들(240a, 240b,...240n)을 포함한다. 인터럽트 레지스터(210)는 멀티-포트 메모리 내의 특정한 포트에 대하여 발생할 수 있는 다양한 유형의 이벤트들에 신호를 보내는 다수의 비트들을 포함한다. 인터럽트 레지스터의 각각의 비트들은 상이한 이벤트와 연관될 수 있다. 이벤트들은 주문형(application-specific)이고 멀티-포트 메모리의 상이한 사용자들에 의해 상이하게 정의될 수 있다. 애플리케이션은 포트에 대하여 새로운 메시지가 사용가 능하다는 것을 신호 보내기 위해 멀티-포트 메모리의 그외의 포트들 각각에 대하여 각각의 포트의 인터럽트 레지스터 내에 비트를 예약할 수 있다. 애플리케이션은 또한 메시지의 처리가 완료되었다는 것을 신호 보내기 위해 그외의 포트들 각각에 대하여 각각의 포트의 인터럽트 레지스터 내에 비트를 예약할 수 있다. 예를 들어, 도 2에 묘사된 레지스터 파일의 실시예는 세개의 포트들, 포트 A, 포트 B, 및 포트 C로 구성된다. 각각의 포트는 네개의 비트들을 갖는 연관된 인터럽트 레지스터(210)를 갖는다(도면에는 포트 A 인터럽트 레지스터 및 포트 A 버퍼들만이 묘사되어 있음). 인터럽트 레지스터의 하나의 비트는 새로운 메시지를 나타내는데 사용되고, 하나의 비트는 두개의 그외의 포트들 각각에 대한 메시지 응답을 나타내는데 사용된다. 따라서 포트 A에 대한 인터럽트 레지스터 비트들은 포트 B로부터의 새로운 메시지, 포트 B로부터의 응답, 포트 C로부터의 새로운 메시지, 및 포트 C로부터의 응답을 나타낸다. "1"의 값은 인터럽트가 설정되었음을 나타낸다. 예를 들어, 도 2에서, 포트 C로부터의 새로운 메시지를 나타내는 비트가 설정된다. 메시지 버퍼들이 멀티-포트 메모리 디바이스의 메일박스(mailbox)들이면, 인터럽트 레지스터는 새로운 메일이 사용가능한 경우에 신호를 보내는 메일박스 측 상의 적색 플래그(red flag)와 유사하다. 레지스터 파일에 적절한 비트를 설정하거나 또는 클리어(clear)함으로써, 그 포트의 통신 상태는 시스템 컴포넌트들에 전송될 수 있다.
일부의 실시예들에서, 멀티-포트 메모리 디바이스는 고속 SRAM(static random access memory)에 인터럽트 레지스터들(210)을 저장한다. 인터럽트 레지스 터의 비트들은, 공간을 절약하고 비트들을 설정하고 테스트하는 속도를 증가시키기 위해 표준 플립-플롭(flip-flop)들이 될 수 있다. 대안적으로 또는 추가로, 멀티-포트 메모리 디바이스는 공유 메모리 자체의 특정한 위치에서 인터럽트 레지스터들을 저장할 수 있다. 예를 들어, 공유 메모리의 상위 바이트들은 인터럽트 레지스터들을 저장하기 위해 애플리케이션에 의해 예약될 수 있다. 인터럽트 레지스터는 포트들 사이에 할당되는 단일 레지스터(예를 들어, 16비트) 또는 상이한 포트와 각각 연관되는 복수의 레지스터들일 수 있다.
일부의 실시예들에서, 멀티-포트 메모리는 디버깅(debugging) 및 테스트 목적으로 인터럽트 레지스터의 하나 이상의 비트들을 예약한다. 예를 들어, 16비트 인터럽트 레지스터를 갖는 3포트 디바이스에서, 멀티-포트 메모리는, 특정한 포트에 부착된 컴포넌트에게 인터럽트가 클리어될 때까지 추가의 프로세스를 중지하도록 지시하는 중지(halt) 명령에 대하여 15비트를 예약할 수 있다. 브레이크포인트(breakpoint)들은, 브레이크포인트를 적용하는 메모리 어드레스가 메시지 버퍼에 저장되었다는 것을 신호 보내기 위해 인터럽트 레지스터의 비트를 사용하여 구현될 수 있다. 예를 들어, 디버깅 애플리케이션은 메모리 어드레스 0x0100에서 브레이크포인트를 설정하고, 각각의 포트의 인터럽트 레지스터에 브레이크포인트 비트를 설정할 수 있다.
포트의 인터럽트 레지스터 비트들의 상태는 그 포트와 연관된 인터럽트 핀(220)을 통해 시스템 컴포넌트로 통신된다. 인터럽트 핀(220)에서의 인터럽트 신호의 존재는 부착된 컴포넌트에 새로운 인터럽트가 설정되었음을 전송한다. 인 터럽트 신호는 로직 게이트(250)를 사용하여(일부의 실시예들에서 이하에 기술될 마스킹 기능이 사용가능함) 인터럽트 레지스터 비트들의 값들을 논리적으로 "논리합(ORing)" 함으로써 발생된다. 인터럽트 핀 상의 인터럽트 신호는 인터럽트 레지스터의 임의의 비트가 설정될 때마다 발생된다. 따라서, 인터럽트 신호는 인터럽트 레지스터의 요약으로서 동작하고, 컴포넌트가 인터럽트의 성질에 대해 추가로 조회해야한다는 것을 포트에 부착된 컴포넌트에 통지하기 위한 단일 메카니즘을 제공한다. 본 기술분야의 당업자들은 인터럽트 신호가 본 명세서에 개시된 인터럽트 핀의 전용 사용 외의 방법들로 발생될 수 있다는 것을 이해할 것이다.
일부의 실시예들에서, 인터럽트 마스크는 컴포넌트가 인터럽트 레지스터(210)의 특정한 비트의 상태를 판독하는 것을 가능하게 하도록 레지스터 파일(130)에 사용될 수 있다. 다수의 논리 AND 게이트들(260)은 마스크 피쳐를 구현하도록 제공된다. 각각의 AND 게이트에 대한 하나의 입력은 인터럽트 레지스터(210)의 비트 값이다. 각각의 AND 게이트에 대한 그외의 입력은 인터럽트 마스크 레지스터(230)에 저장되는 인터럽트 마스크의 비트 값이다. 논리 AND의 연산에 의해, 인터럽트 마스크에서 "1"로 설정된 대응하는 비트를 갖는 그 인터럽트 레지스터 비트들만이 논리 게이트(250)에 인가된다. 그 결과, 인터럽트 핀(220)의 인터럽트 신호는 인터럽트 마스크 값에 기초하여 인터럽트 레지스터의 하나 이상의 비트들의 비트 값을 선택적으로 나타낸다. SPM(supervising port master)은 각각의 포트를 대표해서 인터럽트 마스크들을 멀티-포트 메모리 디바이스의 기동 중에 수행되는 구성 단계의 일부분으로서 설정할 수 있다. 인터럽트 마스크는, 미리 정 의된 위치에 기입함으로써 컴포넌트가 인터럽트 마스크를 업데이트(update)할 수 있도록, 공유 메모리 내의 미리 정의된 위치에 저장될 수 있다.
인터럽트 마스크는 애플리케이션들에 의해 소정의 인터럽트들을 무시하는데 사용될 수 있다. 예를 들어, 멀티-포트 메모리 디바이스를 사용하는 이동 전화기에서, 기저대역 프로세서는 멀티-포트 메모리 디바이스에 부착된 LCD 제어기로부터 인터럽트들을 수신하는데 흥미를 느끼지 않을 수 있다. 따라서, 기저대역 프로세서는 LCD 제어기가 부착된 포트로부터 인터럽트들을 마스킹 아웃(mask out)하기 위해 부착된 포트의 인터럽트 마스크를 설정할 수 있다. 인터럽트 마스크에 기초하여, 인터럽트 마스크에 의해 마스킹되지 않은 인터럽트가 설정되지 않는 한, 인터럽트 신호는 인터럽트 핀에서 발생되지 않을 것이다. 또한, 멀티-포트 메모리 디바이스는 인터럽트 레지스터의 무시된 비트들이 포함되지 않도록 TAS 명령에 응답하여 반송된 비트들을 마스킹할 수 있다.
포트에 접촉된 컴포넌트에 의해 인터럽트가 검출되면, 컴포넌트는 인터럽트 레지스터(210)의 콘텐츠를 판독하도록 "TAS(test-and-set)" 명령을 발행한다. 일부의 실시예들에서, 멀티-포트 메모리 디바이스는 인터럽트 레지스터의 값을 원자적으로 테스트하고 설정하도록 TAS 명령을 제공한다. TAS 명령은, 인터럽트들의 판독 및 클리어를 동시에 가능하게 함으로써 시스템 컴포넌트가 인터럽트를 처리하는데 필요한 메모리 디바이스의 액세스들의 횟수를 감소시키고, 명령의 원자적 성질은 레이스(race) 조건들을 보호한다. 본 기술분야의 당업자들은 뮤텍스(mutexes) 및 세마포어(semaphores) 등의 일반적인 동기화 구성들이 TAS 명령을 사용하여 구축될 수 있다는 것을 인식할 것이다. 컴포넌트는 레지스터의 현재 값을 테스트하는 테스트 값 및 현재 값과 테스트 값이 일치하는 경우 레지스터를 설정하는 설정 값을 제공함으로써 TAS 명령을 발행한다. 일반적으로, 테스트 값은 임의의 비트가 설정되어 있는지의 여부를 테스트하고, 설정 값은 모든 비트들을 클리어한다. 따라서, TAS 명령을 발행하는 것은 어떤 인터럽트 비트들이 인터럽트 레지스터에 설정되는지를 컴포넌트에 알려주고 동시에 임의의 설정 비트들을 클리어한다. 다음으로, 컴포넌트는 설정될 것으로 발견된 비트들로 나타내어진 인터럽트들을 처리할 수 있다.
일부의 실시예들에서, 레지스터 파일(130)은 인터럽트를 일으키는 이벤트의 추가의 세부사항들을 저장하는데 사용될 수 있는 메시지 버퍼들(240a, 240b,...240n)을 포함한다. 각각의 포트는 연관된 입력 메시지 버퍼(IMB) 및 출력 메시지 버퍼(OMB)를 가질 수 있다. IMB는 포트에 연결된 제1 컴포넌트에 의해, 다른 포트에 연결된 제2 컴포넌트에 데이터를 제공하는데 사용될 수 있는 한편, OMB는 제2 컴포넌트로부터 제1 컴포넌트로 응답 데이터를 전송할 수 있다. 예를 들어, 포트 A에 연결된 컴포넌트는 발생한 이벤트를 기술하는 포트 B의 IMB에 정보를 기입할 수 있다. 다음으로, 포트 B의 인터럽트 레지스터의 인터럽트 비트는 포트 B에게 새로운 메시지가 사용가능함을 통지하도록 설정될 수 있다. 다음으로, 포트 B에 연결된 컴포넌트는 인터럽트를 처리한 후에 메시지 버퍼의 콘텐츠를 복원할 수 있다. 도 2에 도시된 예시에서, 포트 C로부터의 새로운 메시지를 표시하는 인터럽트 레지스터 비트 2가 설정되므로, 포트 A에 부착된 컴포넌트는 포트 C로부터의 메 시지의 콘텐츠를 판정하기 위해 포트 C 출력 메시지 버퍼(240c)를 판독한다. 컴포넌트는 포트 C 입력 메시지 버퍼(240d)에 메시지를 기입하고, 포트 C의 적절한 인터럽트를 설정함으로써 응답할 수 있다.
세개의 포트들 및 네개의 인터럽트 비트들만이 도 2에 도시되어 있지만, 멀티-포트 메모리 디바이스는 임의의 갯수의 포트들 및 인터럽트들을 지원할 수 있다. 각각의 포트 및 인터럽트의 목적은 각각의 애플리케이션에 의해 해당 애플리케이션에 대한 가장 적절한 사용을 위해 커스터마이즈(customized)될 수 있다. 메시지 버퍼들(240a, 240b,...240n)은 레지스터 파일(130)에 배치되기보다, 공유 메모리 내에 배치될 수 있고, 각각의 메시지 버퍼의 어드레스는 멀티-포트 메모리 디바이스의 기동 중에 구성될 수 있다.
일부의 실시예들에서, 멀티-포트 메모리 디바이스는 새로운 이벤트가 레지스터 파일에 추가되는 경우 인터럽트들을 자동으로 설정한다. 예를 들어, 하나의 컴포넌트가 이벤트 정보를 메시지 버퍼에 추가하는 경우, 멀티-포트 메모리 디바이스는 새로운 정보를 검출하고, 수신 포트의 인터럽트 레지스터 내의 올바른 인터럽트를 자동으로 설정할 수 있다. 인터럽트들을 자동으로 설정하는 것은 하나의 포트에 부착된 컴포넌트에 의해 야기된 에러가 다른 포트의 인터럽트 레지스터 내의 비트들을 부정확하게 설정하는 기회들을 감소시킬 수 있다.
도 3은 일부의 실시예들에서 멀티-포트 메모리 디바이스 아키텍쳐가 컴포넌트들 사이의 상호접속부들을 간략화하는 방법을 도시하는 블록도이다. 시스템(300)은 복수의 컴포넌트들을 포함하고, 각각의 컴포넌트는 인터페이스(310)를 통해 공유 메모리(305)에 접속된다. 각각의 컴포넌트는 또한 그외의 컴포넌트들과 함께 다수의 직접 상호접속부들(320)을 갖는다. 상호접속부들은, 이들이 다양한 인터페이스 프로토콜(protocol)들을 사용하여 다른 컴포넌트들과 통신하기 위해 컴포넌트들을 필요로하기 때문에, 시스템에 복잡도를 추가시킨다. 상호접속부들은 추가의 라우팅 경로들 및 타이밍 제어들을 필요로 하기 때문에, 시스템에 복잡도를 또한 추가시킨다. 본 명세서에 개시된 멀티-포트 메모리 디바이스에 기초한 시스템(350)은 또한 인터페이스(360)를 통해 공유 메모리(355)에 접속된 복수의 컴포넌트들을 포함한다. 그러나, 시스템(350)은 컴포넌트들 사이에 직접적인 상호접속부들을 포함하지 않는다. 오히려, 각각의 컴포넌트는 인터럽트 핀(370)을 통해 공유 메모리(355)에 접속된다. 본 명세서에 기술된 바와 같이, 인터럽트 핀(370) 상의 인터럽트 신호는 다른 컴포넌트가 공유 메모리(355)를 통해 통신하기를 원하는 시점을 컴포넌트에 알려준다. 시스템에서 컴포넌트들 사이의 직접적인 상호접속부들을 제거하는 것은 타이밍 및 인터페이스 문제점들을 매우 간략화시킨다.
도 4는 일부의 실시예들에서 컴포넌트들 사이에 메시지들을 통신하는 경우 멀티-포트 메모리 디바이스의 프로세스를 도시하는 흐름도이다. 블록(410)에서, 포트 마스터(PM) A는 PM B에 의해 사용되는 포트의 OMB에 메시지를 기입한다. 블록(420)에서, PM A는 PM B에, 새로운 메시지가 사용가능함을 통지하기 위해 PM B에 접속된 포트의 인터럽트 레지스터를 설정한다(대안적으로, 새로운 메시지가 PM B의 OMB에 기입되는 경우 인터럽트를 자동으로 설정할 수 있음). PM B의 인터럽트 레지스터의 콘텐츠에 기초하여, PM B에 의해 사용된 포트의 인터럽트 핀이 또한 설정 된다. 블록(430)에서, PM B는 인터럽트 핀이 설정된 것을 검출하고, 인터럽트 레지스터의 콘텐츠를 판독하고 인터럽트를 클리어하도록 TAS 명령을 발행한다. 블록(440)에서, PM B는 PM A에 의해 OMB에 기입된 메시지를 판독하고 메시지를 처리한다. 블록(450)에서, PM B는 PM A에 의해 사용되는 포트의 IMB에 응답 메시지를 기입한다. 블록(460)에서, PM B는 PM A에 의해 사용된 포트의 인터럽트 레지스터를 설정하여 PM A에 메시지가 처리되었고 응답이 사용가능함을 통지한다. PM A의 인터럽트 레지스터의 콘텐츠에 기초하여, 포트의 인터럽트 핀이 또한 설정된다. 블록(470)에서, PM A는 인터럽트 핀이 설정됨을 검출하고, 인터럽트 레지스터의 콘텐츠를 판독하고 인터럽트를 클리어하도록 TAS 명령을 발행한다. 블록(480)에서, PM A는 PM B에 의해 IMB에 기입된 응답 메시지를 판독하고 응답을 처리한다. 판정 블록(490)에서, 더 많은 메시지들이 존재하는 경우, PM A는 블록(410)으로 루프(loop)되어 다른 메시지를 전송하고, 그렇지 않은 경우 프로세스를 종료한다.
Ⅱ. 레지스터 파일의 사용
이하는 레지스터 파일이 상이한 애플리케이션들에 의해 컴포넌트들 사이의 정보를 조정하고 공유하는데 사용될 수 있는 방법의 일부의 예시들이다.
저장 애플리케이션들은 종종 메모리 디바이스를 공유하는 하나 이상의 포트 마스터들을 포함한다. 포트 마스터들(PMs)은 프로세서들, 그외의 저장 디바이스들(예를 들어, 하드 드라이브들), 및 메모리 디바이스에 부착된 그외의 하드웨어 컴포넌트들을 나타낼 수 있다. 하나의 포트 마스터는 종종 SPM(supervising port master)으로 지정된다. SPM은 일반적으로 그외의 포트 마스터들의 동작을 지시한 다. 예를 들어, 기동(power-up) 중에 SPM은 부착된 플래시 메모리로부터 구성 정보를 모으고 그외의 PM들에 대하여 메모리 디바이스의 각각의 포트들을 구성할 수 있다. SPM은 메모리 디바이스의 각각의 포트에, 포트 속도 및, 포트에 대한 메시지 버퍼들의 위치, 인터럽트 마스크들의 위치, 인터럽트 레지스터 내의 각각의 인터럽트 비트의 의미 등의, 그외의 구성 정보를 제공할 수 있다. SPM은 또한 애플리케이션의 요구들에 기초하여 각각의 포트를 인에이블 및 디스에이블할 수 있다. 예를 들어, SPM은 시스템의 그외의 컴포넌트들이 파워 업을 완료하고 동작할 준비가 될 때까지 포트의 인터럽트 레지스터의 비트를 설정함으로써 포트에게 디스에이블 상태를 유지하도록 지시할 수 있다. SPM은 또한 일부의 포트들에게 시스템의 현재의 전원 요구조건들에 기초하여, 또는 특정한 디바이스의 비활동성(예를 들어, 이동 전화기의 LCD 디스플레이의 화면을 디밍함(dimming))에 기초하여 그들 자신을 디스에이블하도록 지시할 수 있다.
레지스터 파일을 사용하는 다른 예시는 메모리 디바이스에 부착된 일부의 컴포넌트들에 의해 메모리의 뱅크들을 공유하는 것이다. 가장 간략한 경우에, 각각의 컴포넌트에는 메모리의 그 자신의 뱅크가 할당되고 어떠한 공유도 필요하지 않다. 그러나, 애플리케이션들은 종종 시스템의 현재의 로드에 기초하여 더 많은 사용가능한 메모리가 특정한 사용에 이용될 수 있도록 뱅크들이 공유되는 것을 필요로한다. 예를 들어, 이동 전화기에서, 통화를 하는 경우, 기저대역 프로세서가 더 많은 메모리를 필요로할 수 있는 한편, 미디어 프로세서는 게임을 하는 경우 더 많은 메모리를 필요로할 수 있다. 시스템의 컴포넌트들은 또한 정보를 공유하는 것 을 필요로할 수 있고, 메모리의 뱅크들을 공유함으로써 그렇게 할 수 있다. 하나의 컴포넌트는 메모리에 기입할 수 있고, 다른 컴포넌트는 컴포넌트들 사이에 정보를 공유하기 위해 메모리로부터 판독할 수 있다.
메모리의 뱅크들에 대한 액세스가 공유되는 경우에, 뱅크들에 대한 액세스의 조정은 데이터가 손상되지 않는다는 것을 보장하는 데 중요하다. 레지스터 파일은 애플리케이션들에 의해 메모리의 뱅크에 대한 액세스를 조정하는데 사용될 수 있다. 예를 들어, 인터럽트는 사용 메모리의 뱅크를 예약하기 위해 정의될 수 있다. 컴포넌트가 메모리의 뱅크의 사용을 원하는 경우, 컴포넌트는 사용하기 위한 메모리의 뱅크를 예약하는 것을 시도하도록 TAS 명령을 발행한다. 뱅크가 현재 사용중이 아닌 경우, TAS 명령은 뱅크가 사용가능함을 표시하고, 컴포넌트는 동시에 TAS 명령의 일부로서 사용 뱅크를 예약한다. 뱅크가 예약되면 컴포넌트는 포트를 통해 메모리에 대해 판독 및 기입할 수 있다. 컴포넌트가 뱅크를 사용하는 경우, 다른 TAS 명령을 발행함으로써 뱅크의 예약을 클리어할 수 있다. 다른 컴포넌트가 메모리를 사용하기를 원하는 경우, 프로세스는 반복한다. TAS 명령이 뱅크가 이미 예약되었다는 것을 표시하는 경우에, 컴포넌트는 메모리가 이미 사용중임을 알 수 있고, 컴포넌트는 TAS 명령을 사용하여 인터럽트 레지스터를 폴링(polling)함으로써 뱅크가 더 이상 예약되지 않을 때까지 기다릴 수 있다.
일부의 실시예들에서, 멀티-포트 메모리는 컴포넌트가 현재 뱅크를 사용하는 경우라도 뱅크의 사용을 원하는 다음 컴포넌트가 그 관심을 등록할 수 있도록, 라인 내의 다음 것에 대해 다른 인터럽트 비트를 제공하여 뱅크를 예약할 수 있다. 따라서, 제2 포트는 제1 포트에 의해, 이 제1 포트에 접속된 컴포넌트가 뱅크를 사용하는 것을 마칠 때를 통지받을 수 있으므로, 제2 포트는 사용가능한 뱅크를 기다리면서 폴(poll)할 필요가 없다.
Ⅲ. 결론
이하에서 다르게 기술되지 않는 한, 본 발명의 양태들은 종래의 시스템들로 구현될 수 있다. 따라서, 도면들에 도시된 다양한 블록들의 동작 및 구성은 종래의 설계일 수 있고, 그 블록들이 본 기술분야의 당업자들에게 이해될 것이기 때문에, 본 발명을 만들고 사용하기 위해 본 명세서에 더 상세하게 기술될 필요가 없다. 시스템의 양태들은 하나 이상의 컴퓨터들 또는 디바이스들에 의해 실행되는, 프로그램 모듈들과 같은, 컴퓨터-실행가능 명령들을 사용하여 구현될 수 있다. 일반적으로, 프로그램 모듈들은 특정한 작업들을 수행하거나 또는 특정한 추상적 데이터 유형들을 구현하는 루틴(routine)들, 프로그램들, 오브젝트(object)들, 컴포넌트들, 데이터 구조들 등을 포함한다. 일반적으로, 프로그램 모듈들의 기능은 다양한 실시예들에서 원하는 대로 결합되거나 또는 분배될 수 있다.
전술된 바와 같이, 멀티-포트 메모리의 특정한 실시예들이 도시를 위한 목적으로 본 명세서에 기술되었지만, 본 발명의 정신 및 범주를 벗어나지 않고 다양한 수정들을 만들 수 있다는 것이 이해될 것이다. 따라서, 본 발명은 첨부된 청구범위에 의해서만 한정된다.

Claims (26)

  1. 멀티-포트 메모리 디바이스의 제1 포트에 연결된 제1 컴포넌트와 상기 디바이스의 제2 포트에 연결된 제2 컴포넌트 사이에 메모리를 공유하는 방법으로서,
    멀티-포트 메모리 디바이스의 제1 포트에서 제1 컴포넌트로부터 메시지를 수신하는 단계;
    상기 메시지에 대한 데이터를 상기 제1 포트에 대한 제1 복수의 메시지 버퍼의 제1 출력 메시지 버퍼에 기입하는 단계 - 상기 제1 출력 메시지 버퍼는 상기 제2 포트와 연관되고, 상기 제1 포트에 대한 상기 제1 복수의 메시지 버퍼는, 상기 제1 포트 이외의 상기 멀티-포트 메모리 디바이스의 다수의 포트들 각각에 대해, 상기 포트와 연관된 개별 출력 메시지 버퍼 및 상기 포트와 연관된 개별 입력 메시지 버퍼를 포함하고, 상기 제1 복수의 메시지 버퍼의 각각의 출력 메시지 버퍼는 상기 출력 메시지 버퍼와 연관된 포트로부터 메시지 데이터를 수신하기 위한 것이고, 상기 제1 복수의 메시지 버퍼의 각각의 입력 메시지 버퍼는 상기 입력 메시지 버퍼와 연관된 포트로부터 응답 데이터를 수신하기 위한 것임 -;
    상기 메시지 데이터의 상기 기입에 응답하여 상기 제2 포트에 대한 인터럽트(interrupt) 레지스터를 자동으로 설정하는 단계 - 상기 인터럽트 레지스터를 설정하는 단계는, 상기 제1 포트로부터의 상기 메시지가 상기 제1 출력 메시지 버퍼에서 수신되었다는 것을 나타내도록 상기 제2 포트에 대한 상기 인터럽트 레지스터의 비트를 설정하는 단계를 포함함 -;
    상기 제2 포트에 이벤트의 발생을 통지하기 위해 상기 제2 포트에 대한 상기 인터럽트 레지스터의 상기 설정에 응답하여 상기 멀티-포트 메모리 디바이스의 상기 제2 포트와 연관된 인터럽트 신호를 자동으로 설정하는 단계 - 상기 인터럽트 신호는 상기 제2 포트에 대한 상기 인터럽트 레지스터의 상기 설정에 기초하여 설정됨 -;
    상기 제2 포트에 연결된 제2 컴포넌트가 상기 인터럽트 신호를 검출한 후에, 상기 멀티-포트 메모리 디바이스가 상기 제2 포트에 대한 상기 인터럽트 레지스터의 콘텐츠(contents)를 상기 제2 컴포넌트로 전송하는 단계; 및
    상기 제1 출력 메시지 버퍼로부터의 상기 메시지에 대한 상기 데이터를 상기 제2 컴포넌트에 제공하는 단계
    를 포함하는 메모리 공유 방법.
  2. 제1항에 있어서,
    상기 제2 포트와 연관된 상기 인터럽트 신호를 설정하는 단계는 상기 제2 컴포넌트에 메시지 또는 응답의 수신을 통지하기 위해 상기 제2 컴포넌트와 연결된 인터럽트 핀을 설정하는 단계를 포함하는 메모리 공유 방법.
  3. 제1항에 있어서,
    상기 제2 포트와 연관된 상기 인터럽트 신호를 설정하는 단계는 상기 제2 포트와 연관된 상기 인터럽트 레지스터의 상기 콘텐츠가 인터럽트 마스크와 일치하는지의 여부를 판정하는 단계, 및 상기 콘텐츠가 상기 인터럽트 마스크와 일치하는 경우 상기 인터럽트 신호를 설정하는 단계를 포함하는 메모리 공유 방법.
  4. 제1항에 있어서,
    상기 제2 포트에서 상기 제2 컴포넌트로부터 응답 데이터를 수신하는 단계;
    상기 수신된 응답 데이터를 상기 멀티-포트 메모리 디바이스의 상기 제1 포트에 대한 상기 제1 복수의 메시지 버퍼의 제1 입력 메시지 버퍼에 기입하는 단계 - 상기 제1 입력 메시지 버퍼는 상기 제2 포트와 연관되어 있음 -;
    상기 응답 데이터의 상기 기입에 응답하여 상기 제1 포트와 연관된 인터럽트 레지스터를 자동으로 설정하는 단계 - 상기 인터럽트 레지스터를 설정하는 단계는 상기 제2 포트로부터의 상기 응답이 상기 제1 포트에서 수신되었다는 것을 나타내도록 상기 인터럽트 레지스터의 비트를 설정하는 단계를 포함함 -;
    상기 제1 포트에 이벤트의 발생을 통지하기 위해 상기 멀티-포트 메모리 디바이스의 상기 제1 포트와 연관된 인터럽트 신호를 설정하는 단계 - 상기 인터럽트 신호는 상기 제1 포트와 연관된 상기 인터럽트 레지스터의 하나 이상의 설정에 기초하여 설정됨 -;
    상기 제1 포트와 연관된 상기 인터럽트 레지스터의 상기 콘텐츠를 상기 제2 컴포넌트에 제공하는 단계; 및
    상기 제1 입력 메시지 버퍼로부터의 상기 응답에 대한 상기 데이터를 상기 제1 컴포넌트에 제공하는 단계
    를 더 포함하는 메모리 공유 방법.
  5. 제1항에 있어서,
    상기 인터럽트 신호는 상기 인터럽트 레지스터의 비트들의 세트에 의해 설정되는 메모리 공유 방법.
  6. 제5항에 있어서,
    상기 비트들의 세트는 상기 멀티-포트 메모리 디바이스의 각각의 그외의 포트에 대하여 적어도 하나의 비트를 포함하는 메모리 공유 방법.
  7. 제5항에 있어서,
    특정한 포트에 대한 상기 인터럽트 레지스터는 상기 멀티-포트 메모리 디바이스의 각각의 그외의 포트에 대하여 응답 메시지들을 수신하기 위한 비트를 포함하는 메모리 공유 방법.
  8. 제5항에 있어서,
    상기 인터럽트 레지스터는 디버깅 목적을 위해 예약된 적어도 하나의 비트를 포함하는 메모리 공유 방법.
  9. 제1항에 있어서,
    상기 인터럽트 레지스터의 상기 콘텐츠를 전송하는 단계는 TAS(test-and-set) 명령에 응답하는 단계를 포함하는 메모리 공유 방법.
  10. 삭제
  11. 제1항에 있어서,
    상기 인터럽트 레지스터는 상기 멀티-포트 메모리 디바이스 내의 메모리 위치에 저장되는 메모리 공유 방법.
  12. 제1항에 있어서,
    상기 포트들은 직렬 포트들인 메모리 공유 방법.
  13. 제1항에 있어서,
    상기 인터럽트 레지스터의 상기 콘텐츠를 전송하기 위해 사용된 데이터 경로는 데이터를 상기 멀티-포트 메모리 디바이스 내의 상기 메모리로 및 상기 메모리로부터 전송하기 위해 사용된 데이터 경로와 동일한 것인 메모리 공유 방법.
  14. 멀티-포트 메모리 시스템에 부착된 컴포넌트들 사이에 정보를 공유하기 위한 시스템으로서,
    상기 멀티-포트 메모리 시스템의 둘 이상의 포트들에 의해 액세스가능한 정보를 저장하기 위한 하나 이상의 공유 메모리 뱅크들;
    상기 복수의 포트 각각에 대한 개별 인터럽트 레지스터 - 상기 인터럽트 레지스터는 메시지 또는 응답의 출처에 관해 제1 포트에 연결된 컴포넌트에 알리기 위해 상기 제1 포트 이외의 상기 복수의 포트의 각각의 포트에 관한 비트들을 포함하는 상기 제1 포트에 대한 제1 인터럽트 레지스터를 포함하고, 상기 비트들은 상기 제1 포트 이외의 상기 복수의 포트 중 임의의 포트로부터의 메시지 또는 응답이 저장될 때 자동으로 설정됨 -;
    상기 복수의 포트의 각각의 포트에 대한 인터럽트 핀 - 상기 제1 포트 이외의 상기 복수의 포트 중 임의의 포트로부터의 메시지들의 수신 또는 상기 제1 포트 이외의 상기 복수의 포트 중 임의의 포트로부터의 응답들의 수신을 나타내는 상기 제1 인터럽트 레지스터의 상기 비트들의 설정들에 기초하여 상기 인터럽트 핀 상에서 상기 제1 포트에 대한 인터럽트 신호가 활성화됨 -;
    상기 제1 포트에 대한 제1 복수의 메시지 버퍼를 포함하는, 상기 복수의 포트의 각각의 포트에 대한 복수의 메시지 버퍼 - 상기 제1 포트에 대한 상기 제1 복수의 메시지 버퍼는, 상기 제1 포트 이외의 상기 멀티-포트 메모리 시스템의 다수의 포트들 각각에 대해, 상기 포트와 연관된 개별 출력 메시지 버퍼 및 상기 포트와 연관된 개별 입력 메시지 버퍼를 포함하고, 상기 제1 복수의 메시지 버퍼의 각각의 출력 메시지 버퍼는 메시지 데이터를 상기 출력 메시지 버퍼와 연관된 포트로 송신하기 위한 것이고, 상기 제1 복수의 메시지 버퍼의 각각의 입력 메시지 버퍼는 상기 입력 메시지 버퍼와 연관된 포트로부터 응답 데이터를 수신하기 위한 것임 -; 및
    상기 인터럽트 레지스터의 콘텐츠에 기초하여 인터럽트 핸들링 절차를 구현하기 위한 인터럽트 핸들링 컴포넌트
    를 포함하는 정보 공유 시스템.
  15. 제14항에 있어서,
    상기 제1 인터럽트 레지스터는 복수의 비트들로 구성되고, 상기 비트들의 설정들은 이벤트의 유형을 표시하는 정보 공유 시스템.
  16. 제15항에 있어서,
    상기 제1 포트와 연관된 제1 인터럽트 마스크를 포함하는, 상기 복수의 포트의 각각의 포트와 연관된 개별 인터럽트 마스크를 포함하고, 상기 제1 인터럽트 마스크는 상기 제1 포트에 대한 상기 인터럽트 핀의 설정에 대한 특정한 유형의 이벤트를 식별하기 위해 상기 제1 포트와 연관된 상기 제1 인터럽트 레지스터와 비교되는 정보 공유 시스템.
  17. 삭제
  18. 삭제
  19. 제14항에 있어서,
    상기 공유 메모리 뱅크들로부터 분리된 RAM(random access memory)을 더 포함하고, 각각의 포트와 연관된 상기 인터럽트 레지스터는 상기 RAM에 저장되는 정보 공유 시스템.
  20. 제19항에 있어서,
    상기 RAM은 상기 공유 메모리 뱅크들보다 더 빠른 메모리인 정보 공유 시스템.
  21. 삭제
  22. 삭제
  23. 삭제
  24. 삭제
  25. 삭제
  26. 삭제
KR1020087026426A 2006-03-30 2007-03-30 멀티-포트 메모리 디바이스의 포트간 통신 KR101341286B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US78840106P 2006-03-30 2006-03-30
US60/788,401 2006-03-30
PCT/US2007/065722 WO2007115226A2 (en) 2006-03-30 2007-03-30 Inter-port communication in a multi- port memory device

Publications (2)

Publication Number Publication Date
KR20080104388A KR20080104388A (ko) 2008-12-02
KR101341286B1 true KR101341286B1 (ko) 2013-12-12

Family

ID=38421761

Family Applications (2)

Application Number Title Priority Date Filing Date
KR1020087026426A KR101341286B1 (ko) 2006-03-30 2007-03-30 멀티-포트 메모리 디바이스의 포트간 통신
KR1020087026515A KR101323400B1 (ko) 2006-03-30 2007-03-30 가변적인 포트 속도들을 갖는 다중-포트 메모리 디바이스

Family Applications After (1)

Application Number Title Priority Date Filing Date
KR1020087026515A KR101323400B1 (ko) 2006-03-30 2007-03-30 가변적인 포트 속도들을 갖는 다중-포트 메모리 디바이스

Country Status (7)

Country Link
US (2) US7639561B2 (ko)
EP (2) EP2008164A2 (ko)
JP (2) JP5197571B2 (ko)
KR (2) KR101341286B1 (ko)
CN (3) CN101449334B (ko)
TW (3) TWI340982B (ko)
WO (2) WO2007115227A2 (ko)

Families Citing this family (50)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8489817B2 (en) 2007-12-06 2013-07-16 Fusion-Io, Inc. Apparatus, system, and method for caching data
US8443134B2 (en) 2006-12-06 2013-05-14 Fusion-Io, Inc. Apparatus, system, and method for graceful cache device degradation
US8706968B2 (en) 2007-12-06 2014-04-22 Fusion-Io, Inc. Apparatus, system, and method for redundant write caching
WO2008070191A2 (en) 2006-12-06 2008-06-12 Fusion Multisystems, Inc. (Dba Fusion-Io) Apparatus, system, and method for a reconfigurable baseboard management controller
US9104599B2 (en) 2007-12-06 2015-08-11 Intelligent Intellectual Property Holdings 2 Llc Apparatus, system, and method for destaging cached data
US7836226B2 (en) 2007-12-06 2010-11-16 Fusion-Io, Inc. Apparatus, system, and method for coordinating storage requests in a multi-processor/multi-thread environment
US9519540B2 (en) 2007-12-06 2016-12-13 Sandisk Technologies Llc Apparatus, system, and method for destaging cached data
DE102008011925B4 (de) * 2008-02-29 2018-03-15 Globalfoundries Inc. Sicheres Initialisieren von Computersystemen
US8230180B2 (en) * 2008-06-11 2012-07-24 Samsung Electronics Co., Ltd. Shared memory burst communications
KR20100085564A (ko) * 2009-01-21 2010-07-29 삼성전자주식회사 데이터 처리 시스템과 데이터 처리 방법
US8769213B2 (en) * 2009-08-24 2014-07-01 Micron Technology, Inc. Multi-port memory and operation
JP2011058847A (ja) * 2009-09-07 2011-03-24 Renesas Electronics Corp 半導体集積回路装置
US8972627B2 (en) 2009-09-09 2015-03-03 Fusion-Io, Inc. Apparatus, system, and method for managing operations for data storage media
US9021158B2 (en) 2009-09-09 2015-04-28 SanDisk Technologies, Inc. Program suspend/resume for memory
WO2011031899A2 (en) * 2009-09-09 2011-03-17 Fusion-Io, Inc. Apparatus, system, and method for power reduction in a storage device
US9223514B2 (en) 2009-09-09 2015-12-29 SanDisk Technologies, Inc. Erase suspend/resume for memory
US8458581B2 (en) * 2009-10-15 2013-06-04 Ansaldo Sts Usa, Inc. System and method to serially transmit vital data from two processors
US8190944B2 (en) * 2009-12-11 2012-05-29 Ati Technologies Ulc Device configured to switch a clock speed for multiple links running at different clock speeds and method for switching the clock speed
US8775856B1 (en) * 2010-03-10 2014-07-08 Smsc Holdings S.A.R.L. System and method for generating clock signal for a plurality of communication ports by selectively dividing a reference clock signal with a plurality of ratios
JP2011227834A (ja) * 2010-04-22 2011-11-10 Sony Corp 信号制御装置及び信号制御方法
US8984216B2 (en) 2010-09-09 2015-03-17 Fusion-Io, Llc Apparatus, system, and method for managing lifetime of a storage device
KR101796116B1 (ko) 2010-10-20 2017-11-10 삼성전자 주식회사 반도체 장치, 이를 포함하는 메모리 모듈, 메모리 시스템 및 그 동작방법
US9208071B2 (en) 2010-12-13 2015-12-08 SanDisk Technologies, Inc. Apparatus, system, and method for accessing memory
US9218278B2 (en) 2010-12-13 2015-12-22 SanDisk Technologies, Inc. Auto-commit memory
US10817502B2 (en) 2010-12-13 2020-10-27 Sandisk Technologies Llc Persistent memory management
WO2012082792A2 (en) 2010-12-13 2012-06-21 Fusion-Io, Inc. Apparatus, system, and method for auto-commit memory
US9047178B2 (en) 2010-12-13 2015-06-02 SanDisk Technologies, Inc. Auto-commit memory synchronization
US10817421B2 (en) 2010-12-13 2020-10-27 Sandisk Technologies Llc Persistent data structures
WO2012106362A2 (en) 2011-01-31 2012-08-09 Fusion-Io, Inc. Apparatus, system, and method for managing eviction of data
WO2012112618A1 (en) 2011-02-14 2012-08-23 The Regents Of The University Of California Multi-band interconnect for inter-chip and intra-chip communications
WO2012116369A2 (en) 2011-02-25 2012-08-30 Fusion-Io, Inc. Apparatus, system, and method for managing contents of a cache
CN102176138B (zh) * 2011-03-01 2013-04-03 上海维宏电子科技股份有限公司 数控系统中硬件端口的对象化管理控制方法
US8543774B2 (en) 2011-04-05 2013-09-24 Ansaldo Sts Usa, Inc. Programmable logic apparatus employing shared memory, vital processor and non-vital communications processor, and system including the same
US9767032B2 (en) 2012-01-12 2017-09-19 Sandisk Technologies Llc Systems and methods for cache endurance
US9251086B2 (en) 2012-01-24 2016-02-02 SanDisk Technologies, Inc. Apparatus, system, and method for managing a cache
CN104123241B (zh) * 2013-04-24 2017-08-29 华为技术有限公司 内存匿名页初始化方法、装置及系统
US20140321471A1 (en) * 2013-04-26 2014-10-30 Mediatek Inc. Switching fabric of network device that uses multiple store units and multiple fetch units operated at reduced clock speeds and related method thereof
US8963587B2 (en) * 2013-05-14 2015-02-24 Apple Inc. Clock generation using fixed dividers and multiplex circuits
US9666244B2 (en) 2014-03-01 2017-05-30 Fusion-Io, Inc. Dividing a storage procedure
US9665432B2 (en) * 2014-08-07 2017-05-30 Microsoft Technology Licensing, Llc Safe data access following storage failure
US9847918B2 (en) 2014-08-12 2017-12-19 Microsoft Technology Licensing, Llc Distributed workload reassignment following communication failure
US9933950B2 (en) 2015-01-16 2018-04-03 Sandisk Technologies Llc Storage operation interrupt
US20160378151A1 (en) * 2015-06-26 2016-12-29 Intel Corporation Rack scale architecture (rsa) and shared memory controller (smc) techniques of fast zeroing
US9690494B2 (en) * 2015-07-21 2017-06-27 Qualcomm Incorporated Managing concurrent access to multiple storage bank domains by multiple interfaces
US9996138B2 (en) * 2015-09-04 2018-06-12 Mediatek Inc. Electronic system and related clock managing method
CN105701026A (zh) * 2016-01-04 2016-06-22 上海斐讯数据通信技术有限公司 一种数据采集器及其利用系统冗余资源采集数据的方法
KR20180033368A (ko) * 2016-09-23 2018-04-03 삼성전자주식회사 케스-케이드 연결 구조로 레퍼런스 클록을 전달하는 스토리지 장치들을 포함하는 전자 장치
KR102438319B1 (ko) * 2018-02-07 2022-09-01 한국전자통신연구원 공통 메모리 인터페이스 장치 및 방법
CN111142955B (zh) * 2019-12-31 2021-07-16 联想(北京)有限公司 一种信息处理方法及装置
US11567708B2 (en) 2021-01-05 2023-01-31 Brother Kogyo Kabushiki Kaisha Image forming apparatus having one or more ports to which portable memory is attachable

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20040012716A (ko) * 2001-01-31 2004-02-11 인터내셔널 비지네스 머신즈 코포레이션 주변장치로부터 호스트 컴퓨터 시스템에 인터럽트를전달하기 위한 방법 및 장치
KR20050078206A (ko) * 2004-01-30 2005-08-04 삼성전자주식회사 불휘발성 메모리와 호스트간에 버퍼링 동작을 수행하는멀티 포트 휘발성 메모리 장치, 이를 이용한 멀티-칩패키지 반도체 장치 및 이를 이용한 데이터 처리장치

Family Cites Families (42)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4344133A (en) * 1978-07-31 1982-08-10 Motorola, Inc. Method for synchronizing hardware and software
US4449183A (en) * 1979-07-09 1984-05-15 Digital Equipment Corporation Arbitration scheme for a multiported shared functional device for use in multiprocessing systems
US4729091A (en) * 1984-11-13 1988-03-01 International Business Machines Corporation Directing storage requests prior to address comparator initialization with a reference address range
IT1184553B (it) * 1985-05-07 1987-10-28 Honeywell Inf Systems Architettura di sistema a piu' processori
US5142683A (en) * 1987-03-09 1992-08-25 Unisys Corporation Intercomputer communication control apparatus and method
JPH01501660A (ja) * 1987-06-18 1989-06-08 ユニシス・コーポレーシヨン コンピユータ間通信制御装置及びその方法
US5144314A (en) * 1987-10-23 1992-09-01 Allen-Bradley Company, Inc. Programmable object identification transponder system
US4987529A (en) * 1988-08-11 1991-01-22 Ast Research, Inc. Shared memory bus system for arbitrating access control among contending memory refresh circuits, peripheral controllers, and bus masters
US5197130A (en) * 1989-12-29 1993-03-23 Supercomputer Systems Limited Partnership Cluster architecture for a highly parallel scalar/vector multiprocessor system
US5175853A (en) * 1990-10-09 1992-12-29 Intel Corporation Transparent system interrupt
JPH04367963A (ja) * 1991-06-15 1992-12-21 Hitachi Ltd 共有記憶通信方法
US5423008A (en) * 1992-08-03 1995-06-06 Silicon Graphics, Inc. Apparatus and method for detecting the activities of a plurality of processors on a shared bus
JP3442128B2 (ja) * 1994-02-21 2003-09-02 松下電工株式会社 プロセッサ間通信方法および装置
JP3447404B2 (ja) * 1994-12-08 2003-09-16 日本電気株式会社 マルチプロセッサシステム
US5925099A (en) * 1995-06-15 1999-07-20 Intel Corporation Method and apparatus for transporting messages between processors in a multiple processor system
US6167487A (en) * 1997-03-07 2000-12-26 Mitsubishi Electronics America, Inc. Multi-port RAM having functionally identical ports
US5901309A (en) * 1997-10-07 1999-05-04 Telefonaktiebolaget Lm Ericsson (Publ) Method for improved interrupt handling within a microprocessor
US6118792A (en) * 1997-11-21 2000-09-12 Nortel Networks Corporation Method and apparatus for a flexible access rate common-memory packet switch
US6313766B1 (en) * 1998-07-01 2001-11-06 Intel Corporation Method and apparatus for accelerating software decode of variable length encoded information
US6263390B1 (en) * 1998-08-18 2001-07-17 Ati International Srl Two-port memory to connect a microprocessor bus to multiple peripherals
KR100284741B1 (ko) * 1998-12-18 2001-03-15 윤종용 로컬클럭 신호 발생회로 및 방법, 내부클럭신호 발생회로 및방법,이를 이용한 반도체 메모리 장치
US6002633A (en) * 1999-01-04 1999-12-14 International Business Machines Corporation Performance optimizing compiler for building a compiled SRAM
US6378051B1 (en) * 1999-06-14 2002-04-23 Maxtor Corporation Interrupt signal prioritized shared buffer memory access system and method
US6396324B1 (en) * 2000-05-08 2002-05-28 International Business Machines Corporation Clock system for an embedded semiconductor memory unit
US6845409B1 (en) * 2000-07-25 2005-01-18 Sun Microsystems, Inc. Data exchange methods for a switch which selectively forms a communication channel between a processing unit and multiple devices
TW530207B (en) * 2000-09-05 2003-05-01 Samsung Electronics Co Ltd Semiconductor memory device having altered clock frequency for address and/or command signals, and memory module and system having the same
US6665795B1 (en) * 2000-10-06 2003-12-16 Intel Corporation Resetting a programmable processor
US6938164B1 (en) * 2000-11-22 2005-08-30 Microsoft Corporation Method and system for allowing code to be securely initialized in a computer
US6877071B2 (en) * 2001-08-20 2005-04-05 Technology Ip Holdings, Inc. Multi-ported memory
US6795360B2 (en) * 2001-08-23 2004-09-21 Integrated Device Technology, Inc. Fifo memory devices that support all four combinations of DDR or SDR write modes with DDR or SDR read modes
US7032106B2 (en) 2001-12-27 2006-04-18 Computer Network Technology Corporation Method and apparatus for booting a microprocessor
US7571287B2 (en) * 2003-03-13 2009-08-04 Marvell World Trade Ltd. Multiport memory architecture, devices and systems including the same, and methods of using the same
CN1275143C (zh) * 2003-06-11 2006-09-13 华为技术有限公司 数据处理系统及方法
JP4346506B2 (ja) * 2004-06-07 2009-10-21 株式会社リコー 先入れ先出しメモリ及びそれを用いた記憶媒体制御装置
US20060073563A1 (en) * 2004-09-02 2006-04-06 Xencor, Inc. Erythropoietin derivatives with altered immunogenicity
US20060072563A1 (en) 2004-10-05 2006-04-06 Regnier Greg J Packet processing
JP2006301894A (ja) * 2005-04-20 2006-11-02 Nec Electronics Corp マルチプロセッサシステム、及びマルチプロセッサシステムのメッセージ伝達方法
JP2006309512A (ja) * 2005-04-28 2006-11-09 Nec Electronics Corp マルチプロセッサシステム、及びマルチプロセッサシステムのメッセージ伝達方法
JP4425243B2 (ja) * 2005-10-17 2010-03-03 Okiセミコンダクタ株式会社 半導体記憶装置
US7369453B2 (en) * 2006-02-28 2008-05-06 Samsung Electronics Co., Ltd. Multi-port memory device and method of controlling the same
US7433263B2 (en) * 2006-02-28 2008-10-07 Samsung Electronics Co., Ltd. Multi-port semiconductor device and method thereof
KR100909805B1 (ko) * 2006-09-21 2009-07-29 주식회사 하이닉스반도체 멀티포트 메모리 장치

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20040012716A (ko) * 2001-01-31 2004-02-11 인터내셔널 비지네스 머신즈 코포레이션 주변장치로부터 호스트 컴퓨터 시스템에 인터럽트를전달하기 위한 방법 및 장치
KR20050078206A (ko) * 2004-01-30 2005-08-04 삼성전자주식회사 불휘발성 메모리와 호스트간에 버퍼링 동작을 수행하는멀티 포트 휘발성 메모리 장치, 이를 이용한 멀티-칩패키지 반도체 장치 및 이를 이용한 데이터 처리장치

Also Published As

Publication number Publication date
KR20090007378A (ko) 2009-01-16
KR101323400B1 (ko) 2013-10-29
US20070245094A1 (en) 2007-10-18
CN101438242A (zh) 2009-05-20
US20070234021A1 (en) 2007-10-04
EP2008281B1 (en) 2012-01-25
JP2009532815A (ja) 2009-09-10
WO2007115226A3 (en) 2008-10-30
CN101449262B (zh) 2012-07-04
CN101438242B (zh) 2013-09-18
KR20080104388A (ko) 2008-12-02
US7949863B2 (en) 2011-05-24
CN101449334A (zh) 2009-06-03
TWI340982B (en) 2011-04-21
TW200802082A (en) 2008-01-01
WO2007115227A2 (en) 2007-10-11
CN101449334B (zh) 2012-04-25
TW200818734A (en) 2008-04-16
WO2007115226A2 (en) 2007-10-11
TWI353124B (en) 2011-11-21
JP5197571B2 (ja) 2013-05-15
CN101449262A (zh) 2009-06-03
JP5188493B2 (ja) 2013-04-24
WO2007115227A3 (en) 2007-11-29
US7639561B2 (en) 2009-12-29
TW200802403A (en) 2008-01-01
EP2008281A2 (en) 2008-12-31
TWI386846B (zh) 2013-02-21
JP2009532782A (ja) 2009-09-10
EP2008164A2 (en) 2008-12-31

Similar Documents

Publication Publication Date Title
KR101341286B1 (ko) 멀티-포트 메모리 디바이스의 포트간 통신
US7007108B2 (en) System method for use of hardware semaphores for resource release notification wherein messages comprises read-modify-write operation and address
CA2468797C (en) Supercharge message exchanger
US6078970A (en) System for determining adapter interrupt status where interrupt is sent to host after operating status stored in register is shadowed to host memory
US5682551A (en) System for checking the acceptance of I/O request to an interface using software visible instruction which provides a status signal and performs operations in response thereto
JPH0772889B2 (ja) 情報処理システム
JPH077374B2 (ja) インタフェース回路
US7610451B2 (en) Data transfer mechanism using unidirectional pull bus and push bus
JPS62206658A (ja) 記憶管理装置
US7007126B2 (en) Accessing a primary bus messaging unit from a secondary bus through a PCI bridge
JP2822782B2 (ja) シングルチップマイクロコンピュータ
US6216193B1 (en) Apparatus and method in a network interface for recovering from complex PCI bus termination conditions
JP2806700B2 (ja) マルチ・プロセッシング・システム
JPH07141287A (ja) バス制御方式
JP2954006B2 (ja) エミュレーション装置およびエミュレーション方法
JPH02190956A (ja) メツセージ・バツフア・システム
JPH1145209A (ja) プログラム転送システム
JPH0654488B2 (ja) プロセツサ
JPH058462B2 (ko)
JPH0570182B2 (ko)
JPH04338859A (ja) コンピュータ装置
JPH03136151A (ja) メモリ二重書き込み方式
JPH0247751A (ja) チャネル制御方式
JPS6215903B2 (ko)
JPS62239242A (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: 20161124

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20171127

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20181123

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20191127

Year of fee payment: 7