Несколько вопросов по Dec AlphaPC 164lx

DEC Alpha, ARM, MIPS, PowerPC, SPARC, VAX, PDP-8 и другие устройства
avalon-samara
Full Member
Сообщения: 275
Зарегистрирован: 06.08.2012,17:52
Благодарил (а): 1 раз
Поблагодарили: 1 раз

Несколько вопросов по Dec AlphaPC 164lx

Сообщение avalon-samara » 13.10.2025,19:31

Есть AlphaPC 164LX Motherboard Technical Reference Manual под авторством уже Compaq.
На странице 2-10 написано:
"The AlphaPC 164LX uses BA1 as both BA1 and ADDR12. Therefore, four-bank DIMMs using ADDR<11:0> are the maximum size. (Two-bank DIMMs can use ADDR<12:0>"

То есть, там прямым текстом не написано, что линии М12-14 обрезаны, но зато понятно, что ВА1 используется как линия ADDR12, получается комбинированный сигнал - общий для выбора банка и строки. А раз так, то отдельная линия МА12 физически отсутствует. В результате доступен только диапазон адресов, где старшие три бита (12-14) всегда равны нулю и, таки образом, охватывается максимум 512 мб ОЗУ.
Получается, на DIMM слотах есть только линии ADDR0-ADDR11, вместо ADDR12 - BA1.

avalon-samara
Full Member
Сообщения: 275
Зарегистрирован: 06.08.2012,17:52
Благодарил (а): 1 раз
Поблагодарили: 1 раз

Несколько вопросов по Dec AlphaPC 164lx

Сообщение avalon-samara » 13.10.2025,19:35

ikle писал(а): 13.10.2025,18:27 P.S. А проводок кинуть если от Pyxis до слотов? )
С трудом это представляю, ведь сделать на практике синхронные высокочастотные адресные линии едва возможно.
Да и DEC 21174 в корпусе BGA, а не DIP.

Аватара пользователя
ikle
Advanced Member
Сообщения: 667
Зарегистрирован: 27.11.2023,21:22
Откуда: Санкт-Петербург
Благодарил (а): 5 раз
Поблагодарили: 37 раз

Несколько вопросов по Dec AlphaPC 164lx

Сообщение ikle » 13.10.2025,19:41

avalon-samara писал(а): 13.10.2025,19:31 four-bank DIMMs using ADDR<11:0> are the maximum size.
12×2 + 2 = 26 линий адреса после демультиплексирования: одна планка может быть размером в 2²⁹ = 512MB.
avalon-samara писал(а): 13.10.2025,19:31 Two-bank DIMMs can use ADDR<12:0>"
13×2 + 1 = 27 линий адреса после демультиплексирования: одна планка может быть размером в 2³⁰ = 1GB.

Банк тут — это логически доступное устройство внутри чипа.
DEC 3000/300LX (EV4s 125 MHz), DEC 3000/400S+ (EV4-133), DEC AlphaStation 250 4/266 (EV45), AlphaPC 164LX + EV56-600, AlphaServer DS10 (EV67-617),
DEC VXT 2000+ (VAX SOC 25 MHz, color), DEC VXT 2000 (mono), SGI Indy (R4600PC 100 MHz), кучка Sun-станций

Аватара пользователя
ikle
Advanced Member
Сообщения: 667
Зарегистрирован: 27.11.2023,21:22
Откуда: Санкт-Петербург
Благодарил (а): 5 раз
Поблагодарили: 37 раз

Несколько вопросов по Dec AlphaPC 164lx

Сообщение ikle » 13.10.2025,20:14

ikle писал(а): 14.08.2025,11:45 Если что, обычные модули без ECC должны без проблем работать с 21174.
Pyxis то умеет без ECC работать, а вот SRM — нет (как минимум в той версии, что у меня): пищит при вставке 64-bit модулей одинаковыми парами, что по 128MB, что по 256MB (и скорее это даже ещё не SRM, а первоначальный SROM загрузчик). Из парных 72-bit у меня только 64MB:

Код: Выделить всё

Digital AlphaPC 164LX 599 MHz Console V5.3-3, Sep 24 1998 14:02:11
...
>>>show memory

128 MBytes of system memory

Bank #       Size     Base Addr
------    ----------  ---------
  0         128 MB    000000000

Total Bad Pages = 0
Total Good Memory = 128 MBytes

Bcache Size = 2 MB
>>>
Причём, если вставить 256MB планки без ECC во вторые слоты, а в первые заведомо рабочие 64MB с ECC, то машина тихо игнорирует 256MB модули. А вот если вторые два — 64-bit 128MB модули — так же пищит.

