[内核文档]MTRR (Memory Type Range Register) 控制

MTRR (Memory Type Range Register) control

 

         Intel P6系列的处理器上(Pentium Pro, Pentium II and later),内存类型范围寄存器(MTRRs)可以控制处理器对内存区域的访问。 如果系统中存在基于PCIAGP总线的视频卡(VGA),MTRR将具有非常显著的作用。通过使能写捆绑(Write-combining),可以在总线传输开始前,将若干个总线写传输捆绑成一次较大的写传输操作。这可以将图像写操作的性能提高2.5倍或者更多。

         Cyrix 6x86, 6x86MX 以及 M II处理器具有地址范围寄存器(ARRsAddress Range Registers),ARRs可以提供与MTRR类似的功能,能够用来模拟MTRRs

         AMD K6-2stepping 8及以上)与K6-3处理器拥有2MTRRAMD Athlon系列的处理器拥有8个与Intel类似的MTRRs

         Centaur C6WinChip)拥有8MCRs,运行写捆绑(WC)。

         VIA Cyrix III 以及 VIA C3 CPU能够提供8个类似于Intel的处理器。

         选中配置选项CONFIG_MTRR后,内核将创建文件/proc/mtrr,通过此文件,能够对MTRR进行操作。X server通常就是这样做的。当然了,今后会有更加通用的接口,因而其它处理器上类似的控制寄存器也能够被轻易的支持。

         文件/proc/mtrr具有2个接口:一个是ASCII接口,此接口可读可写。ASCII接口适用于管理。另一个是ioctl()接口,该接口适用于C程序(如,X Server)。下面我们将通过一些命令与C代码,详细地介绍这些接口。

Shell中读取MTRRs

 

% cat /proc/mtrr

reg00: base=0x00000000 (   0MB), size= 128MB: write-back, count=1

reg01: base=0x08000000 ( 128MB), size=  64MB: write-back, count=1

利用C-shell创建MTRRs

# echo "base=0xf8000000 size=0x400000 type=write-combining" >! /proc/mtrr

或者使用bash

# echo "base=0xf8000000 size=0x400000 type=write-combining" >| /proc/mtrr

结果将变为:

% cat /proc/mtrr

reg00: base=0x00000000 (   0MB), size= 128MB: write-back, count=1

reg01: base=0x08000000 ( 128MB), size=  64MB: write-back, count=1

reg02: base=0xf8000000 (3968MB), size=   4MB: write-combining, count=1

新增加的区域就是Video RAM,基地址为0xf8000000,大小为4MB。在X Server的输出信息中,可以找到基地址,即线性缓存地址(linear framebuffer address)。包含基地址的输出信息可能如下:

(--) S3: PCI: 968 rev 0, Linear FB @ 0xf8000000

注意:X Server可能会修改framebuffer

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
可以使用以下命令查看Linux CPU的厂商信息: 1. 使用lscpu命令查看: lscpu命令可以显示CPU的详细信息,包括厂商信息、架构、核心数等等。 命令:lscpu 示例输出: ``` Architecture: x86_64 CPU op-mode(s): 32-bit, 64-bit Byte Order: Little Endian CPU(s): 1 On-line CPU(s) list: 0 Thread(s) per core: 1 Core(s) per socket: 1 Socket(s): 1 Vendor ID: GenuineIntel CPU family: 6 Model: 158 Model name: Intel(R) Core(TM) i5-7500T CPU @ 2.70GHz Stepping: 9 CPU MHz: 2700.000 BogoMIPS: 5400.00 Virtualization: VT-x L1d cache: 32K L1i cache: 32K L2 cache: 256K L3 cache: 6144K ``` 可以看到,Vendor ID显示的是CPU厂商信息,这里是GenuineIntel,表示是英特尔的CPU。 2. 使用cat /proc/cpuinfo命令查看: cat /proc/cpuinfo命令可以显示CPU的详细信息,包括厂商信息、型号、频率等等。 命令:cat /proc/cpuinfo 示例输出: ``` processor : 0 vendor_id : GenuineIntel cpu family : 6 model : 158 model name : Intel(R) Core(TM) i5-7500T CPU @ 2.70GHz stepping : 9 cpu MHz : 2700.000 cache size : 6144 KB physical id : 0 siblings : 1 core id : 0 cpu cores : 1 apicid : 0 initial apicid : 0 fpu : yes fpu_exception : yes cpuid level : 22 wp : yes flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx pdpe1gb rdtscp lm constant_tsc art arch_perfmon pebs bts rep_good nopl xtopology nonstop_tsc cpuid aperfmperf tsc_known_freq pni pclmulqdq dtes64 monitor ds_cpl vmx smx est tm2 ssse3 sdbg fma cx16 xtpr pdcm pcid sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand lahf_lm abm 3dnowprefetch cpuid_fault epb invpcid_single pti ssbd ibrs ibpb stibp tpr_shadow vnmi flexpriority ept vpid ept_ad fsgsbase tsc_adjust bmi1 hle avx2 smep bmi2 erms invpcid rtm mpx rdseed adx smap clflushopt intel_pt xsaveopt xsavec xgetbv1 xsaves ibrs_enhanced tpr_adjust md_clear flush_l1d bugs : cpu_meltdown spectre_v1 spectre_v2 spec_store_bypass l1tf mds swapgs bogomips : 5400.00 clflush size : 64 cache_alignment : 64 address sizes : 39 bits physical, 48 bits virtual power management: ``` 可以看到,vendor_id显示的是CPU厂商信息,这里也是GenuineIntel,表示是英特尔的CPU。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

arethe

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值