// Copyright (c) 2013 DMTF.  All rights reserved.
   [Version ( "2.37.0" ), 
    UMLPackagePath ( "CIM::Device::Processor" ), 
    Description ( 
       "Capabilities and management of the Processor LogicalDevice." )]
class CIM_Processor : CIM_LogicalDevice {

      [Description ( 
          "A free-form string that describes the role of the "
          "Processor, for example, \"Central Processor\" or \"Math "
          "Processor\"." )]
   string Role;

      [Description ( 
          "The Processor family type. For example, values include "
          "\"Pentium(R) processor with MMX(TM) technology\" "
          "(value=14) and \"68040\" (value=96)." ), 
       ValueMap { "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", 
          // 11                   
          "11", "12", "13", "14", 
          "15", "16", "17", "18", "19", "20", "21", 
          // 24                   
          "24", "25", "26", "27", 
          "28", "29", "30", "31", "32", "33", "34", "35", "36", 
          "37", "38", "39", "40", "41", "42", "43", 
          // 48                   
          "48", "49", "50", "51", 
          "52", "53", "54", "55", "56", "57", "58", "59", "60", 
          "61", "62", "63", // 64                   
          "64", 
          "65", "66", "67", "68", "69", "70", "71", "72", "73", 
          "74", "75", "76", "77", "78", "79", 
          // 80                   
          "80", "81", "82", "83", 
          "84", "85", "86", "87", "88", 
          // 96                      
          "96", "97", "98", 
          "99", "100", "101", "102", "103", "104", 
          // 112                   
          "112", "120", "121", 
          "122", "128", "130", "131", "132", "133", "134", 
          // 135
          "135", "136", "137", "138", "139", "140", 
          "141", "142", "143", 
          // 144                      
          "144", "145", 
          "146", "147", "148", "149", "150", 
          // 160                      
          "160", "161", 
          "162", "163", "164", "165", "166", "167", "168", "169", 
          // 170
          "170", "171", "172", "173", "174", "175", 
          "176", "177", "178", "179", // 180
          "180", "181", 
          "182", "183", "184", "185", "186", "187", "188", "189", 
          // 190                   
          "190", "191", "192", 
          "193", "194", "195", "196", "197", "198", "199", 
          // 200                   
          "200", "201", "202", 
          "203", "204", "205", "206", // 210
          "210", "211", 
          "212", "213", "214", "215", "216", "217", "218", "219", 
          // 220
          "221", "222", "223", "224", "228", "229", 
          // 230 
          "230", "231", "232", "233", "234", 
          "235", "236", "237", "238", "239", 
          // 250                 
          "250", "251", "254", 
          "255", "260", "261", "280", "281", 
          // 300                 
          "300", "301", "302", 
          "320", "350", "500", 
          // 65534                 
          "65534", "65535" }, 
       Values { "Other", "Unknown", "8086", "80286", "80386", 
          "80486", "8087", "80287", "80387", "80487", 
          // 11                     
          "Pentium(R) brand", 
          "Pentium(R) Pro", "Pentium(R) II", 
          "Pentium(R) processor with MMX(TM) technology", 
          "Celeron(TM)", "Pentium(R) II Xeon(TM)", "Pentium(R) III", 
          "M1 Family", "M2 Family", 
          "Intel(R) Celeron(R) M processor", 
          "Intel(R) Pentium(R) 4 HT processor", 
          // 24                    
          "K5 Family", 
          "K6 Family", "K6-2", "K6-3", 
          "AMD Athlon(TM) Processor Family", 
          "AMD(R) Duron(TM) Processor", "AMD29000 Family", 
          // 31                    
          "K6-2+", 
          "Power PC Family", "Power PC 601", "Power PC 603", 
          "Power PC 603+", "Power PC 604", "Power PC 620", 
          "Power PC X704", "Power PC 750", 
          "Intel(R) Core(TM) Duo processor", 
          "Intel(R) Core(TM) Duo mobile processor", 
          "Intel(R) Core(TM) Solo mobile processor", 
          "Intel(R) Atom(TM) processor", 
          // 48                     
          "Alpha Family", 
          "Alpha 21064", "Alpha 21066", "Alpha 21164", 
          "Alpha 21164PC", "Alpha 21164a", "Alpha 21264", 
          "Alpha 21364", 
          // 56
          "AMD Turion(TM) II Ultra Dual-Core Mobile M Processor Family", 
          "AMD Turion(TM) II Dual-Core Mobile M Processor Family", 
          "AMD Athlon(TM) II Dual-Core Mobile M Processor Family", 
          "AMD Opteron(TM) 6100 Series Processor", 
          "AMD Opteron(TM) 4100 Series Processor", 
          "AMD Opteron(TM) 6200 Series Processor", 
          "AMD Opteron(TM) 4200 Series Processor", 
          "AMD FX(TM) Series Processor", 
          // 64                     
          "MIPS Family", 
          "MIPS R4000", "MIPS R4200", "MIPS R4400", "MIPS R4600", 
          "MIPS R10000", "AMD C-Series Processor", 
          "AMD E-Series Processor", "AMD A-Series Processor", 
          "AMD G-Series Processor", "AMD Z-Series Processor", 
          "AMD R-Series Processor", 
          "AMD Opteron(TM) 4300 Series Processor", 
          "AMD Opteron(TM) 6300 Series Processor", 
          "AMD Opteron(TM) 3300 Series Processor", 
          "AMD FirePro(TM) Series Processor", 
          // 80                     
          "SPARC Family", 
          "SuperSPARC", "microSPARC II", "microSPARC IIep", 
          "UltraSPARC", "UltraSPARC II", "UltraSPARC IIi", 
          "UltraSPARC III", "UltraSPARC IIIi", 
          // 96                     
          "68040", 
          "68xxx Family", "68000", "68010", "68020", "68030", 
          "AMD Athlon(TM) X4 Quad-Core Processor Family", 
          "AMD Opteron(TM) X1000 Series Processor", 
          "AMD Opteron(TM) X2000 Series APU", 
          // 112                     
          "Hobbit Family", 
          "Crusoe(TM) TM5000 Family", "Crusoe(TM) TM3000 Family", 
          "Efficeon(TM) TM8000 Family", "Weitek", 
          "Itanium(TM) Processor", 
          "AMD Athlon(TM) 64 Processor Family", 
          "AMD Opteron(TM) Processor Family", 
          "AMD Sempron(TM) Processor Family", 
          "AMD Turion(TM) 64 Mobile Technology", 
          // 135                   
          "Dual-Core AMD Opteron(TM) Processor Family", 
          "AMD Athlon(TM) 64 X2 Dual-Core Processor Family", 
          "AMD Turion(TM) 64 X2 Mobile Technology", 
          "Quad-Core AMD Opteron(TM) Processor Family", 
          "Third-Generation AMD Opteron(TM) Processor Family", 
          "AMD Phenom(TM) FX Quad-Core Processor Family", 
          "AMD Phenom(TM) X4 Quad-Core Processor Family", 
          "AMD Phenom(TM) X2 Dual-Core Processor Family", 
          "AMD Athlon(TM) X2 Dual-Core Processor Family", 
          // 144                     
          "PA-RISC Family", 
          "PA-RISC 8500", "PA-RISC 8000", "PA-RISC 7300LC", 
          "PA-RISC 7200", "PA-RISC 7100LC", "PA-RISC 7100", 
          // 160                     
          "V30 Family", 
          // 161 
          "Quad-Core Intel(R) Xeon(R) processor 3200 Series", 
          "Dual-Core Intel(R) Xeon(R) processor 3000 Series", 
          "Quad-Core Intel(R) Xeon(R) processor 5300 Series", 
          "Dual-Core Intel(R) Xeon(R) processor 5100 Series", 
          "Dual-Core Intel(R) Xeon(R) processor 5000 Series", 
          "Dual-Core Intel(R) Xeon(R) processor LV", 
          "Dual-Core Intel(R) Xeon(R) processor ULV", 
          "Dual-Core Intel(R) Xeon(R) processor 7100 Series", 
          "Quad-Core Intel(R) Xeon(R) processor 5400 Series", 
          "Quad-Core Intel(R) Xeon(R) processor", 
          "Dual-Core Intel(R) Xeon(R) processor 5200 Series", 
          "Dual-Core Intel(R) Xeon(R) processor 7200 Series", 
          "Quad-Core Intel(R) Xeon(R) processor 7300 Series", 
          "Quad-Core Intel(R) Xeon(R) processor 7400 Series", 
          "Multi-Core Intel(R) Xeon(R) processor 7400 Series", 
          // 176 
          "Pentium(R) III Xeon(TM)", 
          "Pentium(R) III Processor with Intel(R) SpeedStep(TM) Technology", 
          "Pentium(R) 4", "Intel(R) Xeon(TM)", 
          // 180                     
          "AS400 Family", 
          "Intel(R) Xeon(TM) processor MP", 
          "AMD Athlon(TM) XP Family", "AMD Athlon(TM) MP Family", 
          "Intel(R) Itanium(R) 2", 
          "Intel(R) Pentium(R) M processor", 
          "Intel(R) Celeron(R) D processor", 
          "Intel(R) Pentium(R) D processor", 
          "Intel(R) Pentium(R) Processor Extreme Edition", 
          "Intel(R) Core(TM) Solo Processor", 
          // 190                     
          "K7", 
          "Intel(R) Core(TM)2 Duo Processor", 
          "Intel(R) Core(TM)2 Solo processor", 
          "Intel(R) Core(TM)2 Extreme processor", 
          "Intel(R) Core(TM)2 Quad processor", 
          "Intel(R) Core(TM)2 Extreme mobile processor", 
          "Intel(R) Core(TM)2 Duo mobile processor", 
          "Intel(R) Core(TM)2 Solo mobile processor", 
          "Intel(R) Core(TM) i7 processor", 
          "Dual-Core Intel(R) Celeron(R) Processor", 
          // 200                     
          "S/390 and zSeries Family", 
          "ESA/390 G4", "ESA/390 G5", "ESA/390 G6", 
          "z/Architectur base", 
          // 205
          "Intel(R) Core(TM) i5 processor", 
          "Intel(R) Core(TM) i3 processor", 
          // 210                   
          "VIA C7(TM)-M Processor Family", 
          "VIA C7(TM)-D Processor Family", 
          "VIA C7(TM) Processor Family", 
          "VIA Eden(TM) Processor Family", 
          "Multi-Core Intel(R) Xeon(R) processor", 
          "Dual-Core Intel(R) Xeon(R) processor 3xxx Series", 
          "Quad-Core Intel(R) Xeon(R) processor 3xxx Series", 
          "VIA Nano(TM) Processor Family", 
          "Dual-Core Intel(R) Xeon(R) processor 5xxx Series", 
          "Quad-Core Intel(R) Xeon(R) processor 5xxx Series", 
          // 221
          "Dual-Core Intel(R) Xeon(R) processor 7xxx Series", 
          "Quad-Core Intel(R) Xeon(R) processor 7xxx Series", 
          "Multi-Core Intel(R) Xeon(R) processor 7xxx Series", 
          "Multi-Core Intel(R) Xeon(R) processor 3400 Series", 
          "AMD Opteron(TM) 3000 Series Processor", 
          "AMD Sempron(TM) II Processor Family", 
          // 230
          "Embedded AMD Opteron(TM) Quad-Core Processor Family", 
          "AMD Phenom(TM) Triple-Core Processor Family", 
          "AMD Turion(TM) Ultra Dual-Core Mobile Processor Family", 
          "AMD Turion(TM) Dual-Core Mobile Processor Family", 
          "AMD Athlon(TM) Dual-Core Processor Family", 
          "AMD Sempron(TM) SI Processor Family", 
          "AMD Phenom(TM) II Processor Family", 
          "AMD Athlon(TM) II Processor Family", 
          "Six-Core AMD Opteron(TM) Processor Family", 
          "AMD Sempron(TM) M Processor Family", 
          // 250                   
          "i860", "i960", 
          "Reserved (SMBIOS Extension)", 
          "Reserved (Un-initialized Flash Content - Lo)", "SH-3", 
          "SH-4", "ARM", "StrongARM", 
          // 300                   
          "6x86", "MediaGX", 
          "MII", "WinChip", "DSP", "Video Processor", 
          // 65534                   
          "Reserved (For Future Special Purpose Assignment)", 
          "Reserved (Un-initialized Flash Content - Hi)" }, 
       MappingStrings { "MIF.DMTF|Processor|017.3" }, 
       ModelCorrespondence { "CIM_Processor.OtherFamilyDescription" }]
   uint16 Family;