Так что вопрос остаётся открытым.

P.S. На счёт ECC: В TRM не документированы джамперы CF4 — CF6 ­— есть шанс, что можно ими отрезать ECC.
DEC 3000/300LX (EV4s 125 MHz), DEC 3000/400S+ (EV4-133), DEC AlphaStation 250 4/266 (EV45), AlphaPC 164LX + EV56-600, AlphaServer DS10 (EV67-617),
DEC VXT 2000+ (VAX SOC 25 MHz, color), DEC VXT 2000 (mono), SGI Indy (R4600PC 100 MHz), кучка Sun-станций

avalon-samara
Full Member
Сообщения: 275
Зарегистрирован: 06.08.2012,17:52
Благодарил (а): 1 раз
Поблагодарили: 1 раз

Несколько вопросов по Dec AlphaPC 164lx

Сообщение avalon-samara » 13.10.2025,20:48

Но ведь BA1 уже выполняет роль ADDR12, то есть ADDR12 не доступна для адресации памяти.
Далее, демультиплексирование не добавляет реальных линий адреса, она просто распределяет существующие сигналы на банки и столбцы/строки.

Мне кажется, главная ошибка в том, что мы игнорируем тот факт, что ВА1 перекрывает ADR12.

avalon-samara
Full Member
Сообщения: 275
Зарегистрирован: 06.08.2012,17:52
Благодарил (а): 1 раз
Поблагодарили: 1 раз

Несколько вопросов по Dec AlphaPC 164lx

Сообщение avalon-samara » 13.10.2025,20:59

avalon-samara писал(а): 13.10.2025,20:48 P.S. На счёт ECC: В TRM не документированы джамперы CF4 — CF6 ­— есть шанс, что можно ими отрезать ECC.
Я сейчас подумал, что отрезать ЕСС вполне реально, но линии данных ЕСС все равно будут физически задействованы?

Аватара пользователя
ikle
Advanced Member
Сообщения: 667
Зарегистрирован: 27.11.2023,21:22
Откуда: Санкт-Петербург
Благодарил (а): 5 раз
Поблагодарили: 37 раз

Несколько вопросов по Dec AlphaPC 164lx

Сообщение ikle » 13.10.2025,21:35

avalon-samara писал(а): 13.10.2025,20:48 Но ведь BA1 уже выполняет роль ADDR12, то есть ADDR12 не доступна для адресации памяти.
И чего, что BA1 и A12 висят на одной линии? Перечитайте то, что вы сами процитировали: 4-хбанковые модули (использующие BA0 и BA1) могут использовать только A0...A11 (то есть не могут использовать A12), а 2-хбанковые (использующие только BA0) могут использовать A0...A12.
avalon-samara писал(а): 13.10.2025,20:48 Далее, демультиплексирование не добавляет реальных линий адреса, она просто распределяет существующие сигналы на банки и столбцы/строки.
Чего? Если у нас n адресных линий, то мы можем в максимуме использовать n адресных линий для задания как строки, так и столбца: то есть в максимуме 2n адресных сигналов для ячейки внутри банка. Адресация банков параллельна.
avalon-samara писал(а): 13.10.2025,20:59 Я сейчас подумал, что отрезать ЕСС вполне реально, но линии данных ЕСС все равно будут физически задействованы?
Сигналы на них будут просто игнорироваться. Причём, скорее всего, только при чтении. Работа с ECC или без — это проблема лишь настройки Pyxis. Pyxis TRM (EC–R12GC–TE), 1.1 21174 Features:
  • Quadword ECC support, longword parity, or no parity on system and memory data buses
Там же, 2.2.2 Error Checking and Correction:
The 21174 operates in one of two software selectable modes — ECC or PCA56 longword parity. Use PYXIS_CTRL[ECC_CHK_EN] to enable ECC checking or use PYXIS_CTRL1[LW_PAR_MODE] to enable PCA56 longword parity mode.

