Collects specifications of Intel, AMD and Ampere processors and summarizes them in one file. The programm can be re-run periodically and will only fetch new information after a given time period.
| Feature | Status |
|---|---|
| Extract processor specifications from Intel | ✅ |
| Extract processor specifications from AMD | ✅ |
| Extract processor specifications from Ampere | ✅ |
| Summarize all specifications into one table | ✅ |
| Remove units from different properties | ✅ |
| Configuration via JSON/YAML file | 🛠️ |
| Conversion of scaled units to base units | 🛠️ |
git clone https://github.com/qbic-projects/Processor_specifications_collector.git
cd Processor_specifications_collectorFrom the base directory of the project, run:
./gradlew runBefore you run the program you might adapt the following:
private static final int days_until_outdated = 28When re-run, the program will check whether the first information written to the respective files is older than this and update accordingly.
static Map<String, String[]> specification_aliases = [
'product_id': ['name', 'product_id'],
'name': ['name'],
'time': ['time'],
'source': ['source'],
'tdp': [
'SDP', 'Scenario Design Power',
'Processor Base Power', 'USAGE POWER (W)', 'Default TDP',
'tdp', 'thermal design power',
],
'cores': ['Total Cores', '# of CPU Cores', 'cores'],
'threads': ['cores', 'Total Cores', '# of CPU Cores', 'Total Threads', '# of Threads', 'threads']
]This map is responsible for mapping the information in the parsed files to desired properties. For example, the tdp or thermal design power has different names for different model generations and/or manufacturers. If you want to have different properties in your end table, you can adapt the map to contain your desired colum name as a key and the values it corresponds to as a list of values. If multiple values match, the last one will take precedence, so in the example: If Processor Base Power is found, but also thermal design power has a value assigned in the vendor infomation, the value of thermal design power will be used.
// Mapping units to columns
static Map<String, String[]> units_mapping = ['tdp': ['W', 'Watt']]This map tells the program, which units to expect in the respective columns. It then extracts the first value in the list to the top and removes them from the data. Example:
| Before: | After: | |||||||||
|---|---|---|---|---|---|---|---|---|---|---|
|
|
There is currently no support to map scaled units to base units (e.g. 1 kW -> 1000 W).
The TDP values are given in a different format depending on the manufacturer / CPU model. They have been brought into a standardized format. If a range of values was specified, the lowest value was always used. The following table shows examples of the different formats on the left and the standardized version on the right.
| Before: | After: | |||||||||
|---|---|---|---|---|---|---|---|---|---|---|
|
|
Default TDP values are computed per intended use of the processors listed in the table.
For this purpose only processors with a launch date/last time buy date nor older than the current year - 10 years are considered.
The year information can be changed in the computeDefaultTdpsfunction. The default TDP values are added to the output csv file as bottom rows.
The linting rules are specified in .groovylintrc.json please apply them, when contributing new code.
From the base directory of the project, run:
./gradlew test