      [Description ( 
          "A string that describes the Processor Family type. It is "
          "used when the Family property is set to 1 (\"Other\"). "
          "This string should be set to NULL when the Family "
          "property is any value other than 1." ), 
       MaxLen ( 64 ), 
       ModelCorrespondence { "CIM_Processor.Family" }]
   string OtherFamilyDescription;

      [Description ( 
          "CPU socket information that includes data on how this "
          "Processor can be upgraded (if upgrades are supported). "
          "This property is an integer enumeration." ), 
       ValueMap { "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", 
          "11", "12", "13", "14", "15", "16", "17", "18", "19", 
          "20", "21", "22", "23", "24", "25", "26", "27", "28", 
          "29", "30", "31", "32", "33", "34", "35", "36", "37", 
          "38", "39", "40", "41", "42", "43", "44", "45", "46" }, 
       Values { "Other", "Unknown", "Daughter Board", "ZIF Socket", 
          "Replacement/Piggy Back", "None", "LIF Socket", "Slot 1", 
          "Slot 2", "370 Pin Socket", "Slot A", "Slot M", 
          "Socket 423", "Socket A (Socket 462)", "Socket 478", 
          "Socket 754", "Socket 940", "Socket 939", 
          "Socket mPGA604", "Socket LGA771", "Socket LGA775", 
          "Socket S1", "Socket AM2", "Socket F (1207)", 
          "Socket LGA1366", "Socket G34", "Socket AM3", 
          "Socket C32", "Socket LGA1156", "Socket LGA1567", 
          "Socket PGA988A", "Socket BGA1288", "rPGA988B", "BGA1023", 
          "BGA1224", "LGA1155", "LGA1356", "LGA2011", "Socket FS1", 
          "Socket FS2", "Socket FM1", "Socket FM2", 
          "Socket LGA2011-3", "Socket LGA1356-3", "Socket LGA1150", 
          "Socket BGA1168" }, 
       MappingStrings { "MIF.DMTF|Processor|017.7" }]
   uint16 UpgradeMethod;