Initialization firmware must check the memory banks and the 21164 to determine whether parity or ECC bits are present in the memory and whether the 21164 will support ECC. The firmware then establishes the state of the error checking and error code generation based on this criteria. If the memory does not provide ECC/parity bits, then all memory error checking should be turned off.
— Последние два предложения говорят, что это чисто проблема FW, может система работать без ECC или нет.
avalon-samara писал(а): 13.10.2025,19:35 С трудом это представляю, ведь сделать на практике синхронные высокочастотные адресные линии едва возможно.
Во-первых, закрывающая скобочка в конце моего вопроса — это безглазый смайлик, отмечающий ироничность фразы. Во-вторых, а где вы тут увидели «высокочастотные линии»? Тут SDR и 66 MHz — период 15 нс, а, насколько я помню, дорожка на FR4 в два сантиметра даёт задержку что-то около 3 нс — так что проводок вполне реален (а вот то, что там BGA будет проблемой, если контакт на другую сторону не выведен). Но, всё таки, см. первый пункт сего параграфа.

P.S. Вот только Pyxis TRM использует понятие банков не в смысле банков SDRAM-модулей. Последние, насколько я понимаю, он называет суббанками.
Последний раз редактировалось ikle 13.10.2025,22:48, всего редактировалось 1 раз.
DEC 3000/300LX (EV4s 125 MHz), DEC 3000/400S+ (EV4-133), DEC AlphaStation 250 4/266 (EV45), AlphaPC 164LX + EV56-600, AlphaServer DS10 (EV67-617),
DEC VXT 2000+ (VAX SOC 25 MHz, color), DEC VXT 2000 (mono), SGI Indy (R4600PC 100 MHz), кучка Sun-станций

Аватара пользователя
ikle
Advanced Member
Сообщения: 667
Зарегистрирован: 27.11.2023,21:22
Откуда: Санкт-Петербург
Благодарил (а): 5 раз
Поблагодарили: 37 раз

Несколько вопросов по Dec AlphaPC 164lx

Сообщение ikle » 13.10.2025,22:02

ikle писал(а): 13.10.2025,20:14 На счёт ECC: В TRM не документированы джамперы CF4 — CF6
А они зато документированы в ebfw/srom/lx164/srom.s:

Код: Выделить всё

 * (conf-6) bit6:  Mini-Debugger (0=enabled 1= disabled)        [23]
 * (conf-5) bit5:  BC_Speed<0>                                  [19]
 * (conf-4) bit4:  BC_Speed<1>                                  [20]
 * (conf-3) bit3:  PASSWORD Bypass
 *
 *              BC_Speed<1:0>   Bcache
 *              ------------    -------
 *                 00           Reserved
 *                 01           Reserved
 *                 10           Reserved
 *                 11           9ns (default)
 *
— К ECC не имеют никакого отношения.

А вот дальше в этом коде интересности:

Код: Выделить всё

//++
// ===========================================================================
// = srom_size_memory - size the main memory for volume                 =
// ===========================================================================
//
// OVERVIEW:
//
//        This function will size the main memory on an bank per bank basis
//
// FORM OF CALL:
//
//       bsr r26,srom_size_memory
//
// ARGUMENTS:
//
//      none
//      
// RETURNS:
//
//     r10 - size mask with total size of configurable memory
//     r11 - upper LW is speed of slowest DIMM on memory bus
//           lower LW is 1 if all DIMMs have ECC bits, else 0
//
// FUNCTIONAL DESCRIPTION:
//
//      This code uses the following definitions and assumptions:
//
//      1. A PC164LX / EV56+PYXIS based board will contain from 1 to
//         two populated banks of SDRAM DIMMS.  Each bank will
//         consist of two DIMMS to create the 128 bit wide memory
//         bus.
//      2. Each DIMM is JEDEC JC-42.5-95.164 compliant or better.
//         Thus each DIMM will have a JEDEC compliant IIC ROM
//         containing full DIMM specification data.
//      3. DIMMS in each bank must be IDENTICAL in almost every
//         way.  In addition all DIMMS will must meet a minimum
//         set of timing specifications determined by reading the
//         IIC ROM on each DIMM.  SDRAM DIMMS come in many more
//         speed variants than older 72 pin SIMMs, and many are too
//         slow for EV56 + PYXIS.
//      4. Single, Dual, and Quad bank DIMMS are supported in sizes
//         from 16MB up to 256MB using either 16Mbit or 64Mbit SDRAMS.
//      5. PYXIS supports eight total banks, though PC164LX only uses
//         two.
//
//
//      This function will size the amount of memory in the system by
//      reading the IIC ROM for each DIMM.  Banks containing mismatched
//      DIMMS will cause an error beep code and prevent normal machine
//      operation.
//
//      A data structure of the following format is built as a 
//      result of the memory sizing.  It represents the DIMM size
//      in a given bank.  PC164LX has two banks, and PYXIS supports eight.
//
//      PC164LX size_mask (DIMMs):
//      =========================
//       63          56 55            48 
//      +--------------+----------------+
//      | 8MB          | 16MB           |
//      +--------------+----------------+
//
//       47          40 39            32
//      +--------------+----------------+
//      | 32MB         | 64MB           |
//      +--------------+----------------+
//
//       31          24 23            16
//      +--------------+----------------+
//      | 128MB        | 256MB          |
//      +--------------+----------------+
//
//       15           8 7              0
//      +--------------+----------------+
//      | 512MB        | 1GB (!!)       |
//      +--------------+----------------+
//
//       Each bit within the size fields corresponds to a memory dimm size.
//      This means that for a particular bank only one bit can be set in a 
//      particular field:
//      
//      I.E.
//
//      if bank 1 is configured as a set of 128MB DIMMs then
//      bit 1  = 0   (it IS NOT a 1GB DIMM)
//      bit 9  = 1   (it IS     a 512MB DIMM)
//      bit 17 = 0   (it IS NOT a 256MB DIMM)
//
...
— Не особо понятное описание, как минимум, два вывода из него можно сделать:
  1. модули в паре должны иметь практически идентичные SPD;
  2. 164LX явно должна поддерживать модули в 256MB.
