본문 바로가기

전체 글

(291)
[컴퓨터구조] 캐시(3) 현재 글은 이 글에서 이어진다. Line Size 캐시의 각 라인에는 데이터가 저장된다. 캐시의 용량이 일정할 때 라인의 크기를 키우면 라인의 개수는 감소하기 때문에 각 라인을 식별하기 위한 태그의 비중이 감소한다. 라인의 크기가 커지기 때문에 사용하는 데이터와 가까운 데이터를 한번에 많이 가질 수 있어 spatial locality 도 증가한다. 라인 크기를 키울 때 발생하는 장단점을 정리하면 다음과 같다. 장점 라인의 크기가 커져 주변 데이터를 좀 더 많이 가져오면서 spatial locality가 증가한다. 캐시 내 라인의 개수가 감소하므로 태그로 인한 오버헤드가 감소한다. 단점 Cache Pollution : 한번에 많은 데이터를 가져오다 보니 거의 사용되지 않는 데이터를 가져올 수도 있다. 라인..
[컴퓨터구조] 캐시(2) 현재 글은 이 글에서 이어진다. Replacement Algorithm 캐시의 크기는 메모리 용량의 0.1% 수준으로 새로운 데이터를 캐시에 들여놓기 위해서는 기존에 캐시 내에 존재하던 데이터를 캐시 밖으로 내보내야 한다. 이때 캐시 내 어떤 데이터가 먼저 대체되어야 하는지에 대한 규칙이 필요하며, 이를 위해 Replacement Algorithm이 존재한다. 캐시 매핑 방식에는 Direct, Fully Associative, Set Associative가 존재했다. 이때 Direct mapping 방식에서는 모듈러 연산에 의해 모든 데이터가 들어갈 캐시 상의 라인이 정해져 있으므로 어떤 데이터를 먼저 제거할지에 대해 고민할 필요가 없다. 대체 알고리즘은 Associative 방식들에 대해서만 필요하다...
[컴퓨터구조] 캐시(1) 현재 글은 컴퓨터 구조와 아키텍처 서적 및 대학에서 들은 강의를 기반으로 한다. 캐시는 CPU와 메인 메모리 사이에서 동작하는 작은 용량의 메모리로, 메모리 접근 시간은 느리지만 용량이 큰 메인 메모리를 빠른 속도로 사용함으로써 큰 용량 및 빠른 메모리 접근 시간 두 가지를 동시에 잡기 위해 도입된다. locality에 근거하여 동작하며, CPU가 멀티코어 구조를 가짐에 따라 속도 및 용량이 다른 다계층 형태로 나타난다. 메모리와 가장 가까운 위치에 존재하는 LLC(Last Level Cache)의 경우 메인 메모리 용량 증가에 따라 그의 0.1% 정도인 100MB 이상의 크기를 가지기도 한다. 일반적으로 캐시는 메모리 0.1% 수준의 용량을 가질 때 95% 정도의 hit rate을 가지며, 그 이상의 ..
[React] 타입스크립트와 children 사용 리액트18 이전까지는 React.FunctionComponent 인터페이스가 children 프로퍼티를 가지고 있었다. 반면 React.FC 인터페이스에는 해당 프로퍼티가 없기 때문에 React.FunctionComponent 인터페이스를 사용했다. 그런데 리액트18 이후부터 React.FunctionComponent에서도 children 프로퍼티가 제거되었기 때문에 이를 사용하고 싶다면 타입이나 인터페이스 안에 children 프로퍼티를 만들어 따로 정의해야 한다. type props = { children: React.ReactNode; } https://blog.logrocket.com/using-react-children-prop-typescript/ 17 버전에서는 잘만 되던 동작이 갑자기 안되..
[컴퓨터구조] 메모리 계층 현재 글은 컴퓨터 구조와 아키텍처 서적 및 대학에서 들은 강의를 기반으로 한다. 어떤 물건을 구매하더라도 최소한 품질과 가격만은 필수적으로 고려하게 된다. 이때 가장 이상적인 상황은 품질 높은 제품이 가격까지 싼 경우이다. 하지만 대부분의 경우 품질과 가격은 트레이드오프 관계에 있으며, 이는 메모리에도 동일하게 적용된다. DRAM 기반의 메모리는 가격이 저렴한 편이지만, CPU의 빠른 연산을 온전히 뒷받침할 수 있을 정도로 속도가 빠르지는 않다. 반대로 SRAM 기반의 메모리는 기계적으로 동작하여 속도가 매우 빠르기는 하나, DRAM 기반 메모리 마냥 용량을 늘리기에는 비용이 너무 많이 든다. 결국 비용 문제로 볼 수 있다. 따라서 현대 컴퓨터는 CPU와 DRAM 기반 메인 메모리 사이에 속도는 빠르지만..
[컴퓨터구조] Interconnection 현재 글은 컴퓨터 구조와 아키텍처 서적 및 대학에서 들은 강의를 기반으로 한다. Computer Interconnection 컴퓨터는 프로세서, 메모리 및 I/O 장치들이 서로 협력하여 상호작용함으로써 동작한다. 이러한 장치들이 함께 동작하기 위해서는 이들 사이를 연결하는 통로 등을 구축할 필요가 있고, 이런 통로들의 구조를 나타낸 것을 Interconnection structure이라고 부른다. 해당 구조는 장치 사이에 꼭 필요한 정보 교환에 기초한다. Interconnection Structure은 최소한 다음과 같은 전송 방식들을 지원해줘야 한다. 타입 설명 Memory → Processor 프로세서가 메모리로부터 instruction / data 읽어 옴 Processor → Memory 프로세서..
[컴퓨터구조] 컴퓨터의 기능 현재 글은 컴퓨터 구조와 아키텍처 서적 및 대학에서 들은 강의를 기반으로 한다. 컴퓨터의 컴포넌트들 폰 노이만 아키텍처 현대 컴퓨터는 폰 노이만 아키텍처를 따른다. 특징은 다음과 같다. 데이터와 명령(instruction)이 구분되지 않고 하나의 메모리 안에 저장된다. 메모리의 내용은 데이터의 유형과 관계 없이 위치 별 주소 지정이 가능하다. 명령어는 기본적으로 명시된 순서에 따라 순차적으로 실행된다. ( JMP, superscalar machine 등은 예외 ) Dataflow Machine 과거에 폰 노이만 아키텍처에 있는 병렬성의 한계를 벗어나기 위해 데이터 중심 + 비결정적으로 동작하는 dataflow machine이 연구되었다. dataflow machine은 data availity을 만족하는..
[컴퓨터구조] 컴퓨터의 성능 측정 현재 글은 컴퓨터 구조와 아키텍처 서적 및 대학에서 들은 강의를 기반으로 한다. 컴퓨터 성능 측정 수단 CPU 클럭 속도 CPU에서 실행하는 Instruction 들은 각 클럭마다 상태를 바꾸면서 실행된다. 이때 CPU 클럭 속도가 증가하게 되면 단위 시간당 실행하는 Instruction 이 많아지기 때문에 컴퓨터의 성능이 좋아진다고 생각할 수 있다. 통상적으로 생각하면 맞는 말이긴 하지만, 파이프라이닝 기법이 사용되는 경우 동시에 여러 작업이 동시에 수행될 수 있고, CPU 에 적용되는 아키텍처에 따라 필요한 instruction 수가 달라지는 경우도 있어서 성능을 명확하게 비교하기에 적절하지는 않다. Instruction Execution Rate 초당 실행 가능한 instruction 의 개수를 의..