      [Description ( "The maximum speed (in MHz) of this Processor." ), 
       Units ( "MegaHertz" ), 
       MappingStrings { "MIF.DMTF|Processor|017.5" }, 
       PUnit ( "hertz * 10^6" )]
   uint32 MaxClockSpeed;

      [Description ( "The current speed (in MHz) of this Processor." ), 
       Units ( "MegaHertz" ), 
       MappingStrings { "MIF.DMTF|Processor|017.6" }, 
       PUnit ( "hertz * 10^6" )]
   uint32 CurrentClockSpeed;

      [Description ( "Processor data width in bits." ), 
       Units ( "Bits" ), 
       PUnit ( "bit" )]
   uint16 DataWidth;

      [Description ( "Processor address width in bits." ), 
       Units ( "Bits" ), 
       PUnit ( "bit" )]
   uint16 AddressWidth;

      [Description ( 
          "Loading of this Processor, averaged over the last "
          "minute, in Percent." ), 
       Units ( "Percent" ), 
       Gauge, MappingStrings { 
          "MIB.IETF|HOST-RESOURCES-MIB.hrProcessorLoad" }, 
       PUnit ( "percent" )]
   uint16 LoadPercentage;

      [Description ( 
          "Stepping is a free-form string that indicates the "
          "revision level of the Processor within the "
          "Processor.Family." ), 
       ModelCorrespondence { "CIM_Processor.Family" }]
   string Stepping;

