Как определить тип DIMM?
От: DigY http://fly.formoza.ru
Дата: 08.12.02 09:45
Оценка:
Привет всем,

подскажите как определить тип DIMM (DDR, SDRAM, etc)?

Спасибо заранее
Re: Как определить тип DIMM?
От: Hacker_Delphi Россия  
Дата: 08.12.02 14:55
Оценка:
Здравствуйте, DigY, Вы писали:

DY>Привет всем,


DY>подскажите как определить тип DIMM (DDR, SDRAM, etc)?

DY>
DY>Спасибо заранее
По разъему...
И по маркировке.
RSDN@Home 1.0 beta 2 РУЛИТ!!!\nСоседей достает, в данный момент: Ария — Беспечный ангел \nВек живи — век учись!
Если при компиляции и исполнении вашей программы не происходит ни одной ошибки — это ошибка компилятора :)))
Re[2]: Как определить тип DIMM?
От: DigY http://fly.formoza.ru
Дата: 08.12.02 19:46
Оценка:
хех мне нада программно определить
Re[3]: Как определить тип DIMM?
От: Hacker_Delphi Россия  
Дата: 09.12.02 04:44
Оценка:
Здравствуйте, DigY, Вы писали:

Ну не знаю... попробуй — по скорости записи/чтения, типа так:
  1. выдели блок ФИЗИЧЕСКОЙ памяти, как-то это можно, как — не помню щаз навскидку... по-моему — через VirtualAlloc.
  2. пробуй в цикле на нее писать и считать время, для подсчета пропускной способности. если 133*32MBit/sec — SDRAM, 266,300 — DDR 400,533 — RIMM

более идей нету.
RSDN@Home 1.0 beta 2 РУЛИТ!!!\nСоседей достает, в данный момент: Ария — Беспечный ангел (караоке) \n1 Км <> 1024 м.
Если при компиляции и исполнении вашей программы не происходит ни одной ошибки — это ошибка компилятора :)))
Re[4]: Как определить тип DIMM?
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 09.12.02 06:36
Оценка:
Здравствуйте, Hacker_Delphi, Вы писали:

HD>

    HD>
  1. выдели блок ФИЗИЧЕСКОЙ памяти, как-то это можно, как — не помню щаз навскидку... по-моему — через VirtualAlloc.
    HD>
  2. пробуй в цикле на нее писать и считать время, для подсчета пропускной способности. если 133*32MBit/sec — SDRAM, 266,300 — DDR 400,533 — RIMM
    HD>


Злой ты

Если комп относительно современный то можно через SMBus достать.
... << RSDN@Home 1.0 beta 2 (developer build)>>
AVK Blog
Re[4]: Как определить тип DIMM?
От: SVV Беларусь  
Дата: 09.12.02 12:41
Оценка:
Здравствуйте, Hacker_Delphi, Вы писали:

HD>Здравствуйте, DigY, Вы писали:


HD>Ну не знаю... попробуй — по скорости записи/чтения, типа так:

HD>

    HD>
  1. выдели блок ФИЗИЧЕСКОЙ памяти, как-то это можно, как — не помню щаз навскидку... по-моему — через VirtualAlloc.
    HD>
  2. пробуй в цикле на нее писать и считать время, для подсчета пропускной способности. если 133*32MBit/sec — SDRAM, 266,300 — DDR 400,533 — RIMM
    HD>

HD>более идей нету.

Да уж, способ не сильно надежный. Надо бы через регистры чипсета как-то...

Представим себе ситуацию: ты выделяешь 100 Мб и гоняешь на них тест. А через 2-8 лет объем кэша процессора может достичь 256 Мб ( ), в итоге ты будешь тестить кэш. Основания для такого прогноза есть: вспомни Win3.1, считалось, что 2 Мб ОЗУ ей было более чем достаточно, соответственно для тестов ты бы выделял 512-1024 Кб. Это и есть кэш современных CPU (1 Мб это правда еще многовато, но в случае Xeon)...

Но на безъидейи и это решение...

З.Ы. А в Win3.1 ты наверняка полез бы к регистрам напрямую — драйвера не нужны...
Re[5]: Как определить тип DIMM?
От: DigY http://fly.formoza.ru
Дата: 09.12.02 18:41
Оценка:
Хая,

В проге http://www.cpuid.com/cpuz.php показывется инфа по DIMM.
Так там не только пишется частота и тип, но и показывается производитель ??
походу у DIMM есть чета ипа BIOS или read only memory Где прописана эта инфа?
Re[6]: Как определить тип DIMM?
От: Михаил Челноков Украина  
Дата: 09.12.02 19:52
Оценка:
Здравствуйте, DigY, Вы писали:

