컴퓨터/컴퓨터구조 썸네일형 리스트형 [컴퓨터 구조] - 메모리 #3 캐시 최적화 (Cache Optimization) Cache Performance이제부터는 캐시의 효율성에 관한 논의를 하고자 한다. 그러기 위해서 효율성의 지표를 설정해야 하는데 Memory stall cycles을 기준으로 한 것과 Average memory access time을 기준으로 한 것을 살펴볼 것이다.모델링 (Memory stall cycles 기준)캐시의 성능은 아래와 같은 수식으로 나타낼 수 있다.$$\begin{align*}&\text{Memory stall cycle}\\ &= \frac{ \text{Memory access} }{\text{Program}} \times \text{Miss rate} \times \text{Miss penalty} \\ &= \frac{ \text{Instructions} }{\text{Progr.. 더보기 [컴퓨터 구조] - 메모리 #2 캐시 (cache) 메모리 #1 에서 메모리 구조와 캐시가 왜 필요한지, 어떠한 아이디어로 도입된 것인지 다루었다. 그 내용을 바탕으로 L1 캐시를 도입한 작은 컴퓨터를 구현했다고 하자. 그러면 CPU는 메모리를 요청할 때 먼저 그 데이터가 캐시에 있는지 확인하는 과정이 필요하다. 근데 어떻게 메모리에 있는지, 그리고 캐시의 어느 위치에 있는지 알 수 있을까?방법은 lookup table을 이용하는 것이다. 캐시의 tag와 유효성 등을 저장해서 캐시에 저장되어 있는지 / 저장되어 있다면 어디 있는 것인지 확인할 수 있는 표를 가지고 있는 것이다.Direct mapped cache첫번째로 살펴볼 캐시로 Direct mapped cache를 골랐다.Direct mapped cache는 메모리주소에 따라 캐시에 자장되는 위치가 .. 더보기 [컴퓨터 구조] - 메모리 #1 메모리 구조 개론 Overview지금까지 만든 CPU는 메모리에서 Instruction을 가져오고 데이터를 메모리에서 저장한다. 그리고 메모리는 호출하는 즉시 값을 반환한다고 가정했으나....실제 메모리는 그런거 없다. 아무리 빠른 메모리이더라도 몇 사이클씩은 stall을 피할 수 없고 용량이 커지게 되면 stall 하는 사이클 수는 더욱 증가하게 된다. 하지만, 우리는 빠르면서 용량도 큰 메모리를 원하는데 어떻게 이것을 실현할 수 있을까?정답은 빠르면서 용량도 큰 것 같은 착시를 만들어내는 것이다. 여러 종류의 메모리를 계층구조로 쌓아올리면 빠르면서 용량도 큰 것 같은 메모리를 구현할 수 있다!Ideally one would desire an indefinitely large memory capacity such tha.. 더보기 2.1강 - BSV 조합회로 (Combinational Circuit) Combinational circuit 만들기 with BSVCombinational circuit이란?Combinational circuit은 입력값에 따라 출력값이 결정되는 회로를 의미한다. 즉, 현재의 입력값만으로 출력값이 결정되며, 이전의 입력값이나 출력값에 의해 영향을 받지 않는다. 반대되는 개념은 Sequential circuit으로 매 clock마다 상태가 변하는 회로이다.따라서 combinational circuit을 value expression으로 표현할 수 있다. 이때 value expression은 상수(constant), 변수(variable), 연산자(operator) 로 이루어진다. 다만, 소프트웨어 프로그래밍에서의 변수와는 조금 다른 의미를 가진다. 변수는 계산 그래프 상에서.. 더보기 1강 - Bluespec 언어 소개 Bluespec Verilog 소개Bluespec Verilog이란?Bluespec Verilog(BSV)은 높은 수준의 추상화를 제공하는 하드웨어 기술 언어(Hardware Description Language)이다. 특징으로는,동시성 표현하드웨어 합성 가능위 점이 있으며, 그와 동시에 객체지향적인 프로그래밍을 작성할 수 있도록 지원한다.사실상 기존 Verilog와 비교해서 high-level의 언어적 기능을 지원하는 것이 핵심이다.Hello World첫 bsv 프로그램을 작성해보자.// Helloworld.bsvpackage Helloworld; String s = "Hello world"; (* systhesize *) module mkHelloworld (Empty); .. 더보기 이전 1 다음