      [Description ( 
          "A globally unique identifier for the Processor. This "
          "identifier can be unique only within a Processor Family." )]
   string UniqueID;

      [Description ( 
          "The CPUStatus property that indicates the current status "
          "of the Processor. For example, the Processor might be "
          "disabled by the user (value=2), or disabled due to a "
          "POST error (value=3). Information in this property can "
          "be obtained from SMBIOS, the Type 4 structure, and the "
          "Status attribute." ), 
       ValueMap { "0", "1", "2", "3", "4", "7" }, 
       Values { "Unknown", "CPU Enabled", "CPU Disabled by User", 
          "CPU Disabled By BIOS (POST Error)", "CPU Is Idle", "Other" }]
   uint16 CPUStatus;

      [Description ( 
          "The speed (in MHz) of the external bus interface (also "
          "known as the front side bus)." ), 
       Units ( "MegaHertz" ), 
       PUnit ( "hertz * 10^6" )]
   uint32 ExternalBusClockSpeed;

      [Description ( 
          "Array of enumerated values that describes the "
          "characteristics of the processor. The characteristics "
          "include certain features of the processor such as 64 bit "
          "support for data width of the processor. Note that if "
          "this property does not contain the value corresponding "
          "to a feature of the processor, than the feature either "
          "is not that some of the features of the processor may "
          "exist but may not be enabled. To find the the currently "
          "enabled features the processor, reffer to the "
          "EnabledProcessorCharacteristics property. Values "
          "specified in the enumeration may be obtained from SMBIOS "
          "v2.5 Type 4 offset 26h (Processor Characteristics Word). "
          "32-bit Capable - describes whether the processor has the "
          "capability for 32 bits data width. 64-bit Capable - "
          "describes whether the processor has the capability for "
          "64 bits data width. Enhanced Virtualization - describes "
          "whether the processor has the capability for executing "
          "enhanced virtualization instructions. Hardware Thread - "
          "indicates that the processor is capable of the hardware "
          "threading. NX-bit - describes whether the processor has "
          "capability to utilize non-execute bit and can "
          "differentiate the memory marked strictly for storage. "
          "Power/Performance Control - describes whether the "
          "processor has capability for load based power savings. "
          "Core Frequency Boosting - describes whether the "
          "processor has a capability for one processor core to "
          "increase its frequency whenever the other core has gone "
          "into an idle state." ), 
       ValueMap { "0", "1", "2", "3", "4", "5", "6", "7", "8", 
          "9..32567", "32568..65535" }, 
       Values { "Unknown", "DMTF Reserved", "64-bit Capable", 
          "32-bit Capable", "Enhanced Virtualization", 
          "Hardware Thread", "NX-bit", "Power/Performance Control", 
          "Core Frequency Boosting", "DMTF Reserved", 
          "Vendor Reserved" }, 
       ArrayType ( "Indexed" ), 
       ModelCorrespondence { 
          "CIM_Processor.EnabledProcessorCharacteristics" }]
   uint16 Characteristics[];

