CPUID - характеристики центрального процессора

...
  • The link to wiki http://wiki.kolibrios.org/wiki/Google_S ... CPUID_tool about this GSOC project

    I'm one of GSOC mentors for this project.

    Short introduction for students

    Some problems of this project:
    1) it is considered a low priority project by our team;
    2) it was in almost unmaintained mode for 8-9 years and a lot of new processors were shipped duruing that time, which are incorrectly detected by application. The strange thing - new vendors appears, like those guys, who produce Vortex86;
    3) vendor's documentation changed in the same period, sometimes radically, and code, written 10 years ago, don't work for some new processors, namely Intel;
    4) here are several versions of application, some of them were dropped as buggy, others due to imcomplete implementation etc. Three maintance tasks student should do since the time of selection and until the intermediate check (I don't want to talk now about the test task, some first stages of work and logging of progress at our wiki or your site): 1) make a version, what have all the features of those different versions; 2) find or create a database of processors and add it to our wiki; 3) find or create a database of CPUID subcommands for main vendors from manuals, specifications, datasheets, news etc and add it to our wiki.
    5) some useful code, written by Serge and yogev_ezra, exists in kernel of KolibriOS, which should be used somehow in CPUID.
  • History and versions of application:

    I maintained this project in 2004-2007, but in 2007 the leader of KolibriOS team, nicknamed "diamond", made an optimization of application (he uses other version of compiler, than me) and I cannot compile his version... So I made a fork from previous version before optimization. It incorporated a lot of new features, but was unstable. I published it as beta and it wasn't accepted in SVN.

    Here was a request to update application in 2013, so I added detection of new vendor, some fixes and some features from beta to SVN's version. This version is at SVN now http://websvn.kolibrios.org/listing.php ... 2Ftrunk%2F& .

    But in general, this version incorrectly behaves on new PC (shipped from Intel since around 2006 and even worse changes come in 2009). The problem is that it misdetects modern processors as a very old ones and don't detect cache size.

    I made an unpublished version in 2014, which was intended to correct misdetection of modern Intel's processors. In works, but I added new codename for my PC only.

    So, we have a 3 versions:
    1. SVN http://websvn.kolibrios.org/listing.php ... 27c3ba5f56 - some features from beta
    2. unpublished, based on SVN. Contains detection of Extended model's for Intel processor and a tiny (exactly 1) database of codenames. I'll put it on the forum a bit later.
    3. beta from 2007 - a lot of stuff, which was not included in the trunk yet...
  • Beta from 2007 http://coolthemes.narod.ru/files/cpuid226pre.zip ( viewtopic.php?f=42&t=594&start=45 )

    Wildwest wrote:
    I made an unpublished version in 2014, which was intended to correct misdetection of modern Intel's processors. In works, but I added new codename for my PC only.
    well, let's mark this version as 2.29. Attached version is for local compilation, for svn it must be corrected. It's based on svn revision from 27 October 2013.
    Attachments
    cpuid229.zip (127.8 KiB)
    Downloaded 253 times
  • Test task for students (choose one of them):

    1. Current state - we have detection of multipliers for very old CPUs, so the detection on new CPUs will give meaningless results. Test task - disable detection of multipliers for CPUs, released since 2008, but don't disable it for old CPU.

    2. Current state - we have a test of performance, running in the second window (go to it by clicking on "Press for more" button). Test task - you should make a visualization of performance of current CPU and several others CPU. For example - CPU from 2004 performed RSA encoding at speed 20 KB/sec ( http://coolthemes.narod.ru/files.html ) and the modern CPU should work faster. The type of visualisation should be proposed and discussed in this topic. The reason - people don't understand that this test is doing, so a clarification of phrase should be done also... Maybe we need some rating of PCs.

    3. Current state - dream of Mario79 (one of the founders of KolibriOS). Test task - save results of detection in txt file. You can check out PCIDEV app and see how it was done there.

    I'll add another test tasks, if here is would be more interested students.
  • Hi,
    For the 2nd task, what we really want is to convert 20 KB/sec to "running at __ speed", if something is slower than 20 KB/sec than output a string according to that?

    Is that right?
  • Visualization means some graphical interpretation of results, e.g. chart, diagram, histogram or something like that. The phrase should be longer, than now, and include "RSA encoding speed". Well, 99,999% of people don't know what is RSA... So, put all of your creativity in making software being not only working correctly, but also being comprehensible.
  • Hi,
    I was working on test-task1 and I have attached my changed file multipli.inc. I am still trying to copy my compiled program to disc where I am having some difficulty setting up loop device. I will attach the final version for multipli.inc, once I am done testing.

    For multiplic.inc, I understand the problem is when we are comparing "cmp byte[f],6". All the model numbers which has family number = 0x06 gives similar results which is wrong. Therefore, I added comparison for model number (Following this chart here: https://software.intel.com/en-us/articl ... ly-numbers) and added label: newCPU.

    Logic: Every time we have family number = 0x06 and model number = new CPU released since 2008, it goes to label newCPU and returns from there without executing anything.

    Can you check the code and let me know if that's right not?

    I appreciate your help.
    Thank you.
    Attachments
    multipli.inc (4.81 KiB)
    Downloaded 250 times
  • Hi, i will check it on my real CPU. By the way, for testing purposes (checking how branching is going on) you can disable detection of some parameters (family, model and the others), hardcode these parameters in application and check how application works on "desired CPU".
  • I'm in process of testing various versions, so here are some screenshots/photos

    CPU-Z
    Attachments
    cpuz.png
    cpuz.png (37.16 KiB)
    Viewed 7521 times
  • version 2.28 latest SVN revision

    As you can see it features false codename, false multiplier and no caches
    Attachments
    228.png
    228.png (560.34 KiB)
    Viewed 7519 times
  • version 2.29 from this topic

    As you can see, it features correct codename, which is a result of using extended model for detection - string 824 in cpuid.asm. If it uses standart model as in case of version 2.28, it will go to string 742.

    The stange thing is that performance test shows 84 and at previous version it was 74...
    Attachments
    229.png
    229.png (555.93 KiB)
    Viewed 7519 times
  • Version 2.29 with replaced mupltipli.inc from your post. It don't work and I think that you can fix your code quickly. The performance test shows 76...
    Attachments
    229task.png
    229task.png (567.64 KiB)
    Viewed 7515 times
  • Okay thank you for checking it. I will make changes to mulipli.inc and will submit the final version.

    Also, my university started from today, but I will send my proposal as soon as possible. Would you be able to check it and let me know if i need to make any changes?


    Thank you.
  • Who is online

    Users browsing this forum: No registered users and 13 guests