728x90
반응형

컴퓨터(Computer Science)/컴퓨터구조(Computer Arichitecture) 30

캐시, Cache 와 메모리 종류 - 기본 개념 [컴퓨터구조]

메모리에서 Cache, Main memory, Secondary Memory 3가지로 나누어지는데 이 중 우리가 가장 중요하다고 생각하는 캐시에 대해서 알아보자 넥슨캐시 이런거 아니다. cash (x) 다만 발음은 똑같다. 그래서 캐시를 말할 때 L1 cache를 -> L1 $이라고도 표현한다. 일반적으로 메모리는 이렇게 발전했다. 빠를수록 용량이 작고 비싸다. 하지만 점점 발전하고 기술이 발전해서 여기까지 온거다. 메모리의 중요성도 커지고 있다. 현재는 DRAM을 Main Memory로 보편적으로 씀 SRAM이 뭔데? 단순한 집적회로로 읽기, 쓰기를 제공하는 접근 포트가 하나밖에 없는 메모리 배열이다. **SRAM은 읽기 접근 시간과 쓰기 접근 시간이 다를 수는 있지만, 데이터의 접근시간은 같다. **..

Parallelism, 병렬구조 [컴퓨터구조]

일반적으로는 Instruction을 한 싸이클에 하나씩 실행한다고 했지만 Pipeline으로 각 구간을 나누어 구간마다 사용하게 했다. 또 마지막으로는 현재는 성능을 위해서 한 사이클에 여러 개의 Instruction을 실행한다고 했다. 즉, 병렬이 차차 나오기 시작했다. 한 번 알아보자 Pipelining 자체도 병렬화라고 볼 수 있다. 그래서 병렬의 성능을 이끌어내려면 어떡해야지? 기본적으로 파이프라인의 단계를 늘리는 것이다. 이전의 식과 마찬가지로 n이 무한대로 늘어난다면 성능 향상은 거의 stage의 수에 가까워진다고 했다. 또는 한 번에 여러개를 실행하는 것이다. 이것이 바로 한 싸이클에 여러 개의 Instruction을 수행하는 것이다. 즉, 파이프라인 여러 개를 만들어서 수행하는 것이다. 이..

Exception & Interrupt, 예외 처리 [컴퓨터구조]

우리는 우리가 설계한 대로 굴러가길 바라지만 항상 세상은 뭔가 예외를 만든다. 여기에도 예외를 만든다. 알아보자 차에 기름이 부족하면 주유소에 멈추어서 기름을 넣고 간다. 그렇다면 우리 파이프라인에 문제가 생기면 그냥 무시하고 가나?? 멈춰서 문제 해결을 하고 가야한다. 도대체 실행중인 프로세서를 어떻게 멈추게 하고 문제를 해결할 것인가? 설계 다음으로 중요해졌다. 바로 예상치 못한 event 라는 것이 발생한다. 다시 말해서 Exception, Interrupt를 발생시킨다. Exception은 CPU 내부에서 발생하고 undefined 된 코드나 overflow 등등이 원인이다. Interrupt는 외부 I/O에 의해서 발생한다. (외부 장치에 의함, Hardware) **Software에서도 Int..

Control Hazard [컴퓨터구조]

이번에는 Control Hazard이다. Branch할 때 많이 일어난다고 했다. 즉, Branch가 된다면 실제로 우리가 IF했던 것들이 쓸모가 없어질 수 있다. 또한 해당 결과는 MEM stage 에서 나오는데 MEM stage 동안 실행된 instruction을 다 Flush 시켜야 한다는 말이다. **Flush란 우리가 물내리는 거랑 같다. 그렇게 세 개의 싸이클이 날라가면 또한 그것도 엄청난 성능 손해다. 그래서 우리는 Load and Use에서도 봤다시피 Mem stage가 끝난 뒤 포워딩하는 것을 미리 ID에서 미리 detect 한 것과 같이 ID 단계에 장치를 추가한다. Target address adder Register comparator를 추가시킨다. ?? 어떻게 그렇게 하느냐? ID..

Data Hazard Forwarding vs Stalling [컴퓨터구조]