      [Description ( 
          "This property indicates the enabled states of the "
          "corresponding processor characteristics. The property "
          "array is indexed with ProcessorCharacteristics property "
          "array of the associated CIM_ProcessorCapabilities "
          "instance through the CIM_ElementCapabilities "
          "association. Each of the values in the "
          "ProcessorCharacteristics array property shall have its "
          "enabled state indicated in the corresponding element of "
          "this property array. For example; if the "
          "ProcessorCharacteristics array has value - NX-bit - for "
          "the first element of the array, then the first element "
          "of this property will contain the value for the enabled "
          "state of the NX-bit feature of the processor: whether "
          "the processor currently differentiates the dedicated "
          "storage memory based on the non-execute bit. Unknown - "
          "the processor feature is in unknown state. Enabled - the "
          "processor feature is enabled and could be used. Disabled "
          "- the processor feature is disabled and cannot be used. "
          "Not Applicable - the processor feature does not have "
          "state context." ), 
       ValueMap { "0", "2", "3", "4", "5..32767", "32768..65535" }, 
       Values { "Unknown", "Enabled", "Disabled", "Not Applicable", 
          "DMTF Reserved", "Vendor Reserved" }, 
       ArrayType ( "Indexed" ), 
       ModelCorrespondence { "CIM_Processor.Characteristics" }]
   uint16 EnabledProcessorCharacteristics[];

      [Description ( 
          "Number of processor cores enabled for processor." )]
   uint16 NumberOfEnabledCores = 1;


};
