요약·해설과 원문, 전문 번역을 서로 분리했습니다. API 이름, symbol, source path는 원문 표기를 사용합니다.
1. 요약·해설
원문의 핵심 논리와 kernel programming 관점의 보충 설명입니다. 아래의 전문 번역과는 별도로 작성했습니다.
2. 영어 원문 전체
번역 기준이 된 Linux v6.18.37 원문입니다. 줄 번호는 이 버전의 파일 좌표입니다.
원문 전체 펼치기
Kernel driver coretemp
======================
Supported chips:
* All Intel Core family
Prefix: 'coretemp'
CPUID: family 0x6, models
- 0xe (Pentium M DC), 0xf (Core 2 DC 65nm),
- 0x16 (Core 2 SC 65nm), 0x17 (Penryn 45nm),
- 0x1a (Nehalem), 0x1c (Atom), 0x1e (Lynnfield),
- 0x26 (Tunnel Creek Atom), 0x27 (Medfield Atom),
- 0x36 (Cedar Trail Atom)
Datasheet:
Intel 64 and IA-32 Architectures Software Developer's Manual
Volume 3A: System Programming Guide
http://softwarecommunity.intel.com/Wiki/Mobility/720.htm
Author: Rudolf Marek
Description
-----------
This driver permits reading the DTS (Digital Temperature Sensor) embedded
inside Intel CPUs. This driver can read both the per-core and per-package
temperature using the appropriate sensors. The per-package sensor is new;
as of now, it is present only in the SandyBridge platform. The driver will
show the temperature of all cores inside a package under a single device
directory inside hwmon.
Temperature is measured in degrees Celsius and measurement resolution is
1 degree C. Valid temperatures are from 0 to TjMax degrees C, because
the actual value of temperature register is in fact a delta from TjMax.
Temperature known as TjMax is the maximum junction temperature of processor,
which depends on the CPU model. See table below. At this temperature, protection
mechanism will perform actions to forcibly cool down the processor. Alarm
may be raised, if the temperature grows enough (more than TjMax) to trigger
the Out-Of-Spec bit. Following table summarizes the exported sysfs files:
All Sysfs entries are named with their core_id (represented here by 'X').
================= ========================================================
tempX_input Core temperature (in millidegrees Celsius).
tempX_max All cooling devices should be turned on (on Core2).
tempX_crit Maximum junction temperature (in millidegrees Celsius).
tempX_crit_alarm Set when Out-of-spec bit is set, never clears.
Correct CPU operation is no longer guaranteed.
tempX_label Contains string "Core X", where X is processor
number. For Package temp, this will be "Physical id Y",
where Y is the package number.
================= ========================================================
On CPU models which support it, TjMax is read from a model-specific register.
On other models, it is set to an arbitrary value based on weak heuristics.
If these heuristics don't work for you, you can pass the correct TjMax value
as a module parameter (tjmax).
Appendix A. Known TjMax lists (TBD):
Some information comes from ark.intel.com
=============== =============================================== ================
Process Processor TjMax(C)
22nm Core i5/i7 Processors
i7 3920XM, 3820QM, 3720QM, 3667U, 3520M 105
i5 3427U, 3360M/3320M 105
i7 3770/3770K 105
i5 3570/3570K, 3550, 3470/3450 105
i7 3770S 103
i5 3570S/3550S, 3475S/3470S/3450S 103
i7 3770T 94
i5 3570T 94
i5 3470T 91
32nm Core i3/i5/i7 Processors
i7 2600 98
i7 660UM/640/620, 640LM/620, 620M, 610E 105
i5 540UM/520/430, 540M/520/450/430 105
i3 330E, 370M/350/330 90 rPGA, 105 BGA
i3 330UM 105
32nm Core i7 Extreme Processors
980X 100
32nm Celeron Processors
U3400 105
P4505/P4500 90
32nm Atom Processors
S1260/1220 95
S1240 102
Z2460 90
Z2760 90
D2700/2550/2500 100
N2850/2800/2650/2600 100
45nm Xeon Processors 5400 Quad-Core
X5492, X5482, X5472, X5470, X5460, X5450 85
E5472, E5462, E5450/40/30/20/10/05 85
L5408 95
L5430, L5420, L5410 70
45nm Xeon Processors 5200 Dual-Core
X5282, X5272, X5270, X5260 90
E5240 90
E5205, E5220 70, 90
L5240 70
L5238, L5215 95
45nm Atom Processors
D525/510/425/410 100
K525/510/425/410 100
Z670/650 90
Z560/550/540/530P/530/520PT/520/515/510PT/510P 90
Z510/500 90
N570/550 100
N475/470/455/450 100
N280/270 90
330/230 125
E680/660/640/620 90
E680T/660T/640T/620T 110
E665C/645C 90
E665CT/645CT 110
CE4170/4150/4110 110
CE4200 series unknown
CE5300 series unknown
45nm Core2 Processors
Solo ULV SU3500/3300 100
T9900/9800/9600/9550/9500/9400/9300/8300/8100 105
T6670/6500/6400 105
T6600 90
SU9600/9400/9300 105
SP9600/9400 105
SL9600/9400/9380/9300 105
P9700/9600/9500/8800/8700/8600/8400/7570 105
P7550/7450 90
45nm Core2 Quad Processors
Q9100/9000 100
45nm Core2 Extreme Processors
X9100/9000 105
QX9300 100
45nm Core i3/i5/i7 Processors
i7 940XM/920 100
i7 840QM/820/740/720 100
45nm Celeron Processors
SU2300 100
900 105
65nm Core2 Duo Processors
Solo U2200, U2100 100
U7700/7600/7500 100
T7800/7700/7600/7500/7400/7300/7250/7200/7100 100
T5870/5670/5600/5550/5500/5470/5450/5300/5270 100
T5250 100
T5800/5750/5200 85
L7700/7500/7400/7300/7200 100
65nm Core2 Extreme Processors
X7900/7800 100
65nm Core Duo Processors
U2500/2400 100
T2700/2600/2450/2400/2350/2300E/2300/2250/2050 100
L2500/2400/2300 100
65nm Core Solo Processors
U1500/1400/1300 100
T1400/1350/1300/1250 100
65nm Xeon Processors 5000 Quad-Core
X5000 90-95
E5000 80
L5000 70
L5318 95
65nm Xeon Processors 5000 Dual-Core
5080, 5063, 5060, 5050, 5030 80-90
5160, 5150, 5148, 5140, 5130, 5120, 5110 80
L5138 100
65nm Celeron Processors
T1700/1600 100
560/550/540/530 100
=============== =============================================== ================
3. 한국어 전문 번역
영어 원문의 문단 순서와 의미를 유지한 전체 번역입니다. 코드, 함수명, symbol과 URL은 원문 표기를 유지합니다.
Intel DTS, TjMax와 sysfs
1-63이 driver는 Intel Core family 전체를 prefix `coretemp`로 지원합니다. CPUID family는 `0x6`이고 알려진 model은 `0xe` Pentium M DC, `0xf` Core 2 DC 65nm, `0x16` Core 2 SC 65nm, `0x17` Penryn 45nm, `0x1a` Nehalem, `0x1c` Atom, `0x1e` Lynnfield, `0x26` Tunnel Creek Atom, `0x27` Medfield Atom, `0x36` Cedar Trail Atom입니다. 자료는 Intel 64 and IA-32 Architectures Software Developer's Manual Volume 3A이며 저자는 Rudolf Marek입니다.
Driver는 Intel CPU 내부의 DTS, 즉 Digital Temperature Sensor를 읽습니다. 적절한 sensor를 사용해 core별 temperature와 package별 temperature를 모두 읽습니다. Package sensor는 당시 새 기능으로 SandyBridge platform에만 있었으며, 한 package의 모든 core temperature를 hwmon의 단일 device directory 아래에 표시합니다.
Temperature는 Celsius로 측정하며 resolution은 1 degree C입니다. Register 값은 실제로 TjMax에서의 delta이므로 유효 temperature 범위는 0부터 TjMax까지입니다.
TjMax는 CPU model별 maximum junction temperature입니다. 이 온도에서 protection mechanism이 processor를 강제로 cooling합니다. Temperature가 TjMax를 넘어 Out-Of-Spec bit를 trigger할 만큼 상승하면 alarm이 발생할 수 있습니다.
모든 sysfs entry 이름에는 `core_id`가 들어가며 여기서는 X로 나타냅니다. `tempX_input`은 core temperature를 millidegrees Celsius로, `tempX_max`는 Core2에서 모든 cooling device를 켜야 하는 온도로, `tempX_crit`은 maximum junction temperature를 같은 단위로 제공합니다.
`tempX_crit_alarm`은 Out-of-spec bit가 set되면 1이 되고 절대 clear되지 않습니다. 이때 올바른 CPU 동작은 더 이상 보장되지 않습니다. `tempX_label`은 core sensor에서 `Core X`, package sensor에서 package number Y를 사용한 `Physical id Y`입니다.
지원 CPU에서는 model-specific register에서 TjMax를 읽습니다. 다른 model에서는 약한 heuristic으로 임의 값을 정합니다. 맞지 않으면 module parameter `tjmax`로 올바른 값을 전달할 수 있습니다.
DTS delta를 TjMax 기준 실제 온도로 변환해 노출합니다.
TjMax와 register delta에서 실제 온도를 구합니다.
Kernel driver coretemp
======================
Supported chips:
* All Intel Core family
Prefix: 'coretemp'
CPUID: family 0x6, models
- 0xe (Pentium M DC), 0xf (Core 2 DC 65nm),
- 0x16 (Core 2 SC 65nm), 0x17 (Penryn 45nm),
- 0x1a (Nehalem), 0x1c (Atom), 0x1e (Lynnfield),
- 0x26 (Tunnel Creek Atom), 0x27 (Medfield Atom),
- 0x36 (Cedar Trail Atom)
Datasheet:
Intel 64 and IA-32 Architectures Software Developer's Manual
Volume 3A: System Programming Guide
http://softwarecommunity.intel.com/Wiki/Mobility/720.htm
Author: Rudolf Marek
Description
-----------
This driver permits reading the DTS (Digital Temperature Sensor) embedded
inside Intel CPUs. This driver can read both the per-core and per-package
temperature using the appropriate sensors. The per-package sensor is new;
as of now, it is present only in the SandyBridge platform. The driver will
show the temperature of all cores inside a package under a single device
directory inside hwmon.
Temperature is measured in degrees Celsius and measurement resolution is
1 degree C. Valid temperatures are from 0 to TjMax degrees C, because
the actual value of temperature register is in fact a delta from TjMax.
Temperature known as TjMax is the maximum junction temperature of processor,
which depends on the CPU model. See table below. At this temperature, protection
mechanism will perform actions to forcibly cool down the processor. Alarm
may be raised, if the temperature grows enough (more than TjMax) to trigger
the Out-Of-Spec bit. Following table summarizes the exported sysfs files:
All Sysfs entries are named with their core_id (represented here by 'X').
================= ========================================================
tempX_input Core temperature (in millidegrees Celsius).
tempX_max All cooling devices should be turned on (on Core2).
tempX_crit Maximum junction temperature (in millidegrees Celsius).
tempX_crit_alarm Set when Out-of-spec bit is set, never clears.
Correct CPU operation is no longer guaranteed.
tempX_label Contains string "Core X", where X is processor
number. For Package temp, this will be "Physical id Y",
where Y is the package number.
================= ========================================================
On CPU models which support it, TjMax is read from a model-specific register.
On other models, it is set to an arbitrary value based on weak heuristics.
If these heuristics don't work for you, you can pass the correct TjMax value
as a module parameter (tjmax).
22nm·32nm 알려진 TjMax
64-102Appendix A의 TjMax 목록은 미완성(TBD)이며 일부 정보는 `ark.intel.com`에서 왔습니다. 아래 값의 단위는 Celsius입니다.
22nm Core i5/i7에서는 mobile·일반 desktop의 다수가 105C, S suffix가 103C, T suffix 일부가 91~94C입니다. 32nm 제품은 package와 form factor에 따라 90~105C이고 980X는 100C입니다.
원문의 processor별 TjMax를 그대로 정리합니다.
CPU identity에 정확한 표 항목이 있으면 heuristic보다 우선합니다.
Appendix A. Known TjMax lists (TBD):
Some information comes from ark.intel.com
=============== =============================================== ================
Process Processor TjMax(C)
22nm Core i5/i7 Processors
i7 3920XM, 3820QM, 3720QM, 3667U, 3520M 105
i5 3427U, 3360M/3320M 105
i7 3770/3770K 105
i5 3570/3570K, 3550, 3470/3450 105
i7 3770S 103
i5 3570S/3550S, 3475S/3470S/3450S 103
i7 3770T 94
i5 3570T 94
i5 3470T 91
32nm Core i3/i5/i7 Processors
i7 2600 98
i7 660UM/640/620, 640LM/620, 620M, 610E 105
i5 540UM/520/430, 540M/520/450/430 105
i3 330E, 370M/350/330 90 rPGA, 105 BGA
i3 330UM 105
32nm Core i7 Extreme Processors
980X 100
32nm Celeron Processors
U3400 105
P4505/P4500 90
32nm Atom Processors
S1260/1220 95
S1240 102
Z2460 90
Z2760 90
D2700/2550/2500 100
N2850/2800/2650/2600 100
45nm 알려진 TjMax
103-15945nm Xeon, Atom, Core2, Core i 계열의 TjMax는 제품군과 저전력 variant에 따라 70C부터 125C까지 넓게 분포합니다. `unknown`으로 표시된 CE series도 있습니다.
원문의 45nm processor 항목을 보존합니다.
세부 suffix까지 일치시켜 올바른 junction limit를 고릅니다.
45nm Xeon Processors 5400 Quad-Core
X5492, X5482, X5472, X5470, X5460, X5450 85
E5472, E5462, E5450/40/30/20/10/05 85
L5408 95
L5430, L5420, L5410 70
45nm Xeon Processors 5200 Dual-Core
X5282, X5272, X5270, X5260 90
E5240 90
E5205, E5220 70, 90
L5240 70
L5238, L5215 95
45nm Atom Processors
D525/510/425/410 100
K525/510/425/410 100
Z670/650 90
Z560/550/540/530P/530/520PT/520/515/510PT/510P 90
Z510/500 90
N570/550 100
N475/470/455/450 100
N280/270 90
330/230 125
E680/660/640/620 90
E680T/660T/640T/620T 110
E665C/645C 90
E665CT/645CT 110
CE4170/4150/4110 110
CE4200 series unknown
CE5300 series unknown
45nm Core2 Processors
Solo ULV SU3500/3300 100
T9900/9800/9600/9550/9500/9400/9300/8300/8100 105
T6670/6500/6400 105
T6600 90
SU9600/9400/9300 105
SP9600/9400 105
SL9600/9400/9380/9300 105
P9700/9600/9500/8800/8700/8600/8400/7570 105
P7550/7450 90
45nm Core2 Quad Processors
Q9100/9000 100
45nm Core2 Extreme Processors
X9100/9000 105
QX9300 100
45nm Core i3/i5/i7 Processors
i7 940XM/920 100
i7 840QM/820/740/720 100
45nm Celeron Processors
SU2300 100
900 105
65nm 알려진 TjMax
160-19565nm Core2 Duo·Extreme, Core Duo·Solo, Xeon 5000, Celeron의 알려진 TjMax 목록입니다. 대부분 100C이지만 일부 Core2와 Xeon은 70~95C 범위입니다.
원문의 65nm processor별 값을 보존합니다.
공정과 정확한 model 정보를 함께 사용합니다.
65nm Core2 Duo Processors
Solo U2200, U2100 100
U7700/7600/7500 100
T7800/7700/7600/7500/7400/7300/7250/7200/7100 100
T5870/5670/5600/5550/5500/5470/5450/5300/5270 100
T5250 100
T5800/5750/5200 85
L7700/7500/7400/7300/7200 100
65nm Core2 Extreme Processors
X7900/7800 100
65nm Core Duo Processors
U2500/2400 100
T2700/2600/2450/2400/2350/2300E/2300/2250/2050 100
L2500/2400/2300 100
65nm Core Solo Processors
U1500/1400/1300 100
T1400/1350/1300/1250 100
65nm Xeon Processors 5000 Quad-Core
X5000 90-95
E5000 80
L5000 70
L5318 95
65nm Xeon Processors 5000 Dual-Core
5080, 5063, 5060, 5050, 5030 80-90
5160, 5150, 5148, 5140, 5130, 5120, 5110 80
L5138 100
65nm Celeron Processors
T1700/1600 100
560/550/540/530 100
=============== =============================================== ================
요약·해설
coretemp.rst:1-195DTS가 보고하는 TjMax delta를 실제 온도로 변환하고 CPU model별 junction limit를 적용합니다.
원문 분량과 핵심 지원 범위입니다.
측정과 제어의 기본 순서입니다.