DY>В проге http://www.cpuid.com/cpuz.php показывется инфа по DIMM.

DY>Так там не только пишется частота и тип, но и показывается производитель ??
DY>походу у DIMM есть чета ипа BIOS или read only memory Где прописана эта инфа?

Да. Примерно так и есть. Модули DIMM имеют интерфейс I2C для идентификации. На самом модуле обычно есть микросхема EEPROM, в которой и содержится информация о типе и производителе.
Re: Как определить тип DIMM?
От: Phazz Россия  
Дата: 09.12.02 19:53
Оценка:
Здравствуйте, DigY, Вы писали:

DY>Привет всем,


DY>подскажите как определить тип DIMM (DDR, SDRAM, etc)?

DY>
DY>Спасибо заранее

Посмотрите класс Win32_PhysicalMemory, свойство MemoryType.
... << RSDN@Home 1.0 beta 2 >>
Re[2]: Как определить тип DIMM?
От: DigY http://fly.formoza.ru
Дата: 09.12.02 20:30
Оценка:
Здравствуйте, Phazz, Вы писали:

P>Здравствуйте, DigY, Вы писали:


DY>>Привет всем,


DY>>подскажите как определить тип DIMM (DDR, SDRAM, etc)?

DY>>
DY>>Спасибо заранее

P>Посмотрите класс Win32_PhysicalMemory, свойство MemoryType.


То что надо, тока чета не пайму как эот класс юзать?
функции какие?
Re[3]: Как определить тип DIMM?
От: Phazz Россия  
Дата: 09.12.02 21:16
Оценка:
Здравствуйте, DigY, Вы писали:

[skip]

можно использовать COM API, Scripting API
в PSDK есть примеры на С++ и VB(VBScript)

обработки ошибок нет.

int _tmain(int argc, _TCHAR* argv[])
{
    HRESULT hr = CoInitializeEx(0, COINIT_MULTITHREADED);

    hr = CoInitializeSecurity(NULL, -1, NULL, NULL, RPC_C_AUTHN_LEVEL_DEFAULT,     RPC_C_IMP_LEVEL_IMPERSONATE, NULL, EOAC_NONE, 0);

    IWbemLocator* pLoc = NULL;
    hr = CoCreateInstance(CLSID_WbemLocator, 0, CLSCTX_INPROC_SERVER,     IID_IWbemLocator, (LPVOID*)&pLoc);

    IWbemServices *pSvc = NULL;

    BSTR bstrkResource = SysAllocString(L"\\\\.\\root\\cimv2");
    hr = pLoc->ConnectServer(bstResource, NULL, NULL, 0, NULL, 0,0,&pSvc);
    SysFreeString(bstrResource);

     hr = CoSetProxyBlanket(pSvc,
            RPC_C_AUTHN_WINNT,
             RPC_C_AUTHZ_NONE,
          NULL,
          RPC_C_AUTHN_LEVEL_CALL,
          RPC_C_IMP_LEVEL_IMPERSONATE,
          NULL,
          EOAC_NONE
         );

    BSTR bstrClassName = SysAllocString(L"Win32_PhysicalMemory");
    IEnumWbemClassObject* pEnumObjects = NULL;

    hr = pSvc->CreateInstanceEnum(bstrClassName, 0, NULL, &pEnumObjects);
    if(SUCCEEDED(hr))
    {
        ULONG uReturned = 1;
        while(uReturned == 1)
        {
            IWbemClassObject* pObject = NULL;
            hr = pEnumObjects->Next(2000, 1, &pObject, &uReturned);
            if(SUCCEEDED(hr) && (uReturned == 1))
            {                        
                VARIANT pVal;

                BSTR bstrName = SysAllocString(L"MemoryType");
                hr = pObject->Get(bstrName, 0L, &pVal, NULL, NULL);
                SysFreeString(bstrName);
                if(SUCCEEDED(hr) && (pVal.vt != VT_NULL))
                {
                    VARIANT pStatus;
                    VariantInit(&pStatus);

                    VariantChangeType(&pStatus, &pVal, 0,VT_UINT);

                    std::cout << pStatus.uintVal << std::endl;

                    VariantClear(&pStatus);
                    VariantClear(&pVal);
                }

                pObject->Release();
            }
        }
    }

    pEnumObjects->Release();

    pSvc->Release();
    pLoc->Release();     
    CoUninitialize();

    return 0;
}
... << RSDN@Home 1.0 beta 2 >>
Re[6]: Как определить тип DIMM?
От: SVV Беларусь  
Дата: 10.12.02 07:50
Оценка:
Здравствуйте, DigY, Вы писали:

