Henu
개발냥발
Henu
전체 방문자
오늘
어제
  • 분류 전체보기 (411)
    • DevOps (52)
      • Kubernetes (19)
      • Docker (14)
      • AWS (3)
      • Nginx (4)
      • Linux (4)
      • ArgoCD (1)
      • CN (2)
      • NATS (0)
      • Git (5)
    • Back-End (30)
      • Django (18)
      • Spring (5)
      • JPA (1)
      • MSA (5)
    • CS (87)
      • SystemSoftware (20)
      • OS (25)
      • Computer Architecture (16)
      • Network (23)
      • Database (2)
    • Lang (21)
      • Java (9)
      • Python (4)
      • C# (8)
    • Life (12)
    • 블록체인 (2)
    • Algorithm (204)
      • BOJ (160)
      • 프로그래머스 (19)
      • LeetCode (4)
      • SWEA (1)
      • 알고리즘 문제 해결 전략 (8)
      • DS, algorithms (7)
      • Checkio (5)
    • IT (2)

블로그 메뉴

  • GitHub
  • 글쓰기
  • 관리자

공지사항

  • Free!

인기 글

태그

  • 프로그래머스
  • Kubernetes
  • 다이나믹 프로그래밍
  • docker
  • django
  • DFS
  • boj
  • 백트래킹
  • BFS
  • Network

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
Henu

개발냥발

Cache Lab trans.c #2
CS/SystemSoftware

Cache Lab trans.c #2

2021. 6. 25. 16:46
cache lab에서 trans.c를 통해 행렬을 전치시키는 작업에 있어서
cache miss가 얼마나 달라지는지 시뮬레이션해보자! 

 

 

이전 포스팅

 

Cache Lab csim.c #1

cache lab에서 csim.c를 통해 cache의 동작 방식을 시뮬레이션해보자! SystemSoftware - Cache Memory #1 cache memory에 대해서 알아보자 Locality Temporal locality(시간 지역성) : 최근에 접근했던 data나 명..

hyeo-noo.tistory.com

 

연관 포스팅

 

SystemSoftware - Cache Memory #3

SystemSoftware - Cache Memory #2 SystemSoftware - Cache Memory #1 cache memory에 대해서 알아보자 Locality Temporal locality(시간 지역성) : 최근에 접근했던 data나 명령이 가까운 미래에 다시 사용될 가..

hyeo-noo.tistory.com

 


cache의 지역성을 사용하지 않은 가장 기본적인 전치 방법

 

A[i][j] 를  B[j][i]로 이동시키는 가장 간단한 코드이다.

 

위 코드는 cache의 지역성을 고려하지 않은 직관적인 코드이다.

 


test-trans를 실행시켜보면 전치에 사용되는 cache 모두가 s= 5, E=1, b=5 임을 알 수 있다.

 

E=1이므로 cache는 Direct Mapped Cache(E=1) 임을 알 수 있다.

각 set당 line이 하나만 있는 cache이다.

 

 

./driver.py를 실행시켜보면  총 3개의 행렬을 전치시키는걸 알 수 있다.

 


#1. 32x32 지역성을 고려한 코드

 

지역성을 활용하기 위해서 한 번에 8개씩 숫자를 받아와서 전치시키고 있다.

 

 

위 결과는 기본 코드를 사용해서 전치를 한 결과이다. 

misses:1183, evictions:1151

 

 

위 결과는 지역성을 고려한 코드를 사용해 전치를 했을 때 miss와 eviction이 발생한 횟수이다.

기본 코드에 비해서 확실히 miss와 eviction이 줄어든것을 볼 수 있다.


#2. 64x64 지역성을 고려한 코드

지역성을 활용하기 위해서 한 번에 4개씩 받아서 전치를 하였다.

8개씩 받아서 전치를 한 경우보다 4개씩 받아서 전치를 한 경우가 miss횟수가 더 적게 나왔다.

 

기본 전치 코드의 실행 결과

 

지역성을 고려한 코드의 결과


#3. 61x67 지역성을 고려한 코드

정방 행렬이 아니므로 하나의 for문으로 지역성을 활용해서 전치시키기는 힘들어 보였다.

64x60 + 67x1 + 3x60

총 3개의 행렬로 나누어서 전치를 시켜주었다.

 

64x60 행렬은 한 번에 4개씩 전치시켰고, 3x60 행렬은 한 번에 3개씩 전치시켰다.

 

기본 전치 코드의 결과
지역성을 활용한 코드의 결과

miss수가 약 1/2배가 되었다.


최종 점수는 위와 같습니다.

64x64코드와 61x67코드의 경우 점수가 좋지 않으므로 누군가는 이런식으로도 했구나 하는 참고용으로 가볍게 봐주시면 감사하겠습니다

 

'CS > SystemSoftware' 카테고리의 다른 글

SystemSoftware - Cache Memory #3  (0) 2021.06.16
SystemSoftware - Exceptional Control Flow #3  (0) 2021.06.09
Cache Lab csim.c #1  (1) 2021.06.07
SystemSoftware - Cache Memory #2  (0) 2021.06.06
SystemSoftware - Cache Memory #1  (1) 2021.06.06
    'CS/SystemSoftware' 카테고리의 다른 글
    • SystemSoftware - Cache Memory #3
    • SystemSoftware - Exceptional Control Flow #3
    • Cache Lab csim.c #1
    • SystemSoftware - Cache Memory #2

    티스토리툴바