Date: 2010-12-21 12:03 am (UTC)
Казалось-бы, а почему не пойти дальше, отказавшись (в пользу кэша) не только от регистров, но и от стека тоже, сделав все операции работающими непосредственно с операндами в оперативной памяти*?

Так будет плохо потому, что при прямом доступе к оперативной памяти есть только операции считывания и записи, но нет операции стирания (запись невозможно отменить). Тоесть, если некоторая формула использует более одного промежуточного значения при вычислении результата, ячейки, соответствующие этим промежуточным значениям, будут "dirty" и их таки прийдется по окончании расчета записать из кэша в память**. А шина работает (и всегда будет работать по фундаментальным причинам) гораздо медленнее процессора.

Стек неявно подразумевает операцию стирания. При правильной реализации кэша в описанной мной стековой машине промежуточные значения (вставленные в стек, а затем убранные из него в процессе расчета) в оперативную память никогда записаны не будут.

К.Л.М.

*При небольших ухищрениях (добавив несколько инструкций), на самом деле, можно сделать и так. Но это будет некрасиво.

** Этой проблемы не возникает, если в процессе счета операции производятся только над одной ячейкой памяти, которая и будет по окончании расчета содержать результат. Но это слишком частный случай, когда формула -- лишь последовательность унарных операций.
This account has disabled anonymous posting.
If you don't have an account you can create one now.
HTML doesn't work in the subject.
More info about formatting

Profile

dr_klm: (Default)
Dr. K. L. Metlov

March 2017

S M T W T F S
   1234
567891011
1213141516 1718
19202122232425
262728293031 

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Jul. 30th, 2025 10:00 am
Powered by Dreamwidth Studios