'Get the CPU information.
:returns: A dictionary containing the main properties
of the central processor in the hypervisor.'

def _get_cpu_info(self):

    cpu_info = dict()
    processors = self._hostutils.get_cpus_info()
    w32_arch_dict = constants.WMI_WIN32_PROCESSOR_ARCHITECTURE
    cpu_info['arch'] = w32_arch_dict.get(processors[0]['Architecture'], 'Unknown')
    cpu_info['model'] = processors[0]['Name']
    cpu_info['vendor'] = processors[0]['Manufacturer']
    topology = dict()
    topology['sockets'] = len(processors)
    topology['cores'] = processors[0]['NumberOfCores']
    topology['threads'] = (processors[0]['NumberOfLogicalProcessors'] // processors[0]['NumberOfCores'])
    cpu_info['topology'] = topology
    features = list()
    for (fkey, fname) in os_win_const.PROCESSOR_FEATURE.items():
        if self._hostutils.is_cpu_feature_present(fkey):
            features.append(fname)
    cpu_info['features'] = features
    return cpu_info
