본문 바로가기

Pointer3

[Computer Architecture] (6) Array vs Pointer Array를 접근할 때는 Array의 base address와 Array의 element size 그리고 index가 필요하다. 이를 이용하면 아래와 같이 계산할 수 있다.A[i] = The base address of A + element siz * i(index ) pointer는 메모리 주소를 직접 가리키는 것으로 아래와 같이 pointer를 통해 바로 접근 가능하다.// declare point p;long *p;p = 1 // address p = 1a = *p // a = M[1] 아래와 같이 동일한 동작을 Array를 사용하는 Code와 Pointer 를 사용하는 Code를 비교해 보자. Array로 만든 Loop은 Index 계산을 하기 위한 수식들이 포함되어 있고, Pointer는 처음.. 2024. 4. 28.
[Computer Architecture] (2) Memory Alignment Memory Alignment는 일반적으로 Memory에 저장되어 있는 데이터를 접근 하는 방식을 고려하여 데이터를 저장하는 방법을 의미한다. 데이터를 저장하는 방법에 따라 Memory를 접근하는 횟수가 달라질 수 있다.   현재까지도 CPU와 Memory의 성능 차이는 좁혀지고 있지 않다. 과거 컴퓨터 아키텍처 연구가 활발히 수행되었던 시점에도 마찬가지였다. 그래서 많은 연구들이 어떻게 하면 이 차이를 좁혀서 전체 성능을 높일 수 있을 까에 대한 해결책을 찾기위해 진행되었다. Memory Alignment 기법도 Memory 접근을 효율적으로 하기 위한 방법 중에 하나이다.   Memory로부터 Address Map과 읽어오는 데이터 크기 관점으로 어떻게 데이터를 읽어오는 지 알아 보자.  Addres.. 2024. 4. 27.
[CDC] 08. Asynchronous FIFO(2) 이전 포스트에서는 FIFO(First-In First Out) 동작을 수행하기 위해서, Pointer가 존재한다는 것을 알아보았다. Pointer는 Counter 형태로 동작을 한다. 그렇기 때문에 Pointer는 Multi-bit 형태를 가진다. Multi-bit CDC를 수행하기 위해서는 Binary Code 보다 Gray Code가 좋다는 것도 알아보았다. Gray Code를 이용한 Counter를 만들면 Multi-bit CDC를 보다 안전하게 수행할 수 있다. Pointer의 크기가 N-bit이라면 FIFO Memory를 선택하기 위한 address의 bit width(N-1-bit)가 필요하며, 추가적으로 Full/Empty를 판단하기 위하여 1-bit이 더 필요하다. Gray Code Cou.. 2022. 3. 31.