Идём дальше:

Код: Выделить всё

// BCR0-BCR7 - Bank Config Reg
//              [0]   bank_enable if set
//              [4:1] Bank Size
//                 1000   2GB  ** PYXIS is capable of these configs
//                 0000   1GB  ** but is not tested or documented.
//                 0001 512MB
//                 0010 256MB
//                 0011 128MB
//                 0100  64MB
//                 0101  32MB
//                 0110  16MB
//                 0111   8MB 
//              [5]   Sub Bank Enable
//              [6]   ROW sel 0=12, 1=14
//              [7]   4BANK
— Если я правильно понимаю, то SROM для 164LX поддерживает 256MB планки (и, даже, может теоретически работать с 512MB и 1GB планками).

Ещё на счёт совместимости планок:

Код: Выделить всё

// The following tests are made against each DIMM before it is
// sized.  These checks insure electrical compatibility with
// PC164LX & PYXIS, considering the huge range on many of the
// DIMM characteristics.  
// 
// Any DIMM which does not pass these initial checks will cause 
// a fatal error with beep codes, as the whole memory subsystem 
// will become unusable.
И далее про ECC:

Код: Выделить всё

//  6     64|72  ** 72 only for PC164LX I
— Что такое «PC164LX I»? Первая ревизия AlphaPC 164LX?
Последний раз редактировалось ikle 13.10.2025,22:29, всего редактировалось 3 раза.
DEC 3000/300LX (EV4s 125 MHz), DEC 3000/400S+ (EV4-133), DEC AlphaStation 250 4/266 (EV45), AlphaPC 164LX + EV56-600, AlphaServer DS10 (EV67-617),
DEC VXT 2000+ (VAX SOC 25 MHz, color), DEC VXT 2000 (mono), SGI Indy (R4600PC 100 MHz), кучка Sun-станций

avalon-samara
Full Member
Сообщения: 275
Зарегистрирован: 06.08.2012,17:52
Благодарил (а): 1 раз
Поблагодарили: 1 раз

Несколько вопросов по Dec AlphaPC 164lx

Сообщение avalon-samara » 13.10.2025,22:17

ikle писал(а): 13.10.2025,21:35 И чего, что BA1 и A12 висят на одной линии? Перечитайте то, что вы сами процитировали: 4-хбанковые модули (использующие BA0 и BA1) могут использовать только A0...A11 (то есть не могут использовать A12), а 2-хбанковые (использующие только BA0) могут использовать A0...A12
Да, Вы правы. Действительно, 2х банковые модули могут использовать А0...А12.
ikle писал(а): 13.10.2025,21:35 Во-первых, закрывающая скобочка в конце моего вопроса — это безглазый смайлик, отмечающий ироничность фразы.
Я так погрузился в этот вопрос, что не заметил)

Теперь я сам немного в замешательстве, очень интересно, чем закончатся Ваши поиски.

Аватара пользователя
ikle
Advanced Member
Сообщения: 667
Зарегистрирован: 27.11.2023,21:22
Откуда: Санкт-Петербург
Благодарил (а): 5 раз
Поблагодарили: 37 раз

Несколько вопросов по Dec AlphaPC 164lx

Сообщение ikle » 13.10.2025,22:33

Идём дальше:

Код: Выделить всё

