KR101816970B1 - 비경쟁 메모리 장치 - Google Patents

비경쟁 메모리 장치 Download PDF

Info

Publication number
KR101816970B1
KR101816970B1 KR1020147017494A KR20147017494A KR101816970B1 KR 101816970 B1 KR101816970 B1 KR 101816970B1 KR 1020147017494 A KR1020147017494 A KR 1020147017494A KR 20147017494 A KR20147017494 A KR 20147017494A KR 101816970 B1 KR101816970 B1 KR 101816970B1
Authority
KR
South Korea
Prior art keywords
memory
access
memory blocks
group
access ports
Prior art date
Application number
KR1020147017494A
Other languages
English (en)
Other versions
KR20140102718A (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 KR20140102718A publication Critical patent/KR20140102718A/ko
Application granted granted Critical
Publication of KR101816970B1 publication Critical patent/KR101816970B1/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/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
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/02Detection or location of defective auxiliary circuits, e.g. defective refresh counters
    • G11C29/023Detection or location of defective auxiliary circuits, e.g. defective refresh counters in clock generator or timing circuitry
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/02Detection or location of defective auxiliary circuits, e.g. defective refresh counters
    • G11C29/028Detection or location of defective auxiliary circuits, e.g. defective refresh counters with adaption or trimming of parameters
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C5/00Details of stores covered by group G11C11/00
    • G11C5/02Disposition of storage elements, e.g. in the form of a matrix array
    • G11C5/04Supports for storage elements, e.g. memory modules; Mounting or fixing of storage elements on such supports

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Static Random-Access Memory (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Information Transfer Systems (AREA)
  • Dram (AREA)

Abstract

메모리 장치(200)는 복수의 메모리 블록들(208), 제 1 그룹의 액세스 포트들(204), 및 제 2 그룹의 액세스 포트들(206)을 포함한다. 라우팅 회로(209)는 복수의 메모리 블록들의 개개의 메모리 블록에 제 1 그룹의 액세스 포트들 및 제 2 그룹의 액세스 포트들의 각 쌍을 결합한다. 각 쌍은 제 1 그룹으로부터의 제 1 액세스 포트 및 제 2 그룹으로부터의 제 2 액세스 포트를 포함한다. 제 1 액세스 포트는 개개의 메모리 블록의 제 1 부분에의 기록 액세스를 갖지만, 그 메모리 블록의 제 2 부분에의 기록 액세스를 갖지 않고, 제 2 부분에의 판독 액세스를 갖지만, 제 1 부분에의 판독 액세스를 갖지 않는다. 제 2 액세스 포트는 제 2 부분에의 기록 액세스를 갖지만, 제 1 부분에의 기록 액세스를 갖지 않고, 제 1 부분에의 판독 액세스를 갖지만, 제 2 부분에의 판독 액세스를 갖지 않는다.

Description

비경쟁 메모리 장치{CONTENTION-FREE MEMORY ARRANGEMENT}
하나 이상의 실시예들은 일반적으로 데이터 저장 및 검색에 관한 것이다.
많은 네트워크 디바이스들은 하나의 프로토콜 포맷으로부터 다른 포맷으로 데이터를 바꾸거나, 데이터를 라우팅하거나, 또는 다른 처리를 수행하기 위해 브리지 인터페이스(bridge interface)를 포함한다. 예를 들어, 브리지 인터페이스는 네트워크들 사이에서 데이터 패킷 포맷들을 변환하도록 구현될 수 있다.
다른 예로서, 브리지 인터페이스는 네트워크와 컴퓨팅 시스템 사이에서 데이터 포맷을 바꾸는데 이용될 수 있다. 설명의 용이함을 위해, 실시예들 및 예제들은 주로 광 네트워크와 이에 접속된 컴퓨팅 시스템 사이에 인터페이스를 제공하도록 구성된 네트워크 브리지를 참조하여 기술된다.
설계 및 디버깅에 요구되는 시간 및 투자를 줄이기 위해, 브리지 인터페이스는 프로그램가능한 집적 회로(integrated circuit; IC)를 이용하여 구현될 수 있고, 이는 회로 설계를 구현하기 위해 구성될 수 있는 다수의 로직 및 라우팅 자원을 포함한다. 프로그램가능한 IC는 ASIC(application specific IC)와 같은 회로 설계를 실현하지 않고, 회로 설계가 구현되고, 테스트되고, 수정될 수 있도록 한다. 이런 식으로, 개발 시간 및 비용이 감소될 수 있다.
브리지 인터페이스는 대개 효율적인 처리를 위해 메모리에 데이터 패킷을 버퍼링한다. 종래의 브리지 인터페이스는 데이터 버퍼링을 구현하기 위해 오프-칩 메모리(예컨대, DRAM)를 이용한다. 그러나, 광 네트워크에서 이용되는 것과 같은 높은 전송 속도 애플리케이션(예컨대, 400 Gbps 양방향 통신)의 경우, 메모리에 대한 액세스 충돌에 의해 제기된 처리량의 감소를 보상하기 위한 프로그램가능한 IC 패키지의 핀이 대개 충분하지 못하다.
하나 이상의 실시예들은 상기 문제들 중 하나 이상을 다룰 수 있다.
메모리 장치의 하나의 실시예는 복수의 메모리 블록들, 제 1 그룹의 액세스 포트들, 및 제 2 그룹의 액세스 포트들을 포함할 수 있다. 라우팅 회로는 복수의 메모리 블록들의 개개의 메모리 블록에 제 1 그룹의 액세스 포트들 및 제 2 그룹의 액세스 포트들의 각 쌍을 결합할 수 있다. 각 쌍의 액세스 포트들은 제 1 그룹으로부터의 제 1 액세스 포트 및 제 2 그룹으로부터의 제 2 액세스 포트를 포함할 수 있다. 제 1 액세스 포트는 복수의 메모리 블록들의 개개의 메모리 블록의 제 1 부분에의 기록 액세스를 가질 수 있지만, 그 메모리 블록의 제 2 부분에의 기록 액세스를 갖지 않고, 그 메모리 블록의 제 2 부분에의 판독 액세스를 가질 수 있지만, 그 메모리 블록의 제 1 부분에의 판독 액세스를 갖지 않는다. 제 2 액세스 포트는 개개의 메모리 블록의 제 2 부분에의 기록 액세스를 가질 수 있지만, 그 메모리 블록의 제 1 부분에의 기록 액세스를 갖지 않고, 그 메모리 블록의 제 1 부분에의 판독 액세스를 가질 수 있지만, 그 메모리 블록의 제 2 부분에의 판독 액세스를 갖지 않는다.
이 실시예에서, 복수의 메모리 블록들 각각의 각각 제 1 부분은 이그레스 데이터(egress data)를 버퍼링하는데 배타적으로 이용될 수 있고, 복수의 메모리 블록들 각각의 각각 제 2 부분은 인그레스 데이터(ingress data)를 버퍼링하는데 배타적으로 이용될 수 있다. 복수의 메모리 블록들은 복수의 적층된 반도체 다이들 상에 구현될 수 있다. 복수의 메모리 블록들 각각은 복수의 적층된 반도체 다이들의 개개의 반도체 다이 상에 구현될 수 있다.
이 실시예에서, 메모리 장치는 인터포저를 더 포함할 수 있고, 복수의 적층된 반도체 다이들은 인터포저의 전측 상의 콘택에 전기적으로 결합될 수 있다. 복수의 메모리 블록들 각각은 2개의 메모리 슬라이스들을 포함할 수 있다. 라우팅 회로는 복수의 메모리 블록들과 제 1 그룹의 액세스 포트들 및 제 2 그룹의 액세스 포트들 사이의 하나 이상의 경로 상의 타이밍을 조정하도록 구성가능한 프로그램가능한 지연 회로를 포함할 수 있다. 하나 이상의 경로들 중 최소 레이턴시를 나타내는 경로에 대한 타이밍은 조정되지 않는다. 프로그램가능한 지연 회로는 복수의 MUX 선택가능한 경로들을 포함할 수 있고, 복수의 MUX 선택가능한 경로들 각각은 상이한 수의 플립플롭들을 포함할 수 있다. 복수의 메모리 블록들 각각에 대해, 각각의 메모리 블록의 제 1 부분 및 제 2 부분은 전체 수의 메모리 뱅크들을 포함할 수 있다.
이 실시예에서, 라우팅 회로는 복수의 메모리 블록들 및 제 1 그룹의 액세스 포트들 및 제 2 그룹의 액세스 포트들에 결합된 크로스바 스위치를 포함할 수 있고, 이 크로스바 스위치는 헤드 오브 라인 블록킹(head-of-line blocking)을 줄이기 위해, 메모리 블록들의 순차적 액세스가 발생할 수 있는 속도보다 더욱 큰 속도로 클로킹될 수 있다. 복수의 메모리 블록들 및 라우팅 회로는, 각각의 메모리 블록에 대해, 구성 비트스트림에 응답하여, 개개의 제 1 부분에 포함된 메모리 블록의 양 및 개개의 제 2 부분에 포함된 메모리 블록의 양을 조정하도록 구성될 수 있다. 이 실시예에서, 복수의 메모리 블록들 각각은, 복수의 메모리 뱅크들을 포함할 수 있고, 각각의 메모리 뱅크는 하나 이상의 액세스 포트들을 가질 수 있으며, 각각의 메모리 뱅크에 대해, 개개의 선택 회로는 구성 비트스트림에 의해 지시되는 제 1 그룹의 액세스 포트들 및 제 2 그룹의 액세스 포트들의 대응 쌍 중에 하나의 액세스 포트로부터의 판독 요청을 메모리 뱅크의 하나 이상의 액세스 포트들에 포워딩하도록 구성될 수 있고, 제 1 그룹의 액세스 포트들 및 제 2 그룹의 액세스 포트들의 대응 쌍 중에 다른 액세스 포트로부터의 기록 요청을 메모리 뱅크의 하나 이상의 액세스 포트들에 포워딩하도록 구성될 수 있다.
네트워크 인터페이스 회로의 실시예는 네트워크 측의 직렬화기/병렬화기(serializer/deserializer; SerDer) 회로, 네트워크 측의 SerDes 회로에 결합된 제 1 그룹의 액세스 포트들, 시스템 측의 SerDes 회로, 및 시스템 측의 SerDes 회롤에 결합된 제 2 그룹의 액세스 포트들을 포함할 수 있다. 복수의 메모리 블록들 및 라우팅 회로가 반도체 다이들의 스택 상에 포함될 수 있다. 라우팅 회로는 제 1 그룹의 액세스 포트들 및 제 2 그룹의 액세스 포트들에 복수의 메모리 블록들을 결합할 수 있다. 각각의 메모리 블록에 대해, 개개의 제 1 액세스 포트는 메모리 블록의 제 1 부분에의 기록 액세스를 가질 수 있지만, 메모리 블록의 제 2 부분에의 기록 액세스를 갖지 않고, 메모리 블록의 제 2 부분에의 판독 액세스를 가질 수 있지만, 메모리 블록의 제 1 부분에의 판독 액세스를 갖지 않는다. 제 2 액세스 포트는 개개의 메모리 블록의 제 2 부분에의 기록 액세스를 가질 수 있지만, 메모리 블록의 제 1 부분에의 기록 액세스를 갖지 않고, 메모리 블록의 제 1 부분에의 판독 액세스를 가질 수 있지만, 메모리 블록의 제 2 부분에의 판독 액세스를 갖지 않는다.
이 실시예에서, 라우팅 회로는 메모리 블록들의 순차적 액세스가 발생할 수 있는 속도의 2배보다 큰 속도로 클로킹되는 크로스바 스위치를 포함할 수 있다. 각각의 메모리 블록의 각각의 제 1 부분은 이그레스 데이터를 버퍼링하는데 배타적으로 이용될 수 있고; 각각의 메모리 블록의 각각의 제 2 부분은 인그레스 데이터를 버퍼링하는데 배타적으로 이용될 수 있다. 각각의 메모리 블록에 대해, 각각의 메모리 블록의 제 1 부분 및 제 2 부분은 전체 수의 메모리 뱅크들을 포함할 수 있다.
브리지 인터페이스 회로의 실시예는 제 1 데이터 포맷의 데이터를 수신 및 송신하도록 구성된 제 1 트랜시버 회로를 포함할 수 있다. 제 2 트랜시버 회로는 제 2 포맷의 데이터를 수신 및 송신하도록 구성될 수 있다. 변환 회로는 제 1 트랜시버 회로 및 제 2 트랜시버 회로에 결합될 수 있다. 변환 회로는 제 1 포맷으로부터 제 2 포맷으로 데이터를 변환하고, 제 2 포맷으로부터 제 1 포맷으로 데이터를 변환하도록 구성될 수 있다. 메모리 회로는 변환 회로에 결합될 수 있다. 메모리 회로는 복수의 메모리 블록들, 제 1 그룹의 액세스 포트들, 제 2 그룹의 액세스 포트들, 및 복수의 메모리 블록들의 개개의 메모리 블록에 제 1 그룹의 액세스 포트들 및 제 2 그룹의 액세스 포트들의 각 쌍을 결합하는 라우팅 회로를 포함할 수 있다. 제 1 그룹의 액세스 포트들 및 제 2 그룹의 액세스 포트들의 각 쌍의 액세스 포트들은 제 1 그룹의 액세스 포트들로부터의 제 1 액세스 포트 및 제 2 그룹의 액세스 포트들로부터의 제 2 액세스 포트를 포함할 수 있다. 각각의 제 1 액세스 포트는 복수의 메모리 블록들의 개개의 메모리 블록의 제 1 부분에의 기록 액세스를 가질 수 있지만, 메모리 블록의 제 2 부분에의 기록 액세스를 갖지 않고, 메모리 블록의 제 2 부분에의 판독 액세스를 가질 수 있지만, 메모리 블록의 제 1 부분에의 판독 액세스를 갖지 않는다. 각각의 제 2 액세스 포트는 개개의 메모리 블록의 제 2 부분에의 기록 액세스를 가질 수 있지만, 메모리 블록의 제 1 부분에의 기록 액세스를 갖지 않고, 메모리 블록의 제 1 부분에의 판독 액세스를 가질 수 있지만, 메모리 블록의 제 2 부분에의 판독 액세스를 갖지 않는다.
이 실시예에서, 변환 회로는, 오직 제 1 포트 그룹을 통해서 제 1 트랜시버 회로와 메모리 회로 사이에 데이터를 라우팅하고, 오직 제 2 포트 그룹을 통해서 제 2 트랜시버 회로와 메모리 회로 사이에 데이터를 라우팅하도록 구성될 수 있다. 제 1 포트 그룹은 제 2 포트 그룹보다 제 1 트랜시버에 가깝게 위치될 수 있고, 제 2 포트 그룹은 제 1 포트 그룹보다 제 2 트랜시버에 가깝게 위치될 수 있다.
방법의 실시예는, 복수의 메모리 블록들의 개개의 메모리 블록에 제 1 그룹의 액세스 포트들 및 제 2 그룹의 액세스 포트들의 각 쌍을 결합하는 단계(제 1 그룹의 액세스 포트들 및 제 2 그룹의 액세스 포트들의 각 쌍은 제 1 그룹의 액세스 포트들로부터의 제 1 액세스 포트 및 제 2 그룹의 액세스 포트들로부터의 제 2 액세스 포트를 포함할 수 있음); 복수의 메모리 블록들의 개개의 메모리 블록의 제 1 부분에의 기록 액세스를 갖고, 복수의 메모리 블록들의 개개의 메모리 블록의 제 2 부분에의 판독 액세스를 갖도록 제 1 그룹의 액세스 포트들 각각을 구성하는 단계; 복수의 메모리 블록들의 개개의 메모리 블록의 제 1 부분에의 판독 액세스를 갖지 않고, 복수의 메모리 블록들의 개개의 메모리 블록의 제 2 부분에의 기록 액세스를 갖지 않도록 제 1 그룹의 액세스 포트들 각각을 구성하는 단계; 복수의 메모리 블록들의 개개의 메모리 블록의 제 2 부분에의 기록 액세스를 갖고, 복수의 메모리 블록들의 개개의 메모리 블록의 제 1 부분에의 판독 액세스를 갖도록 제 2 그룹의 액세스 포트들 각각을 구성하는 단계; 및 복수의 메모리 블록들의 개개의 메모리 블록의 제 2 부분에의 판독 액세스를 갖지 않고, 복수의 메모리 블록들의 개개의 메모리 블록의 제 1 부분에의 기록 액세스를 갖지 않도록 제 2 그룹의 액세스 포트들 각각을 구성하는 단계를 포함할 수 있다.
이 방법의 실시예는, 각각의 메모리 블록에 대해, 구성 비트스트림에 응답하여, 개개의 제 1 부분에 포함된 메모리 블록의 양 및 개개의 제 2 부분에 포함된 메모리 블록의 양을 조정하는 단계를 더 포함할 수 있다.
다른 실시예들이 상세한 설명 및 특허청구 범위의 고려로 인식될 것이다.
본 발명에 따르면, 비경쟁 메모리 장치를 제공하는 것이 가능하다.
개시된 실시예들의 다양한 양태들 및 장점들이 다음의 상세한 설명을 보고 도면들을 참조하여 명백해질 것이다.
도 1은 하나 이상의 실시예들에 따라 프로그램가능한 IC로 구현된 네트워크 인터페이스의 블록도를 도시한다.
도 2는 메모리 아키텍처의 블록도를 도시한다.
도 3은 인그레스 데이터 및 이그레스 데이터를 위해 개개의 그룹의 메모리 뱅크들로 분할된 메모리 블록을 도시한다.
도 4는 분할된 메모리 슬라이스의 메모리 뱅크들의 판독 포트/기록 포트에 대한 액세스를 제어하도록 구성될 수 있는 회로의 블록도를 도시한다.
도 5는 하나 이상의 실시예들에 따라 포트 그룹과 메모리 사이에 데이터를 라우팅하는데 이용될 수 있는 라우팅 회로의 블록도를 도시한다.
도 6은 하나 이상의 실시예들에 따라 집적 회로에 결합될 수 있는 인터포저 상에 적층된 복수의 다이들을 이용하여 구현된 메모리 장치의 측면도를 도시한다.
도 7은 하나 이상의 실시예들에 따라 구성될 수 있는 예시적인 프로그램가능한 IC를 도시한다.
고속 브리지 인터페이스 애플리케이션의 경우, 대개 메모리의 액세스 충돌로 인한 처리량의 감소를 보상하기 위한 프로그램가능한 IC 패키지의 이용 가능한 핀이 충분하지 못하다. 그러나, 브리지 인터페이스에 대한 메모리 용량 요건은 일반적으로 현재의 처리 기술을 이용하여 프로그램가능한 IC 패키지 내에 메모리가 통합될 수 있도록 충분히 낮다(예컨대, 1 GB 내지 2 GB). 이전의 브리지 인터페이스 구현은 액세스 충돌을 피하기 위해 메모리 액세스를 중재하기 위한 제어 로직을 이용한다. 그러나, 프로그램가능한 IC에 이와 같은 제어 로직을 구현하는 것은 많은 프로그램가능한 자원을 요구하여, 이에 의해 브리지 인터페이스의 로직을 구현하는데 이용 가능한 프로그램가능한 자원의 수가 감소한다. 하나 이상의 실시예들은 충돌 없는 효율적인 메모리 장치를 제공한다. 시스템이 충돌이 없기 때문에, 프로그램가능한 자원이 중재 회로를 구현하는데 요구되지 않는다.
하나 이상의 실시예들에서, 충돌 없는 메모리 액세스를 위한 메모리 장치가 제공된다. 메모리 장치는 중재가 필요하지 않도록 특정한 메모리 어드레스에 대한 액세스를 지시하기 위한 효율적인 라우팅 시스템을 구현한다.
도 1은 하나 이상의 실시예들에 따라 프로그램가능한 IC로 구현된 브리지 인터페이스의 블록도를 도시한다. 이 예에서, 네트워크 브리지 인터페이스(100)는 프로그램가능한 IC(102)를 이용하여 구현된다. 프로그램가능한 IC(102)는 네트워크에 의해 이용되는 제 1 프로토콜 포맷의 데이터를 송신 및 수신하기 위한 제 1 세트의 직렬화기/병렬화기(SerDes) 트랜시버 회로(106), 및 시스템에 의해 이용되는 제 2 프로토콜 포맷의 데이터를 송신 및 수신하기 위한 제 2 세트의 SerDes 트랜시버 회로(110)를 포함한다. 참조의 용이함을 위해, 시스템 측으로의 송신을 위해 네트워크로부터 수신된 데이터는 인그레스 데이터로서 언급될 수 있고, 네트워크로의 송신을 위해 시스템으로부터 수신된 데이터는 이그레스 데이터로 언급될 수 있다. 이 예에서, 회살표(120 및 122)는 인그레스 메모리 버퍼(104A)를 통한 인그레스 데이터 플로우를 도시한다. 회살표(124 및 126)는 이그레스 메모리 버퍼(104B)를 통한 이그레스 데이터 플로우를 도시한다. 프로그램가능한 자원(108)은 제 1 프로토콜 포맷과 제 2 프로토콜 포맷 사이에 데이터를 변환하고 개개의 메모리 버퍼들(104A 및 104B)에 대해 인그레스 데이터 및 이그레스 데이터를 라우팅하는 변환 회로(109)를 구현하는데 이용된다.
도 2는 하나 이상의 실시예들에 따라 브리지 인터페이스 회로를 구현하는데 이용될 수 있는 메모리 아키텍처(200)의 블록도를 도시한다. 네트워크로부터 수신되고 네트워크로 향하는 데이터는 제 1 포트 그룹(204)(포트 그룹 A)을 통해 메모리(208)에 기록되고 메모리(208)로부터 판독되며, 시스템으로부터 수신되고 시스템으로 향하는 데이터는 제 2 포트 그룹(206)(포트 그룹 B)을 통해 메모리에 기록되고 메모리로부터 판독된다. 메모리 아키텍처는 2개의 포트 그룹들의 포트들을 쌍으로 구성하고, 메모리의 개개의 분할에 대한 각 쌍의 메모리 액세스를 제한한다. 이 예에서, 메모리는 4개의 메모리 블록들로 분할되고, 각각의 메모리 블록은 한 쌍의 메모리 슬라이스를 포함한다. 예를 들어, 라우팅 회로(209)는 오직 포트 1A 및 포트 1B 만이 메모리 슬라이스 1A 및 메모리 슬라이스 1B로 구성된 제 1 메모리 블록에 액세스할 수 있도록 구성된다. 다른 예로서, 오직 포트 2A 및 포트 2B 만이 메모리 슬라이스 2A 및 메모리 슬라이스 2B로 구성된 제 2 메모리 블록에 액세스할 수 있다. 각각의 포트 그룹 쌍의 경우, 인그레스 데이터는 대응하는 블록의 메모리 슬라이스들 중 제 1 메모리 슬라이스를 이용하여 처리되고, 이그레스 데이터는 이 블록의 메모리 슬라이스들 중 제 2 메모리 슬라이스를 이용하여 처리된다. 예를 들어, 한 구현예에서, 포트 1A 및 포트 1B를 포함하는 포트 그룹 쌍의 경우, 인그레스 데이터는 메모리 슬라이스 1A를 이용하여 처리되고, 이그레스 데이터는 메모리 슬라이스 1B를 이용하여 처리된다. 메모리 블록의 각각의 슬라이스가 포트 그룹 쌍(예컨대, 1A 및 1B) 중 한 포트에 배타적인 기록 액세스를 제공하고 다른 포트에 배타적인 판독 액세스를 제공하도록 구현되는 한, 인그레스 데이터 및 이그레스 데이터는 데이터 블록의 상이한 부분(즉, 상이한 메모리 슬라이스)을 이용하여 처리되어 포트 그룹 쌍의 포트들이 메모리의 부분에 판독 액세스 또는 기록 액세스를 위해 경쟁하는 것을 방지할 수 있다. 이런 식으로, 인그레스 데이터 및 이그레스 데이터는 충돌 없는 방식으로 처리될 수 있다.
상기 예는 각각의 메모리 블록을 인그레스 데이터를 위한 하나의 슬라이스 및 이그레스 데이터를 위한 하나의 슬라이스로 분할하였지만, 하나 이상의 실시예들에서, 각각의 메모리 블록은 인그레스 데이터 및 이그레스 데이터를 위해 상이한 양의 메모리를 이용하도록 분할될 수 있다는 것을 인식한다. 예를 들어, 많은 애플리케이션에서, 인그레스 데이터 버퍼링은 혼잡을 완화시키기 위해 이그레스 데이터 버퍼링보다 더욱 많은 메모리를 요구할 수 있다. 도 3은 하나 이상의 실시예들에 따라 인그레스 데이터 및 이그레스 데이터를 위해 개개의 그룹의 메모리 뱅크들로 분할된 메모리 블록을 도시한다. 메모리 블록(302) 및 메모리 블록(304)은 메모리 블록들의 다소 상이한 분할 장치를 나타낸다. 이 예에서, 각각의 메모리 블록(302 및 304)은 0x000000에서 0xFFFFFF에 이르는 어드레스 공간을 함께 포함하는 2개의 개개의 메모리 슬라이스들(예컨대, 슬라이스 1A 및 1B)을 포함한다.
각각의 메모리 슬라이스(예컨대, 슬라이스 1A)는 독립적으로 액세스될 수 있는 4개의 메모리 뱅크들(예컨대, 뱅크 5 내지 8)을 포함한다. 예를 들어, 각각의 뱅크는 다중 포트 메모리(예컨대, 1-판독 1-기록 메모리)일 수 있다. 메모리 블록들(302 및 304)은 메모리 뱅크들 사이의 임의의 어드레스 경계에서 분할될 수 있다. 오른쪽 방향 화살표는 인그레스 데이터에 이용되는 메모리 뱅크들을 나타내고, 왼족 방향 화살표는 이그레스 데이터에 이용되는 메모리 뱅크들을 나타낸다. 이 예에서, 메모리 블록들(302 및 304) 각각은 이그레스 데이터를 위한 2개의 메모리 뱅크들 및 인그레스 데이터를 위한 6개의 메모리 뱅크들을 할당하도록 분할된다. 메모리 블록(302)은 경계(306)에서 2개의 연속적인 그룹의 메모리 뱅크들로 분할된다. 경계(306) 아래의 어드레스는 인그레스 데이터에 이용되고, 경계 위의 어드레스는 이그레스 데이터에 이용된다. 다른 실시예에서, 메모리 블록들은 메모리 뱅크들 사이에서 다른 식으로 분할될 수 있다. 예를 들어, 메모리 블록(304)에 예시된 바와 같이, 메모리 슬라이스 2B의 뱅크 1 내지 3 및 메모리 슬라이스 2A의 뱅크 5,6 및 8은 인그레스 데이터용이고, 메모리 슬라이스 2B의 뱅크 4 및 메모리 슬라이스 2A의 뱅크 7은 이그레스 데이터용이다.
각각의 메모리 블록을 구현하는데 이용되는 메모리 회로는 메모리 회로의 메모리 셀로부터 판독 또는 메모리 셀에 기록하는데 이용될 수 있는 다수의 포트들을 갖는다는 것을 이해한다. 포트 그룹 A 및 포트 그룹 B의 포트들로부터 개별 메모리 회로들의 포트들을 구별하기 위해, 메모리 회로들의 포트들은 내부 포트로 언급될 수 있다. 분할된 슬라이스에 배타적 판독 및 기록 액세스를 제공하기 위해서, 각각의 슬라이스는 2개의 내부 기록 포트들로 구현되고, 하나하나는 포트 그룹(예컨대, 포트 그룹 A 및 포트 그룹 B)의 각각의 포트를 위한 것이다. 이것은 경쟁 없이, 포트 그룹 A로부터의 포트가 슬라이스의 제 1 분할에 데이터를 기록하고, 포트 그룹 B로부터의 포트가 슬라이스의 제 2 분할에 데이터를 기록하도록 할 수 있다. 마찬가지로, 각각의 슬라이스는 2개의 내부 판독 포트들을 갖는다. 메모리 슬라이스를 구현하는데 이용되는 메모리의 판독 및 기록 내부 포트의 구성에 따라, 각각의 메모리 슬라이스는 2개의 내부 포트들을 가질 수 있고, 각각의 내부 포트는 판독 및 기록이 가능하거나("2RW"); 각각의 메모리 슬라이스는 2개의 전용 판독 포트 및 2개의 전용 기록 포트를 가질 수 있다("2R2W").
하나 이상의 실시예들에서, 메모리 슬라이스들은 특정 애플리케이션의 요건에 따라 인그레스 부분 및 이그레스 부분으로 동적으로 분할될 수 있다. 예를 들어, 각각의 슬라이스의 메모리 뱅크들은 1R1W 메모리일 수 있다. 각각의 뱅크의 내부 판독 포트 및 내부 기록 포트는 하나의 포트 그룹에 의해 판독되고 다른 포트 그룹에 의해 기록되도록 독립적으로 프로그램될 수 있다. 이와 같은 설정성은 양자의 포트 그룹들로부터의 판독 및 기록 어드레스의 프로그램가능한 접속(예컨대, 슬라이스의 내부 포트들)을 슬라이스의 모든 뱅크들의 내부 포트들에 요구한다.
도 4는 분할된 메모리 슬라이스의 메모리 뱅크 대한 판독 액세스를 제어하도록 구성될 수 있는 회로의 블록도를 도시한다. 각각의 메모리 뱅크에 대한 기록 액세스는 유사한 방식으로 구현될 수 있다. 이 예에서, 각각의 뱅크(예컨대, 402)는 판독 인에이블(RE) 제어 입력 및 판독 어드레스(RA) 입력을 갖는다. RE 입력은 2:1 멀티플렉서(예컨대, 406)의 출력에 결합된다. 멀티플렉서(406)는 구성 신호(예컨대, Config[0])에 기초하여 개개의 뱅크에 입력하기 위한 인에이블 신호를 선택한다. 포트 1A의 포트로부터의 판독 요청 신호 및 포트 1B로부터의 판독 요청 신호에 응답하여, 2:1 멀티플렉서(406)에 대한 2개의 입력이 있다. 멀티플렉서에 대한 선택 입력은 정적 신호(Config[0] 또는 생략하여 "Config")이고, 이것은 이 뱅크가 포트 1A 또는 포트 1B에 의해 판독되어야 하는지의 여부를 선택한다. Config 신호는 초기화 동안에 (예컨대, FPGA 구성 비트 스트림의 일부로서) 설정된다. 판독 어드레스(예컨대, RAddr_P1A 또는 RAddr_P1B)의 뱅크 어드레스(BA)가 개개의 뱅크(예컨대, 402)의 뱅크 어드레스인 경우에만, AND 게이트(408)는 멀티플렉서(406)에 포트 1A 및 포트 1B에 대응하는 인에이블 신호(RE_P1A 및 RE_P1B)를 포워딩한다.
뱅크(402)에 대한 판독 어드레스 포트는 멀티플렉서(404)에 의해 유사하게 멀티플렉싱된다. 멀티플렉서(404)는 Config 신호에 기초하여 어드레스 신호(예컨대, RAddr_P1A 또는 RAddr_P1B)를 선택한다. 예를 들어, Config[0]가 0인 것에 응답하여, 뱅크(402)는 오직 포트 1A에 의해서만 판독 가능하고 포트 1B에 의해서는 판독 가능하지 않으며, Config[0]가 1인 것에 응답하여, 뱅크(402)는 오직 포트 1B에 의해서만 판독 가능하고, 포트 1A에 의해서는 판독 가능하지 않다. 이러한 선택 신호는 불법적인 판독 어드레스를 효과적으로 무시한다. 유사한 로직이 액세스 위반을 검출하고, 오류 신호를 발생시키기 위해 이용될 수 있다. 오류 신호는 판독/기록 요청이 메모리에 대한 거부된 액세스였음을 외부 회로, 예컨대, 메모리 제어기에 시그널링하기 위해 이용될 수 있다.
하나 이상의 실시예들에서, 각 쌍의 포트들(예컨대, 도 2의 포트 1A 및 1B)의 메모리 블록의 메모리 액세스는, 각 쌍의 포트들에 대한 라우팅 시스템을 구현함으로써 실행된다. 도 5는 하나 이상의 실시예들에 따라 메모리 슬라이스 1A 및 메모리 슬라이스 1B를 갖는 메모리 블록(506)과 한 쌍의 포트들(506) 사이에 데이터를 라우팅하는데 이용될 수 있는 라우팅 회로(504)의 블록도를 도시한다. 라우팅 회로(504)는 버터플라이 레이아웃으로 구성되고, 이 레이아웃에서, 판독 경로 및 기록 경로는 한 쌍의 포트들(502)의 각각의 포트로부터 메모리 블록(506)의 각각의 분할(예컨대, 슬라이스 1A 및 1B)로 제공된다.
메모리를 통해 포트들 사이에 인그레스 데이터 또는 이그레스 데이터를 라우팅하는 것은, 각각의 신호 경로의 길이에 따라 상이한 양의 지연을 발생시킬 수 있다. 예시를 목적으로, 점선의 플립플롭들(516, 518, 522, 524, 526, 및 528)이 도 5에 제공되어 메모리 슬라이스 1A를 통한 경로에 대한 지연을 시각적으로 나타낸다. 라우팅 회로는 실제로 이러한 플립플롭들을 포함하지 않는다는 것을 이해하여야 한다. 오히려, 각각의 점선의 플립플롭은 1 클록 사이클의 신호 전파 지연을 나타낸다. 유사하게, 메모리 슬라이스 1B를 통한 경로에 대한 지연은 점선의 플립플롭들(542, 544, 546, 548, 550, 및 552)에 의해 도시된다. 직교 경로는 이 예에서 더욱 길기 때문에, 더욱 많은 지연이 발생한다. 보정되지 않으면, 경로 길이의 차이는 2개의 상이한 메모리 위치로부터 판독된 데이터가 한 쌍의 포트들(502) 중 포트 1A에 동시에 도달하게 하여 충돌을 일으키거나, 잘못된 순서로 도달하게 할 수 있다. 예를 들어, 메모리 슬라이스 1A가 액세스 포트(502)에 가까이 위치되면, 메모리 슬라이스 1B는 액세스 포트(502)로부터 더욱 먼 거리에 위치된다. 제 1 인그레스 데이터 패킷이 기록되고, 그런 다음 메모리 슬라이스 1B로부터 판독되며(예컨대, 긴 신호 경로를 통한 기록 및 판독), 다음 인그레스 데이터 패킷이 기록되고 그런 다음 메모리 슬라이스 1A로부터 판독되면(예컨대, 짧은 신호 경로를 통한 기록 및 판독), 제 2 인그레스 데이터 패킷이 제 1 인그레스 데이터 패킷 전에 출력될 수 있다.
충돌 및 뒤바뀐 순서의 데이터를 피하기 위해, 한 쌍의 액세스 포트들(502) 사이의 각각의 인그레스 경로 및 이그레스 경로는 인그레스 경로 및 이그레스 경로의 지연을 조정하고 지연 편차를 줄이기 위해 프로그램가능한 지연 회로를 포함할 수 있다. 이 예에서, 2개의 멀티플렉서(MUX) 선택가능 경로들(예컨대, 510 및 560)은 프로그램가능한 지연 회로 각각을 구현한다. 각각의 인그레스 경로 및 이그레스 경로의 경우, 라우팅 회로(504)는 보정에 이용될 수 있는 추가적인 지연을 제공하기 위한 플립플롭(560, 562, 564, 및 566)을 포함한다. 개개의 MUX(570, 572, 574, 및 578)는 개개의 제어 신호(지연 조정 1 내지 4)에 의해 지시된 바와 같이 MUX 선택가능한 경로들 중 하나의 경로로부터의 데이터를 라우팅한다. 이런 식으로, 다양한 경로들의 전파 지연의 변화가 보상될 수 있다.
도 5에 도시된 라우팅 회로(504)는 앞서 논의된 바와 같이 메모리 액세스 충돌을 피하기 위해 메모리 블록(506)과 액세스 포트들(502) 사이에 고정된 라우팅을 구현한다. 하나 이상의 실시예들은 크로스바 스위치와 같은 동적 라우팅 회로를 이용하여 유사한 라우팅 제한을 구현할 수 있다. 하나 이상의 실시예들에서, 다른 포트가 동일한 사이클에 동일한 메모리 어드레스에 기록하기를 시도하는 경우, 크로스바 스위치는 하나의 포트의 데이터를 라우팅하고 버퍼링하는데 이용된다. 충분한 처리량을 제공하기 위해서, 크로스바 스위치는 메모리 블록에 대한 액세스가 발생할 수 있는 속도의 적어도 2배의 속도로 클로킹될 수 있다. 액세스 충돌로 인해 데이터 패킷이 포트에서 버퍼링되면, 스위치는 다음 사이클에 임의의 새로운 데이터 패킷 및 버퍼링된 데이터 패킷을 라우팅할 수 있다(데이터 패킷은 상이한 메모리 위치에 기록될 것을 가정함). 크로스바 스위치의 밀집된 이용이 경쟁의 효과를 줄인다는 것에 관한 세부 사항이 IEEE Communication Letters, vol. 5, no. 6, pp. 269에 기재된, Sundar Iyer 및 Nick McKeown의 On the Speedup Required for a Multicast Parallel Packet Switch에 더욱 설명되고, 이는 본 명세서에 왼전히 있다.
하나 이상의 실시예들에서, 상기 예를 참조하여 논의된 바와 같은, 비경쟁 메모리 장치는 프로그램가능한 IC 상에 적층될 수 있는 하나 이상의 다이들 상에 ASIC 회로를 이용하여 구현될 수 있다. 메모리 장치가 프로그램가능한 IC와는 별도로 구현되기 때문에, 프로그램가능한 IC의 더욱 많은 프로그램가능한 자원들이 회로 설계의 구현에 이용 가능하게 남아 있다.
도 6은 하나 이상의 실시예들에 따라 집적 회로에 결합될 수 있는 인터포저 상에 적층된 복수의 다이들을 이용하여 구현된 메모리 장치의 측면도를 도시한다. 인터포저(606)는 메모리 장치(602)의 콘택를 IC(604)에 전기적으로 결합하고, IC는 메모리 장치를 액세스한다. 인터포저는 바디에 형성된 다수의 실리콘 관통 비아(through-silicon via; TSV)(612)를 갖는 인터포저 바디(610)를 포함한다. 복수의 솔더 볼 콘택(614)를 갖는 콘택 어레이가 인터포저 바디(610)의 후면 상에 형성된다. 솔더 볼 콘택(614)는 TVS들의 개개의 TSV에 결합된다. 하나 이상의 배선층들(616)이 복수의 회로 경로들을 구현하고, 이는 제 2 콘택 어레이의 개개의 콘택 패드(618)에 TSV를 결합한다. 제 2 콘택 어레이는 메모리 장치(602)의 마이크로 범프 콘택(620)에 맞춰 정렬하도록 구성된다. 인터포저가 IC(604)와 메모리 장치(602) 사이의 라우팅을 조정하도록 구현되고 용이하게 재설계될 수 있기 때문에, IC(604)의 회로는 메모리 장치(602)의 어느 마이크로 범프(620)가 어느 특정한 포트 그룹에 대응하는지에 관계없이, (IC에서) 배치 및 라우팅될 수 있다. 이것은 IC(604)의 배치 및 라우팅이 더욱 최적으로 수행될 수 있도록 할 수 있고, 메모리 장치(602)의 레이아웃이 IC(604) 상에 구현된 다양한 설계들과 함께 용이하게 이용될 수 있도록 한다. 실시예들 및 예들은 주로 IC(604)에 메모리 장치(602)를 연결하기 위해 인터포저의 이용을 참조하여 주로 기술되었지만, 메모리 장치(602)는 인터포저 없이 IC(604)에 직접적으로 결합될 수 있다는 것을 인식한다.
메모리 장치(602)의 메모리 다이들은 다수의 대안적인 구성으로 배열 및 연결될 수 있다. 예를 들어, 메모리 장치를 구현하는 다이들은 다수의 다이들의 단일 스택에 또는 하나 이상의 다이들을 갖는 다수의 스택에 배열될 수 있다. 도 6의 예에서, 메모리 장치가 2개의 스택들에 구현되는 것으로 도시된다. 도 1 내지 도 4를 참조하여 논의된 라우팅 회로는 다수의 대안적인 다이 스택 장치로 구성될 수 있다. 예를 들어, 왼쪽 스택에서, 메모리 다이들(632A 및 632B)은 라우팅 회로를 구현하는 IC 다이(630) 상에 적층된다. 라우팅이 다이(630)에 구현되기 때문에, 라우팅 회로는 상이한 구성의 메모리 다이들과 호한될 도록 구성되고 건설될 수 있다. 다른 예로서, 오른쪽 스택의 메모리 다이들(640A 및 640B) 각각은 메모리 장치(602)의 일부 메모리 블록 및 라우팅 회로를 구현한다. 각 쌍의 포트들이 메모리 블록에 대한 배타적 액세스를 갖기 때문에, 각 쌍의 포트들은 서로에 대해 독립적으로 동작한다. 그 결과, 메모리 및 상이한 포트 그룹 쌍들의 대응하는 라우팅 회로는 적층된 다이들의 상이한 다이에 구현될 수 있다.
도 7은 하나 이상의 실시예들에 따라 구성될 수 있는 예시적인 프로그램가능한 IC를 도시한다. 예시된 프로그램가능한 IC는 필드 프로그램가능한 게이트 어레이(field programmable gate array; FPGA)로서 공지된다. FPGA는 어레이 내에 여러가지 상이한 유형들의 프로그램가능한 로직 블록들을 포함할 수 있다. 예를 들어, 도 7은 멀티 기가비트 트랜시버(multi-gigabit transceiver; MGT)(701), 구성가능한 로직 블록(configurable logic block; CLB)(702), 랜덤 액세스 메모리 블록(random access memory block; BRAM)(703), 입력/출력 블록(input/output block; IOB)(704), 구성 및 클록 로직(configuration and clocking logic; CONFIG/CLOCKS)(705), 디지털 신호 프로세싱 블록(digital signal processing block; DSP)(706), 예를 들어, 클록 포트와 같은 특수화된 입력/출력 블록(input/output block; I/O)(707), 및 디지털 클록 관리기, 아날로그-디지털 컨버터, 시스템 모니터링 로직 등과 같은 다른 프로그램가능한 로직(708)을 포함한 방대한 수의 상이한 프로그램가능한 타일들을 포함하는 FPGA 아키텍처(700)를 나타낸다. 일부 FPGA는 또한 전용 프로세서 블록(processor block; PROC)(710)과 내부 및 외부 재구성 포트(도시되지 않음)를 포함한다.
일부 FPGA에서, 각각의 프로그램가능한 타일은 각각의 인접한 타일의 대응하는 상호접속 요소에 대한 표준화된 접속부들을 갖는 프로그램가능한 상호접속 요소(interconnect element; INT)(711)를 포함한다. 그러므로, 함께 취해진 프로그램가능한 상호접속 요소들은 도시된 FPGA에 대한 프로그램가능한 상호접속 구조를 구현한다. 도 7의 상단부에 포함된 예시들에 의해 도시된 바와 같이, 프로그램가능한 상호접속 요소(INT)(711)는 또한 동일 타일 내의 프로그램가능한 로직 요소에 대한 접속부들을 포함한다.
예를 들어, CLB(702)는 사용자 로직을 구현하도록 프로그램될 수 있는 구성가능한 로직 요소(configurable logic element; CLE)(712) 및 단일 프로그램가능한 상호접속 요소(INT)(711)를 포함할 수 있다. BRAM(703)은 하나 이상의 프로그램가능한 상호접속 요소들에 더하여, BRAM 로직 요소(BRAM logic element; BRL)(713)를 포함할 수 있다. 일반적으로, 타일 내에 포함된 상호접속 요소들의 수는 타일의 높이에 좌우된다. 도시된 실시예에서, BRAM 타일은 5개의 CLB와 동일한 높이를 가지지만, 다른 수(예컨대, 4개)가 또한 이용될 수 있다. DSP 타일(706)은 적절한 수의 프로그램가능한 상호접속 요소들에 더하여, DSP 로직 요소(DSP logic element; DSPL)(714)를 포함할 수 있다. IOB(704)는, 예를 들어, 프로그램가능한 상호접속 요소들(INT)(711)의 1개의 인스턴스에 더하여, 입력/출력 로직 요소(input/output logic element; IOL)(715)의 2개의 인스턴스들을 포함할 수 있다. 본 발명분야의 당업자에게 자명한 바와 같이, 예를 들어, I/O 로직 요소(715)에 연결된 실제의 I/O 패드들은 도시된 다양한 로직 블록들 위에서 층형성된 금속을 이용하여 제조되며, 이것은 일반적으로 입력/출력 로직 요소(715)의 영역으로 한정되지 않는다.
도시된 실시예에서, 다이의 중앙 부근의 컬럼 영역(도 7에 음영으로 도시됨)은 구성, 클록 및 다른 제어 로직에 이용된다. 이러한 컬럼(column)으로부터 연장된 가로 영역(709)은 FPGA의 폭에 걸쳐 클록 및 구성 신호들을 분배하는데 이용된다.
도 7에서 도시된 아키텍처를 활용한 몇몇의 FPGA들은 FPGA의 대부분을 구성하는 정규의 컬럼 구조를 분열시키는 추가적인 로직 블록들을 포함한다. 추가적인 로직 블록들은 프로그램가능한 블록들 및/또는 전용 로직일 수 있다. 예를 들어, 도 7에 도시된 프로세서 블록(PROC)(710)은 CLB 및 BRAM의 여러 컬럼들에 뻗쳐있다.
도 7은 단지 예시적인 FPGA 아키텍처를 도시하려고 의도된 것임을 주목하라. 컬럼 내의 로직 블록들의 수, 컬럼들의 상대적 폭, 컬럼들의 수 및 배열, 컬럼들 내에 포함된 로직 블록들의 유형, 로직 블록들의 상대적 크기, 및 도 7의 상단부에 포함된 상호접속/로직 구현부들은 단순히 예시적이다. 예를 들어, 실제의 FPGA에서는, 일반적으로 사용자 로직의 효율적인 구현을 촉진시키기 위해, CLB가 나타나는 곳이라면 어디라도 하나 보다 많은 인접 CLB 컬럼이 포함된다.
이 실시예들은 메모리를 이용하는 다양한 애플리케이션들에 적용 가능한 것으로 생각된다. 본 명세서의 고려로 인해 다른 양태들 및 실시예들이 당업자에게 명백할 것이다. 실시예들은 소프트웨어를 실행하도록 구성된 하나 이상의 프로세서들로서, 주문형 반도체(ASIC)으로서, 또는 프로그램가능한 로직 디바이스 상의 로직으로서 구현될 수 있다. 명세서 및 예시된 실시예들은 오직 예로서 간주되고, 발명의 진정한 범위는 다음의 특허청구 범위에 의해 지시되도록 의도된다.

Claims (15)

  1. 메모리 장치(arrangement)에 있어서,
    복수의 메모리 블록들;
    제 1 그룹의 액세스 포트들과 제 2 그룹의 액세스 포트들; 및
    상기 복수의 메모리 블록들의 개개의 메모리 블록에 상기 제 1 그룹의 액세스 포트들 및 상기 제 2 그룹의 액세스 포트들의 각각의 쌍을 결합하는 라우팅 회로 ― 상기 제 1 그룹의 액세스 포트들 및 상기 제 2 그룹의 액세스 포트들의 각각의 쌍은 상기 제 1 그룹의 액세스 포트들로부터의 제 1 액세스 포트 및 상기 제 2 그룹의 액세스 포트들로부터의 제 2 액세스 포트를 포함함 ―
    를 포함하고,
    각각의 제 1 액세스 포트는, 상기 복수의 메모리 블록들의 개개의 메모리 블록의 제 1 부분에의 기록 액세스를 갖고, 상기 복수의 메모리 블록들의 상기 개개의 메모리 블록의 제 2 부분에의 판독 액세스를 갖고, 상기 복수의 메모리 블록들의 상기 개개의 메모리 블록의 상기 제 1 부분에의 판독 액세스를 갖지 않고, 상기 복수의 메모리 블록들의 개개의 메모리 블록의 상기 제 2 부분에의 기록 액세스를 갖지 않으며,
    각각의 제 2 액세스 포트는, 상기 복수의 메모리 블록들의 개개의 메모리 블록의 상기 제 2 부분에의 기록 액세스를 갖고, 상기 복수의 메모리 블록들의 개개의 메모리 블록의 상기 제 1 부분에의 판독 액세스를 갖고, 상기 복수의 메모리 블록들의 개개의 메모리 블록의 상기 제 2 부분에의 판독 액세스를 갖지 않고, 상기 복수의 메모리 블록들의 개개의 메모리 블록의 상기 제 1 부분에의 기록 액세스를 갖지 않는 것인, 메모리 장치.
  2. 제 1 항에 있어서,
    상기 복수의 메모리 블록들 각각의 제 1 부분 각각은 이그레스 데이터(egress data)를 버퍼링하는데 배타적으로 이용되고,
    상기 복수의 메모리 블록들 각각의 제 2 부분 각각은 인그레스 데이터(ingress data)를 버퍼링하는데 배타적으로 이용되는 것인, 메모리 장치.
  3. 제 1 항 또는 제 2 항에 있어서,
    상기 복수의 메모리 블록들은 복수의 적층된 반도체 다이들 상에 구현되는 것인, 메모리 장치.
  4. 제 3 항에 있어서,
    상기 복수의 메모리 블록들 각각은 상기 복수의 적층된 반도체 다이들의 개개의 반도체 다이 상에 구현되는 것인, 메모리 장치.
  5. 제 3 항에 있어서,
    인터포저를 더 포함하고,
    상기 복수의 적층된 반도체 다이들은 상기 인터포저의 전측(front-side) 상의 콘택들에 전기적으로 결합되는 것인, 메모리 장치.
  6. 제 1 항 또는 제 2 항에 있어서,
    상기 복수의 메모리 블록들 각각은 2개의 메모리 슬라이스들을 포함하는 것인, 메모리 장치.
  7. 제 1 항 또는 제 2 항에 있어서,
    상기 라우팅 회로는, 상기 복수의 메모리 블록들과 상기 제 1 그룹의 액세스 포트들 및 상기 제 2 그룹의 액세스 포트들 사이의 하나 이상의 경로들 상의 타이밍을 조정하도록 구성가능한 프로그램가능한 지연 회로를 포함하는 것인, 메모리 장치.
  8. 제 7 항에 있어서,
    타이밍은 상기 하나 이상의 경로들 중 최소 레이턴시를 나타내는 경로에 대해서는 조정되지 않는 것인, 메모리 장치.
  9. 제 7 항에 있어서,
    상기 프로그램가능한 지연 회로는 복수의 MUX 선택가능한 경로들을 포함하고, 상기 복수의 MUX 선택가능한 경로들 각각은 상이한 수의 플립플롭들을 포함하는 것인, 메모리 장치.
  10. 제 1 항 또는 제 2 항에 있어서,
    상기 복수의 메모리 블록들 각각에 대해, 상기 메모리 블록의 제 1 부분 및 제 2 부분 각각은 전체 수의 메모리 뱅크들을 포함하는 것인, 메모리 장치.
  11. 제 1 항 또는 제 2 항에 있어서,
    상기 라우팅 회로는 상기 복수의 메모리 블록들 및 상기 제 1 그룹의 액세스 포트들 및 상기 제 2 그룹의 액세스 포트들에 결합된 크로스바 스위치를 포함하고,
    상기 크로스바 스위치는 헤드 오브 라인 블록킹(head-of-line blocking)을 줄이기 위해, 상기 메모리 블록들의 순차적 액세스가 발생할 수 있는 속도보다 더욱 큰 속도로 클로킹되는 것인, 메모리 장치.
  12. 제 1 항 또는 제 2 항에 있어서,
    상기 복수의 메모리 블록들 및 상기 라우팅 회로는, 각각의 메모리 블록에 대해, 구성 비트스트림에 응답하여, 개개의 제 1 부분에 포함된 메모리 블록의 양 및 개개의 제 2 부분에 포함된 메모리 블록의 양을 조정하도록 구성되는 것인, 메모리 장치.
  13. 제 12 항에 있어서,
    상기 복수의 메모리 블록들 각각은,
    복수의 메모리 뱅크들 ― 각각의 메모리 뱅크는 하나 이상의 액세스 포트들을 가짐 ― ; 및
    각각의 메모리 뱅크에 대해, 상기 구성 비트스트림에 의해 표시되는 상기 제 1 그룹의 액세스 포트들 및 상기 제 2 그룹의 액세스 포트들의 대응 쌍 중에 하나의 액세스 포트로부터의 판독 요청들을 상기 메모리 뱅크의 하나 이상의 액세스 포트들에 포워딩하도록 구성되고, 상기 제 1 그룹의 액세스 포트들 및 상기 제 2 그룹의 액세스 포트들의 대응 쌍 중에 다른 액세스 포트로부터의 기록 요청들을 상기 메모리 뱅크의 하나 이상의 액세스 포트들에 포워딩하도록 구성되는 개개의 선택 회로
    를 포함하는 것인, 메모리 장치.
  14. 방법에 있어서,
    복수의 메모리 블록들의 개개의 메모리 블록에 제 1 그룹의 액세스 포트들 및 제 2 그룹의 액세스 포트들의 각각의 쌍을 결합하는 단계 ― 상기 제 1 그룹의 액세스 포트들 및 상기 제 2 그룹의 액세스 포트들의 각각의 쌍은 상기 제 1 그룹의 액세스 포트들로부터의 제 1 액세스 포트 및 상기 제 2 그룹의 액세스 포트들로부터의 제 2 액세스 포트를 포함함 ― ;
    상기 복수의 메모리 블록들의 개개의 메모리 블록의 제 1 부분에의 기록 액세스를 갖고, 상기 복수의 메모리 블록들의 개개의 메모리 블록의 제 2 부분에의 판독 액세스를 갖도록 상기 제 1 그룹의 액세스 포트들 각각을 구성하는 단계;
    상기 복수의 메모리 블록들의 개개의 메모리 블록의 상기 제 1 부분에의 판독 액세스를 갖지 않고, 상기 복수의 메모리 블록들의 개개의 메모리 블록의 상기 제 2 부분에의 기록 액세스를 갖지 않도록 상기 제 1 그룹의 액세스 포트들 각각을 구성하는 단계;
    상기 복수의 메모리 블록들의 개개의 메모리 블록의 상기 제 2 부분에의 기록 액세스를 갖고, 상기 복수의 메모리 블록들의 개개의 메모리 블록의 상기 제 1 부분에의 판독 액세스를 갖도록 상기 제 2 그룹의 액세스 포트들 각각을 구성하는 단계; 및
    상기 복수의 메모리 블록들의 개개의 메모리 블록의 상기 제 2 부분에의 판독 액세스를 갖지 않고, 상기 복수의 메모리 블록들의 개개의 메모리 블록의 상기 제 1 부분에의 기록 액세스를 갖지 않도록 상기 제 2 그룹의 액세스 포트들 각각을 구성하는 단계
    를 포함하는, 방법.
  15. 제 14 항에 있어서,
    각각의 메모리 블록에 대해, 구성 비트스트림에 응답하여, 개개의 제 1 부분에 포함된 메모리 블록의 양 및 개개의 제 2 부분에 포함된 메모리 블록의 양을 조정하는 단계를 더 포함하는, 방법.
KR1020147017494A 2011-12-07 2012-09-28 비경쟁 메모리 장치 KR101816970B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US13/314,079 2011-12-07
US13/314,079 US8611175B2 (en) 2011-12-07 2011-12-07 Contention-free memory arrangement
PCT/US2012/058039 WO2013085606A2 (en) 2011-12-07 2012-09-28 Contention-free memory arrangement

Publications (2)

Publication Number Publication Date
KR20140102718A KR20140102718A (ko) 2014-08-22
KR101816970B1 true KR101816970B1 (ko) 2018-01-09

Family

ID=47172872

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020147017494A KR101816970B1 (ko) 2011-12-07 2012-09-28 비경쟁 메모리 장치

Country Status (7)

Country Link
US (1) US8611175B2 (ko)
EP (1) EP2788983B1 (ko)
JP (1) JP5947397B2 (ko)
KR (1) KR101816970B1 (ko)
CN (1) CN104106115B (ko)
IN (1) IN2014CN04171A (ko)
WO (1) WO2013085606A2 (ko)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8947931B1 (en) * 2014-06-13 2015-02-03 Sandisk Technologies Inc. Memory module
US9864710B2 (en) * 2015-03-30 2018-01-09 EMC IP Holding Company LLC Writing data to storage via a PCI express fabric having a fully-connected mesh topology
JP2018032141A (ja) * 2016-08-23 2018-03-01 東芝メモリ株式会社 半導体装置
US10141938B2 (en) 2016-09-21 2018-11-27 Xilinx, Inc. Stacked columnar integrated circuits
US10635331B2 (en) 2017-07-05 2020-04-28 Western Digital Technologies, Inc. Distribution of logical-to-physical address entries across bank groups
US10346093B1 (en) * 2018-03-16 2019-07-09 Xilinx, Inc. Memory arrangement for tensor data
CN112970007A (zh) * 2018-10-23 2021-06-15 钰创科技(美国)股份有限公司 超标量存储器ic、总线及其使用的系统

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100655081B1 (ko) 2005-12-22 2006-12-08 삼성전자주식회사 가변적 액세스 경로를 가지는 멀티 포트 반도체 메모리장치 및 그에 따른 방법
US20100329066A1 (en) 2009-06-30 2010-12-30 Infinera Corporation Non-blocking multi-port memory formed from smaller multi-port memories

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS62145172A (ja) * 1985-12-20 1987-06-29 Fujitsu Ltd 試験回路付入出力パツフア
JP2546901B2 (ja) * 1989-12-05 1996-10-23 株式会社日立製作所 通信制御装置
JPH0668022A (ja) * 1992-08-18 1994-03-11 Oki Electric Ind Co Ltd ダイレクトメモリアクセス装置
GB9618137D0 (en) * 1996-08-30 1996-10-09 Sgs Thomson Microelectronics Improvements in or relating to an ATM switch
JP2000209172A (ja) * 1999-01-14 2000-07-28 Matsushita Electric Ind Co Ltd 多重化装置及び多重化システム
KR100546331B1 (ko) * 2003-06-03 2006-01-26 삼성전자주식회사 스택 뱅크들 마다 독립적으로 동작하는 멀티 포트 메모리장치
DE102004038211A1 (de) * 2004-08-05 2006-03-16 Robert Bosch Gmbh Botschaftsverwalter und Verfahren zur Steuerung des Zugriffs auf Daten eines Botschaftsspeichers eines Kommunikationsbausteins
US8547774B2 (en) * 2010-01-29 2013-10-01 Mosys, Inc. Hierarchical multi-bank multi-port memory organization

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100655081B1 (ko) 2005-12-22 2006-12-08 삼성전자주식회사 가변적 액세스 경로를 가지는 멀티 포트 반도체 메모리장치 및 그에 따른 방법
US20100329066A1 (en) 2009-06-30 2010-12-30 Infinera Corporation Non-blocking multi-port memory formed from smaller multi-port memories

Also Published As

Publication number Publication date
US8611175B2 (en) 2013-12-17
US20130148450A1 (en) 2013-06-13
CN104106115A (zh) 2014-10-15
JP5947397B2 (ja) 2016-07-06
IN2014CN04171A (ko) 2015-07-17
WO2013085606A2 (en) 2013-06-13
EP2788983A2 (en) 2014-10-15
CN104106115B (zh) 2017-03-22
JP2015506025A (ja) 2015-02-26
EP2788983B1 (en) 2016-04-06
KR20140102718A (ko) 2014-08-22
WO2013085606A3 (en) 2014-08-14

Similar Documents

Publication Publication Date Title
KR101816970B1 (ko) 비경쟁 메모리 장치
KR102381158B1 (ko) 적층형 실리콘 상호 연결(ssi) 기술 통합을 위한 독립형 인터페이스
CN108400880B (zh) 片上网络、数据传输方法和第一交换节点
US10838908B2 (en) Configurable network-on-chip for a programmable device
US20180358313A1 (en) High bandwidth memory (hbm) bandwidth aggregation switch
US10749811B2 (en) Interface virtualization and fast path for Network on Chip
US20200236064A1 (en) FPGA-based virtual fabric for data center computing
CN116368481A (zh) 具有数据处理引擎阵列的多裸片集成电路
US9069912B2 (en) System and method of distributed initiator-local reorder buffers
CA2348983A1 (en) Microelectronic chips
CN113688065A (zh) 近存计算模块和方法、近存计算网络及构建方法
Mora et al. Towards an efficient switch architecture for high-radix switches
WO2022021821A1 (zh) 存内计算模块和方法、存内计算网络及构建方法
US7965705B2 (en) Fast and fair arbitration on a data link
CN110825689B (zh) 电子芯片的实现方法及电子芯片
US10763862B1 (en) Boundary logic interface
US9164914B1 (en) Multiple port routing circuitry for flash memory storage systems
EP2854042A1 (en) Information processing apparatus, data transfer apparatus, and data transfer method
TWI802275B (zh) 晶片系統架構
US11832035B2 (en) Localized NoC switching interconnect for high bandwidth interfaces
Fukase et al. Link-sharing method of buffer in direct-connection network
Qi et al. A delay model of two-cycle noc router in 2d-mesh network
Pu et al. Chip implementation on high-speed packet buffers in network system
CN115687242A (zh) 一种利用内置本地串联模块实现模块信号共享的fpga
Ngai Lane routing in PCI Express

Legal Events

Date Code Title Description
A201 Request for examination
A302 Request for accelerated examination
E701 Decision to grant or registration of patent right
GRNT Written decision to grant