분류 전체보기 (81) 썸네일형 리스트형 [컴퓨터 구조] Cache Miss Handling 이번 포스팅에서는 캐시 에서 Miss 가 났을때 무슨일이 일어나는지 봐보자. 💻 Cache Miss Handling in processor 캐시 Miss가 일어나면 무슨일이 프로세서에서 일어나는지 보자. 먼저 앞서 말했지만, 캐시에는 여러종류가 있다. 그중 Multi-level Cache는 캐시를 여러개를 들여 멀티레벨로 사용하는 것이다. 위 그림을 보자. 하나의 Core안에는 L1i, L1d가 존재하고, L2 Cache가 존재한다. L1i,L1d는 level 1을 존재한다. 이는 L2보다 사이즈가 작다. 앞에서 말했었다. 사이즈를 보면 L1 [컴퓨터 구조] Direct- mapped Cache 캐시에는 여러가지 종류가 있다. 크게 보면 모두 다 Set- associative Cache로 볼 수 있는데, 이중 Set이 1-way 인 경우를 Direct-mapped Cache로 본다. 이번 포스팅에서는 Direct - mapped Cache에 대해서 알아보도록 하자. 💻 Direct - mapped Cache Direct - mapped Cache는 메모리 주소에 따라, 이미 캐시에 들어갈 위치가 정해져 있다. 위그림에서, 밑에 길다란 블록들의 집합이 메모리이고, 각각 화살표를 캐시로 가리키고 있다. 초록색 위치의 블록들을 모아보겠다. 00001, 01001, 10001,11001 공통점을 보면 주소의 뒤 3비트가 001이다. 파란색칸 주소들을 보면 맨뒤 3비트가 101로 끝난다. 이처럼 주소에 .. [컴퓨터 구조] Cache 이번 포스팅에서는 Cache에 관한 내용을 알아보자. 💻 Cache Memory 컴퓨터에는 여러가지 메모리가 있다. 메모리란 데이타를 저장하는 어떠한 것을 의미하며 레지스터,Dram 등 여러가지 종류가 있다. 오늘은 그 중 Cache에 대해서 알아보자. 캐시(Cache) 메모리란 CPU와 Main Memory 사이에 있는 메모리로 레지스터보다는 느리지만, DRAM보다는 빠른 메모리이다. 자주 쓰는 것들을 캐시에 넣어놓고 CPU가 MM에 요청을 보낼때 먼저 캐시에 들러서 해당하는 데이터가 있는지 확인한다. 있다면 캐시에 있는 데이타를 갖고오면 빠르지 않을까? 예를 들어보자. 내가 있는 곳과 먼 곳에 책장이 있다. 책을 읽을때마다 책장에 가야하면 매우 번거롭다. 그럴때 오늘도 읽고, 내일도 읽고 하는 책들을.. [컴퓨터 구조] Data Hazard Pipeline을 사용하면 문제점들이 생긴다. 그 문제점들을 Pipeline Hazard라고 한다. 💻 Type of hazards Pipelined Hazard에는 총 3가지가 있다. 1. Structural Hazard 2. Data Hazard 3. control Hazard 여기서 Structural Hazards에 대해서 간단하게 짚고 넘어가보자. 이 hazard는 하드웨어가 같은 resource를 서로 쓰려고 하는 경우에 발생한다. 한 clock에 5개의 인스터럭션이 들어와있는데, 그 중 2개가 메모리를 쓰려고 한다면 structural Hazard가 발생한다. MEM 단계에서도, 메모리에 access를 하고 있고, IF 단계에서도 메모리에 access를 하고있다. 서로 다른 명령어의 두 단계.. [컴퓨터 구조] Pipeline RISC - V pipeline에 대해서 알아보자. 💻 Pipeline Instruction이 실행하는 단계는 총 다섯단계로 나뉜다. IF(Instruction Fetch) : 메모리로부터 inustruciton을 뽑아온다. ID(Instruction Decode) : 레지스터를 읽고 instruction을 해석하다. EX(Execute) : 연산수행이나 , 주소를 계산한다. -> ALU를 쓰는 부분이다. MEM : 데이터 메모리안에 있는 연산자에 접근한다. WB(Write back) : 결과값을 레지스터에 작성한다. 원래는 이 5단계가 sincle clock cycle에 실행되었다. 그러나 이렇게 된다면, 한 클럭에는 한 명령어밖에 수행하지 못하는 상황이 생긴다. 이것은 매우 비효율적이므로, 파이프라인.. [디지털 설계 및 실험] Verilog 기본 vol9. Useful Modeling Techniques 💻 assign and deassign procedural continuous assignment는 net에 값을 할당하는 구문을 말한다. wire assign a=b+c; 이런구문이 예시이다. 레지스터 값을 잠시 오버라이드 해서 쓰고 싶다면 assign을 사용하면 된다. 그리고, deassign을 쓰면 원래값으로 다시 되돌아온다. 이것은 reg타입에만 쓸 수 있다. 💻 force and release 위의 말했던 assign and deassign과 비슷한 효과를 낸다. 하지만 reg와 net 타입 둘다 오버라이드 하는데 사용될 수 있으므로 좀 더 많이쓰이고, stimulus에서 특히 사용이 많이 되어진다. 디자인 블록 안에 이것들을 사용하는 것은 추천되어지는 방법은 아니다. 예시를 보자. force를.. [디지털 설계 및 실험] 8. tasks and functions 지금까지 배운것으로만 해도 Verilog 다 할 수 있다.(수정/내가 behavioral modeling 포스팅을 안했었구나..) 지금부터는 추가적인 기능들에 대해서 포스팅 하겠다. 💻 Function vs Task 둘다 C언어에서 함수와 비슷한 기능을 수행한다. 둘다 모듈안에 정의되어야 하고 해당 모듈 안에서만 쓰인다는 공통점이 있다. 차이점을 봐보자. Function Function은 다른 Function은 이용할수 있지만, task를 이용할 수는 없다. 0의 시뮬레이션 시간에 실행된다. 어떠한 delay, event, timing control statement도 포함해서는 안된다. 적어도 하나의 입력인자가 있어야한다. 항상 하나의 리턴값만을 반환한다. output이나 inout 인자를 가질수 없다.. [시스템 프로그래밍] Linux - cp 구현 오늘은 리눅스 명령어 cp에 대해서 알아보자. 💻 cp cp는 copy의 약자로 파일을 복사한다. $ cp source-file target-file source-file을 target-file로 복사하는 명령어이다. 먄약 target-file이 존재하지 않는다면, 새로운 파일을 하나 만든다. 이 명령어가 어떻게 구현되어 있는지 알아볼텐데, 알아보기싫은데, 알아봐보자. 💻 시스템 콜 - creat int fd = creat(char *filename, mode_t mode); filename은 말 그대로 파일의 이름이다. 입력인자로 파일의 이름과, 모드를 건네주면 creat 시스템콜은 mode에 따라 권한을 부여해 파일을 생성한다. 오류가 나면 -1을 리턴해주고, 성공하면 fd를 리턴해준다. 💻 파일 쓰.. 이전 1 2 3 4 5 6 7 8 ··· 11 다음