// : //check for DIMM pair mismatch on odd slot numbers
// : if ((dimm_slot&1)==1)
// : : if (match_col==col) && (match_row==row)
// : : : //everything checks for DIMM so populate bitmap
// : : : //each dimm is 8 bytes wide
// : : : dimm_size=1<<(col+row+3+sub_bank+SDRAM_4bank)
// : : : mputs("DIMM")   mputs(" siz")  mputs("e:0x")
// : : : putl dimm_size  mputs("MB  ")
// : : : //2^27 is largest DIMM supported, set bit corresponding to 
// : : : //size of dimm and position of slot. 2^27*8=1GB
// : : : size_mask |= 1<<[((27-row-col)<<3)+(dimm_slot>>1)]
// : : else
// : : : mputs("Error! DIMM Size mismatch slots #")
// : : : putl(dimm_slot-1)  mputs(" and #") putl(dimm_slot)
// : : : feature_mask |= 1<<((slot>>1)+56) //put a mismatch flag in
// : : : maybe beep(1,1,3)
// : : end
// : else 
// : : match_row=row
// : : match_col=col
// : end
— Тут говорится о поддержке 1GB планок, максимум (2GB на банк, 4GB всего). А ещё оно тут в SROM-порт пишет, что нашло: надо бы адаптер сделать (говорят, там RS-423).
Connector J29 supports an RS-232 or RS-422 terminal connection to this port by using 1488 and 1489 line driver and receiver components. Additional external logic is not required.
Обычный TTL-UART адаптер нужен, то есть (J29.2 — TX, J29.3 — Gnd, J29.5 — RX).
DEC 3000/300LX (EV4s 125 MHz), DEC 3000/400S+ (EV4-133), DEC AlphaStation 250 4/266 (EV45), AlphaPC 164LX + EV56-600, AlphaServer DS10 (EV67-617),
DEC VXT 2000+ (VAX SOC 25 MHz, color), DEC VXT 2000 (mono), SGI Indy (R4600PC 100 MHz), кучка Sun-станций

Аватара пользователя
ikle
Advanced Member
Сообщения: 667
Зарегистрирован: 27.11.2023,21:22
Откуда: Санкт-Петербург
Благодарил (а): 5 раз
Поблагодарили: 37 раз

Несколько вопросов по Dec AlphaPC 164lx

Сообщение ikle » 14.10.2025,00:12

AlphaPC 164LX Motherboard Product Brief:
  • 32MB to 1GB memory
И, далее:
Samsung DIMM Part Number List for 164LX Motherboard:

DensityPart NumberConfiguration# of BanksBase of Component
16MBKMM374S203CT-GH/GL2M X 72(2 Bank)16 Mbit
32MBKMM374S403CT-GH/GL4M X 72(2 Bank)16 Mbit
64MBKMM374S823BT-GH/GL8M X 72(4 Bank)64 Mbit
128MBKMM374S1623BT-GH/GL16M x 72(4 Bank)64 Mbit
KMM374S1723T-GH/GL16M x 72(4 Bank)128 Mbit
256MBKMM374S3323T-GH/GL32M x 72(4 Bank)128 Mbit
— Официально поддерживались 4-банковые 72-битные 256MB модули.

Да и тут есть статья про 164LX от ТС, в которой говорится:
В моей конфигурации на данный момент установлено четыре модуля по 128 мегабайт каждый, в наличие у меня есть 4 модуля по 256 мегабайт, но с ними возникли проблемы — вся память определяется в SRM, но при прохождении теста памяти в SRM возникают ошибки, также в ОС TRU64 UNIX с этой памятью возникает kernel panic.
Кстати, на фото в этой статье явно буферизованная или регистровая 128MB SDRAM.

Ещё нашлась статья на Хабре, в которой говорится:
Оперативная память — обычные DIMM SDRAM с ECC, модули без ECC и регистровые модули не поддерживаются.

Отыскать четыре планки по 256 Мбайт не составило больших проблем — 1 Гбайт как раз максимальный поддерживаемый объем памяти.
UPD: Ещё один владелей 164LX подтвердил, что у него стоят и работают две 256MB ECC планки.
DEC 3000/300LX (EV4s 125 MHz), DEC 3000/400S+ (EV4-133), DEC AlphaStation 250 4/266 (EV45), AlphaPC 164LX + EV56-600, AlphaServer DS10 (EV67-617),
DEC VXT 2000+ (VAX SOC 25 MHz, color), DEC VXT 2000 (mono), SGI Indy (R4600PC 100 MHz), кучка Sun-станций

Ответить