9. 메모리 설계의 추가 토픽
내장형 메모리 = 메모리가 로직과 같은 칩상에 집적된 것
메모리 설계는 셀 구조, 스태틱 혹은 다이내믹 저장 기법의 사용 여부, 액세스 메커니즘
그리고 전력이 나갔을 때도 데이터가 그대로 저장되어 있는지 여부에 따라 다양해진다.
제일 중요한 잣대는 비트당 비용이다.
6T셀은 SRAM/ EEPROM은 2T셀/ DRAM, ROM, EPROM,, 플래시 메모리, FRAM은 1셀
스태틱 기법은 신뢰성이 높고 리프레시 회로가 필요하지 않고 다이내믹 메모리는 4배의 집적도를 제공한다.
반면에 스태틱 메모리는 다이내믹 메모리에 비해 추가적인 전력 소모가 있지만 속도는 훨씬 빠르다.
온-칩 메모리를 고려할 때는 다이내믹 메모리의 추가 공정비용과 복잡도 때문에 스태틱 기법을 대부분 활용한다.
그러나 어떤 경우에는 DRAM의 집적도 및 비트당 비용에 대한 장점이 단점의 상당 부분을 덮어줄 수도 있다.
SRAM과 DRAM은 읽기/쓰기 메모리
연상 메모리는 주소 디코딩 대신 룩업 프로세스라는 키워드를 사용하는 읽기/쓰기 메모리의 특별한 형태다.
이들은 내용 주소화 메모리(CAM)라고도 한다.
FIFO(First in first out)와 같은 직렬 메모리 및 시프트 레지스터 등도 읽기/쓰기 범주에 들어간다.
비휘발성 메모리는 전력공급이 제거되어도 저장 데이터를 유지한다. 주역할은 읽기 전용 메모리이다.
이들 메모리의 쓰기 시간은 매우 길지만 읽기 시간은 다른 반도체 메모리와 같을 정도로 짧다.
비휘발성의 예는 마스크 프로그래머블 ROM, EPROM, EEPROM, 플래시이다.
SRAM은 이미 알고 있는 주소에 바탕을 두는 액세스 메커니즘으로 데이터의 저장과 검색에 사용된다.
그러나 우리가 찾는 데이터가 이진 주소보다는 이진 키워드와 연관이 되는 응용이 존재한다.
알고 있는 키워드를 태그라고 하는 이전에 저장된 키워드들과 비교한다.
이 키워드들은 우리가 찾는 실제 데이터를 참조한다. 태그들은 어떤 특정한 순서로 저장되어 있지 않으므로
원하는 데이터에 접근하려면 주소 키워드를 이미 저장되어 있는 태그들과 정합시켜야 한다.
이러한 기능을 수행하는 메모리를 내용 주소화 메모리라고 한다.
이 메모리는 키워드를 저장된 태그와 비교함으로써 태그와 연관되어 있는 데이터를 참조하기 때문에 연상 메모리라고도 한다.
CAM은 SRAM의 기본 아키텍처를 사용하지만 주소 디코딩 기법보다는 정합 기법을 통해 데이터에 접근한다.
이들은 종종 고도의 연상 캐시 메모리를 구성할 때 쓰인다. 또한 인터넷 배선 표를 저장할 때 쓰인다.
위 CAM 배열은 비트 키워드와 비교될 n비트의 저장된 태그를 포함한다.
각 행은 다른 태그를 저장하고 있다. 태그의 각 비트는 독립적인 6T SRAM 셀에 저장된다.
SRAM은 TRUE값과 COMPLEMENT의 값 두가지를 유지하고 있다.
정의 값을 저장하고 있는 셀의 기준 면을 XOR 게이트에 가한다.
각각의 N행에는 자신들의 매치라인이 있어서 입력되는 키워드가 태그와 일치하는지를 알려준다.
대규모 CAM의 한계점은 전력이 상당히 많이 소모된다는 점이다.
실제 CAM 설계에서는 단일 정합, 다중 정합, 완전 부정합의 경우를 적절하게 다루어야 한다.
이렇게 다양하게 CAM을 설계할 수 있다.
SRAM과 나란히 배치된 CAM 배열의 블록 다이어그램이다.
CAM배열은 입력 키워드와 저장된 태그의 병렬 비교를 수행한다.
정합이 일어나면 연관된 SRAM 배열의 워드라인을 구동하는 매치라인 출력이 발생한다.
어떤 면에서 CAM은 전통적인 SRAM에서 디코더의 역할을 한다.
칩의 중요한 범주 중 하나로 필드 프로그래머블 게이트 어레이 FPGA 가 있다.
FPGA는 복잡한 로직 시스템을 빨리 구현할 수 있는 자립형 프로그래머블 로직 소자다.
이들은 크게 SRAM 프로그램과 안티퓨즈 프로그램이라는 두 범주로 나눌 수 있다.
여기선 SRAM 프로그램을 다룬다. FPGA는 빠르게 성장하고 있고 ASIC과 SOC 설계스타일과 경쟁하고 있다.
로직은 Verilog 혹은 VHDL로 표현되는 시스템의 RTL 기술로 부터 시작해
해당하는 로직 레벨의 표현을 생성하기 위해 합성 및 최적화 단계를 거친다.
이후 이 로직은 목표 FPGA 칩에서 FPGA CAD 툴에 의해 배치 및 배선된다.
PLB(프로그래머블 로직 블록) 의 간단한 스케매틱이다. SRAM 셀들, 패스 트랜지스터들, D 플롭 1개 및 멀티플렉서 1개로 구성되어 있다.
실제 블록은 훨씬더 복잡하지만 기본 개념으론 충분하다.
왼쪽 SRAM셀들은 3입력 룩업 테이블을 구성한다.
그림의 오른쪽 부분은 PLB가 순차논리가 될지 혹은 조합논리가 될지를 결정하는 요소다.
멀티플렉서를 위한 SRAM 비트 설정은 출력을 패스 트랜지스터로부터 직접 끌어올 것인지
혹은 D 플롭의 Q 출력으로부터 끌어올 것인지를 결정한다.
FPGA는 유망하고 유연한 소자이지만 몇가지 한계점이 있다.
먼저 성능이 Custom IC나 ASIC 설계에 비해 떨어지는 경향이 있다. 전력 소모 또한 훨씬 크다.
이는 정상 동작중이거나 프로그래밍 중일 때 모두에 해당된다.
프로그램 비트가 SRAM 셀이므로 스케일링에 의해 내부 커패시턴스의 값이 계속 감소함에 따라
알파-입자 효과가 유도하는 단일-사건 혼란에 대한 우려가 존재한다.
또 다른 한계는 FPGA 하나에 구현될 수 있는 시스템의 크기와 관련이 있다.
일반적으로 어떤 RTL 기술은 자동으로 게이트-레벨 기술로 변환되며 CAD 툴을 사용해 목표 FPGA에 맞게 배치 및 배선된다.
한개의 LUT가 아닌 복수의 LUT가 들어가게 되면 사용할 수 있는 트랙이 제한적이기 때문에 신호 배선 및 혼잡 문제가 발생한다.