开发者

How can I detect the number of cores in x86 assembly?

I am writing a very simple operating system as a learning tool for myself. My current task is detecting as much about the hardware as possible.

I have so far been able to find a lot of information about the CPU using the CPUID instruction. The one thing I can't seem to find is the number or physical and/or logical cores. Is the开发者_如何转开发re a way to do this using a combination of x86 assembly and C?

I am writing the operating system, so the code can be run in supervisor mode, and there are no system libraries to query for this information.


In order to find all of the processors in a system, you must parse either the ACPI tables or Intel's MP configuration table. See Bringing SMP to your UP Operating System for a tutorial on using the MP configuration table to find and start other processors. Find more information on ACPI at http://www.acpi.info/spec.htm. You may also want to check out Detecting CPU Topology, which can tell you which processors and cores are on which physical chip within a system.

When working on your OS, http://wiki.osdev.org will be your best friend. It is full of information on all of the different parts of operating system development, including common hardware and tools.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