🧐 그라파나 (Grafana) 이전 글에서 간단히 언급했지만 다시 한 번 하도록 하겠습니다. 프로메테우스가 DB라고 한다면, 이 DB에 있는 데이터를 불러서 사용자가 보기 편하게 보여주는 대시보드가 필요합니다. 그라파나는 데이터를 그래프로 보여주는 툴입니다. 수 많은 그래프를 제공하고, 프로메테우스를 포함한 다양한 데이터소스를 지원합니다. 🧐 그라파나 설치 그라파나 설치 사이트(https://grafana.com/grafana/download)로 이동합니다. 여기서는 맥 OS 기준으로 설치를 진행하겠습니다. 위의 명령어를 복사합니다. 이후 그라파나를 설치할 (임의의)폴더로 이동한 뒤, 위의 명령어를 그대로 입력합니다. (설치하는데 시간이 좀 걸릴 수 있습니다) 그라파나를 설치할 폴더의 bin 폴더로 이동..
🧐 Volatile 자바에서 지원하는 volatile이라는 키워드는 다음과 같은 특성을 가집니다. volatile로 선언된 변수가 있는 코드는 최적화되지 않습니다. volatile 키워드는 변수를 'Main Memory에 저장하겠다'라고 명시하는 것입니다. 변수의 값을 Read할 때마다 CPU cache에 저장된 값이 아닌, Main Memory에서 읽는 것입니다. 🧐 사용하는 이유 volatile키워드의 사용 이유를 알기 위해서는 메모리 구조를 알아둘 필요가 있습니다. 🧐 메모리 구조 보통의 메모리 구조는 다음과 같습니다. CPU 내에는 성능 향상을 위해서 L1 Cache가 내장되어 있습니다. CPU 코어는 메모리에서 읽어온 값을 캐시에 저장하고, 캐시에서 값을 읽어서 작업합니다. 값을 읽어올 때 우선..
스위칭 함수는 일반적으로 대수학적인 방법으로 간략화될 수 있으나 대수학적 방법은 두 가지 문제가 있습니다. 1. 체계적인 방법으로 적용하기 어렵다. 2. 최소 해답(minimum solution)을 얻었는지 확인하기 어렵다. 이 장에서 학습할 카노맵(Karnaugh map) 방법과 이후 다룰 퀸-맥클러스키(Quine-McCluskey) 방법은 스위칭 함수를 체계적인 방법으로 간략화시킬 수 있으므로 위의 문제점을 해결할 수 있습니다. 카노맵은 3변수 혹은 4변수로 이루어진 스위칭 함수를 간략화하고 조작하는 데 특별히 유용한 방법입니다. 🧐 스위칭 함수의 최소 형식 어떤 함수를 AND와 OR 게이트를 사용하여 구현할 때, 이에 들어가는 비용은 게이트의 개수, 게이트 입력의 개수와 연관이 있습니다. 카노맵은 ..
🧐 Associative Cache Associatvie Cache는 유연한 블록 배치(placement)를 통해 캐시 실패율(Miss rate)을 줄이는 방법입니다. 이전 글 까지에서는 메모리 블록을 캐시에 넣을 때 각 블록이 캐시의 딱 한 장소에만 들어갈 수 있도록 하는 단순한 배치 방법인 directed mapped를 사용하였습니다. directed mapped는 블록을 배치하는 다양한 방식들 중, 극단적으로 블록을 한 곳에만 넣을 수 있도록 하는 방법입니다. 반대쪽 극단에는 블록이 캐시의 어느 곳에나 들어갈 수 있도록 하는 방식이 있습니다. 👉 fully associative 블록이 캐시의 어느 곳에나 들어갈 수 있도록 하는 캐시 구조를 의미합니다. 메모리 블록을 캐시 내의 어떤 엔트리와도 연관(..
이전에 살펴보았던 래치는 '투명성'이라는 문제점을 가집니다. 클럭신호가 흐르는 동안, 입력에 따라 그 출력이 바로바로 변하는 것이 문제였습니다. 출력을 보면 현재 입력을 볼 수 있기에 투명하다고 부릅니다. 이러한 투명성을 없애기 위해, 즉 출력을 통해 현재 입력을 알 수 없도록 만들기 위해, 입력이 변해도 '바로' 출력이 바뀌지 않도록 하기 위해 플립플롭이라는 회로를 만들어 해결합니다. 플립플롭의 출력은 오직 클럭의 에지에서만 변경됩니다. 에지트리거드 플립플롭 플립플롭이 클럭에지에서만 입력을 취합니다. 입력은 클럭에지 주변의 짧은 시간 동안 안정되어야 합니다. 클럭이 0에서 1로 바뀌는 '순간'이나, 1에서 0으로 바뀌는 '순간'에 반응하여 단 한번 출력을 변환하는 회로입니다. 에지트리거(edge-tri..