DY>Хая,


DY>В проге http://www.cpuid.com/cpuz.php показывется инфа по DIMM.

DY>Так там не только пишется частота и тип, но и показывается производитель ??
DY>походу у DIMM есть чета ипа BIOS или read only memory Где прописана эта инфа?

Эта память называется SPD: Serial Presense Detect. Как это я сразу не сообразил, что можно параметры прямо у памяти спросить... Только вот SPD появилось начиная с DIMM PC66-133.
Re[4]: Как определить тип DIMM?
От: SVV Беларусь  
Дата: 10.12.02 07:54
Оценка:
Здравствуйте, Phazz, Вы писали:

P>Здравствуйте, DigY, Вы писали:


P>[skip]


P>можно использовать COM API, Scripting API

P>в PSDK есть примеры на С++ и VB(VBScript)

P>обработки ошибок нет.


P>
P>int _tmain(int argc, _TCHAR* argv[])
P>{
P>    HRESULT hr = CoInitializeEx(0, COINIT_MULTITHREADED);

P>    hr = CoInitializeSecurity(NULL, -1, NULL, NULL, RPC_C_AUTHN_LEVEL_DEFAULT,     RPC_C_IMP_LEVEL_IMPERSONATE, NULL, EOAC_NONE, 0);

P>    IWbemLocator* pLoc = NULL;
P>    hr = CoCreateInstance(CLSID_WbemLocator, 0, CLSCTX_INPROC_SERVER,     IID_IWbemLocator, (LPVOID*)&pLoc);

P>    IWbemServices *pSvc = NULL;

P>    BSTR bstrkResource = SysAllocString(L"\\\\.\\root\\cimv2");
P>    hr = pLoc->ConnectServer(bstResource, NULL, NULL, 0, NULL, 0,0,&pSvc);
P>    SysFreeString(bstrResource);

P>     hr = CoSetProxyBlanket(pSvc,
P>            RPC_C_AUTHN_WINNT,
P>             RPC_C_AUTHZ_NONE,
P>          NULL,
P>          RPC_C_AUTHN_LEVEL_CALL,
P>          RPC_C_IMP_LEVEL_IMPERSONATE,
P>          NULL,
P>          EOAC_NONE
P>         );

P>    BSTR bstrClassName = SysAllocString(L"Win32_PhysicalMemory");
P>    IEnumWbemClassObject* pEnumObjects = NULL;

P>    hr = pSvc->CreateInstanceEnum(bstrClassName, 0, NULL, &pEnumObjects);
P>    if(SUCCEEDED(hr))
P>    {
P>        ULONG uReturned = 1;
P>        while(uReturned == 1)
P>        {
P>            IWbemClassObject* pObject = NULL;
P>            hr = pEnumObjects->Next(2000, 1, &pObject, &uReturned);
P>            if(SUCCEEDED(hr) && (uReturned == 1))
P>            {                        
P>                VARIANT pVal;

P>                BSTR bstrName = SysAllocString(L"MemoryType");
P>                hr = pObject->Get(bstrName, 0L, &pVal, NULL, NULL);
P>                SysFreeString(bstrName);
P>                if(SUCCEEDED(hr) && (pVal.vt != VT_NULL))
P>                {
P>                    VARIANT pStatus;
P>                    VariantInit(&pStatus);

P>                    VariantChangeType(&pStatus, &pVal, 0,VT_UINT);

P>                    std::cout << pStatus.uintVal << std::endl;

P>                    VariantClear(&pStatus);
P>                    VariantClear(&pVal);
P>                }

P>                pObject->Release();
P>            }
P>        }
P>    }

P>    pEnumObjects->Release();

P>    pSvc->Release();
P>    pLoc->Release();     
P>    CoUninitialize();

P>    return 0;
P>}
P>


Это работает? Если у кого заработает, дайте знать. Очень интересный пример...
Re[7]: Как определить тип DIMM?
От: DigY http://fly.formoza.ru
Дата: 10.12.02 12:05
Оценка:
Здравствуйте, SVV, Вы писали:

SVV>Здравствуйте, DigY, Вы писали:


DY>>Хая,


DY>>В проге http://www.cpuid.com/cpuz.php показывется инфа по DIMM.

DY>>Так там не только пишется частота и тип, но и показывается производитель ??
DY>>походу у DIMM есть чета ипа BIOS или read only memory Где прописана эта инфа?

SVV>Эта память называется SPD: Serial Presense Detect. Как это я сразу не сообразил, что можно параметры прямо у памяти спросить... Только вот SPD появилось начиная с DIMM PC66-133.


а как "спросить у памяти", есть какиета прерывания? или через порты как-нибудь?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.