일반적으로 나와 같은 사람들은 틱(tick)이라고 그러면 클럭(clock)정도로 이해를 한다...
결론부터 말하자면 1클럭이 1틱이 될 수(?)도 있다...
하지만 정확한 tick의 의미를 고찰하고자 한다!!!
지금 기술하는 내용은 Real-Time Concepts for Embedded Systems(Qing Li, Caroline Yao)에서 발췌한 것이며 물론 번역서이다...ㅋㅋ
"타이머 칩의 동작은 컨트롤 레지스터의 설정에 따라서 조작가능하다.
그 중 가장 중요한 것은 타이머 인터럽트 빈도 레지스터(timer interrupt-rate register: TINTR)이다.
그 값은 다음과 같은 식을 통해 결정된다.
TINTR = F(x)
x는 타이머의 입력 크리스탈의 주파수(crystal frequency)
이 식은 타이머 칩 제조사에서 제공하며 프로그래머용 메뉴얼에 나와 있다.
타이머 인터럽트 빈도는 1초에 타이머 인터럽트가 발생하는 횟수다.
각 인터럽트는 틱(tick)이라고 불리며 시스템에서 시간의 단위로 사용된다.
예를 들어 타이머가 100틱짜리라면 1틱은 10밀리초가 된다."
지금부터 위의 내용을 분석하고자 한다.
"타이머 칩의 동작은 컨트롤 레지스터의 설정에 따라서 조작가능하다.."
당연한 말씀이다. 타이머도 하나의 주변장치(peripheral)로써 타이머 H/W 내부에 있는 레지스터에 값을 써넣으므로서 타이머를 조작할 수 있다.
만약 Memory-map I/O를 지원한다면 프로그래머는 좀더 쉽게 타이머를 컨트롤 할 수 있을 것이다.
"TINTR = F(x) x는 타이머의 입력 크리스탈의 주파수(crystal frequency)"
단순히 이 식 자체만으로 얻을 수 있는것을 생각해보자...
타이머 인터럽트 빈도 레지스터에 들어가는 값은 타이머로 들어가는 주파수에 의해 결정된다.
즉 주파수에 따라 "타이머 빈도"(아직 이것이 뭔지는 모르지만...)가 결정된다는 뜻 되겠다.
"타이머 인터럽트 빈도는 1초에 타이머 인터럽트가 발생하는 횟수다."
나왔다!!
"타이머 인터럽트 빈도"란 1초에 타이머 인터럽트가 몇번 걸리는지를 나타낸다.
"각 인터럽트는 틱(tick)이라고 불리며 시스템에서 시간의 단위로 사용된다."
자! 다시 유추해보자...
1초에 발생하는 수 많은 타이머 인터럽트중 하나를 "틱"이라 부른다고 한다.
고로 적어도 1틱은 클럭이 하나 혹은 그 이상이 모인 "시간"(시간의 단위로 사용된다고 했으니...)이다.
"예를 들어 타이머가 100틱짜리라면 1틱은 10밀리초가 된다."
마지막으로 예를 하나 들고 마치고자 한다.
타이머가 100틱짜리라면 이 타이머는 1초에 타이머 인터럽트를 100번 발생 시킬수 있다.
1초에 100번의 틱이 발생한다면 1초를 100으로 나누면 1틱은 1/100 초...
즉 0.01초... 1초는 1000밀리초니까 0.01에 1000을 곱하면 10밀리초가 된다.
결론
틱은 클럭과 같은 개념은 아니나 그렇다고 클럭에 대한 이해 없이 틱을 이해 하기도 힘든 관계이다.
절대적인 본인의 추론에 의하면 이상적으로 타이머라는 H/W가 1클럭에 타이머 인터럽트를 1번 발생한다면 이해에 별 문제가 없겠으나
빠른 클럭 주파수에 비해 느리게 동작하기 때문에 적어도 몇개의 클럭당 한번씩 타이머 인터럽트를 발생시킬 수 있고 그 몇개의 클럭을 모아서 "틱"이라 하는것 같다.
어쨋든...
예로든 타이머일 경우 100틱을 카운트 한다면 1초가 지난것이다.
불현듯 생각난것인데...
틱의 숫자가 크면 클수록 좀 더 정확한 시계를 만들 수 있지 않을까...?라는 생각이...