데이터 해저드에 대해서 조금 더 자세히 알아보자 말했다시피 데이터 해저드는 데이터 의존성 때문에 발생한다. sub의 결과가 뒤의 instruction에 사용된다. 다시 말해서 forwarding 을 하지 않으면 데이터 해저드가 발생한다. 사실 데이터 해저드가 발생해서 포워딩이 되는 것이 맞다. 근데 우리야 명령어 목록들을 보면 해저드가 발생할 것이고 forwarding을 언제 하면 되겠다는 걸 알 수 있는데 컴퓨터는 어떻게 detect를 할 수 있을까??? 다시 말하면 언제 해저드가 일어난다는 것일까?? 일반적으로 Read After Write 의 경우 쓰기 연산 후의 읽기인데 Write가 끝난 뒤에 Read를 해야한다는 말이다. 그렇지 않으면 Data Hazard가 발생한다. 데이터 해저드는 저 때 발..

Pipeline Hazard & Solution[컴퓨터구조]

Hazard는에당 아자르 할 때 스펠과 같다. 하지만 뜻은 여기에서 다르게 쓰인다. 위험! 이 아니라. 고쳐야 할 문제점이라고 생각하자. Hazard를 발견하는 것도 좋은 방법이다. 알아야 고칠 거 아냐 아무튼 이번엔 파이프라인에서의 해저드를 알아보자 여기서 해저드란 파이프라이닝을 방해하는 상황을 말한다. ex) 다음 싸이클에 다음 명령이 수행 불가능한 경우 크게 3가지로 나눈다. Structural Hazard Data Hazard Control Hazard 1. 해당 자원이 필요한데 다른 instruction이 사용하고 있다거나 그런 경우다. A required resource is busy 2. 앞선 명령어가 해당 데이터에 대한 값을 반환하지 않아서 사용을 못하는 경우 Need to wait for..

Datapath, Simple Implementation Scheme & Pipelineing [컴퓨터구조]

지금까지 배운 것은 다 이것을 위한 필수 지식에 불과했다. 진짜 이제부터 하나하나씩 뜯으면서 보자. 먼저 ALU에 대한 것 부터 배워야 한다. **ALU Control은 4-bit 이다. 또 ALU를 Control 하는 2-bit가 있는데 (opcode에서부터 온다) 나머지는 Instruction의 funct에서 온다. 그것을 ALUOp 라고 한다. ALUOp에 따라서 ALU가 뭘할지 정해준다. ALU는 아래 3가지를 한다. 1. Load/ Store일 때 add를 해주고 2. Branch일 때 sub를 해주고 3. R 타입일 때 operand에 맞추어 연산하는 것은 ALU가 하는 역할이다. 즉, 우리가 ALU 를 컨트롤해서 Combinational Logic을 만드는 것이 컴퓨터 구조의 주 목표이다. ..

Floating point, 부동소수점 [컴퓨터구조]

이번에는 Floating Point에 대해서 알아보겠다. 실수 표현의 예를 들어보자 ** scientific notation 이란 소수점 옆에 한자리만 표현하는 것을 의미한다. 그 한자리는 1~9의 범위를 갖는다. ++ 만약 0이면 .. 앞자리로 당길 수 있음에도 안 당긴거니까 잘못표현한 방식 A number in scientific notation that has no leading 0s is called a normalized number, which is the usual way to write it. ( 그니까 쓸 데없는 0이 앞으로 오지 않는 것을 의미한다. ) 기본 개념을 알고가자 우리는 normalized된 것, scientific notation 된 숫자를 다룰 것이다. 10진법으로 표현된..

컴퓨터 구조에서 본 가상메모리, Virtual memory - 기본 개념 [컴퓨터구조]

가상 메모리는 참 많이 들었을 것이다. 왜 RAM이 가상메모리지?? 왜 사람들이 그렇게 말하는 거지?? 운영체제에서 배운 가상메모리랑 같은 개념인가? 뭐지?? 이제부터알아보자 우리가 알고 있는 Main memory, 즉, DRAM을 캐시로써 사용한다는 개념이다. 즉, 다시 말해서 메인 메모리가 Secondary 메모리의 캐시 역할을 한다는 뜻이다. 특징을 보면 프로그램들은 메인 메모리를 공유한다. 메인 메모리를 사용할 때, (MMU, memory management unit 이 이용) 각각의 프로그램들은 자신만의 virtual address space 를 갖게 된다. 해당 space에 프로그램에 대한 code, data가 담겨있는 것이다. 또한 다른 프로그램의 접근을 제한한다. 이러한 가상 메모리는 실제..

728x90
반응형