Update 12. Productivity techniques.md (#141)

Вроде в любом случае сохранит)
This commit is contained in:
Дмитрий Коротов
2025-06-22 23:01:21 +03:00
committed by GitHub
parent 20b44dcfd8
commit e560144cc9

View File

@@ -118,7 +118,7 @@
**Многопоточность** - свойство платформы (например, операционной системы) или приложения, состоящее в том, что процесс, порождённый в операционной системе, может состоять из нескольких потоков, выполняющихся «параллельно», то есть без предписанного порядка во времени. При выполнении некоторых задач такое разделение может достичь более эффективного использования ресурсов вычислительной машины. Такие потоки называют также потоками выполнения (thread of execution).
На обычном процессоре управление потоками осуществляется операционной системой. Поток исполняется до тех пор, пока не произойдёт аппаратное прерывание, системный вызов или пока не истечёт отведённое для него операционной системой время. После этого процессор переключается на код операционной системы, который сохраняет состояние потока (его контекст) или переключается на состояние другого потока, которому тоже выделяется время на исполнение. При такой многопоточности достаточно большое количество тактов процессора тратится на код операционной системы, переключающий контексты. Если поддержку потоков реализовать аппаратно, то процессор сам сможет переключаться между потоками. Для такой реализации достаточно добавить еще один счетчик PC (program counter) и еще один регистровый файл.
На обычном процессоре управление потоками осуществляется операционной системой. Поток исполняется до тех пор, пока не произойдёт аппаратное прерывание, системный вызов или пока не истечёт отведённое для него операционной системой время. После этого процессор переключается на код операционной системы, который сохраняет состояние потока (его контекст) и переключается на состояние другого потока, которому тоже выделяется время на исполнение. При такой многопоточности достаточно большое количество тактов процессора тратится на код операционной системы, переключающий контексты. Если поддержку потоков реализовать аппаратно, то процессор сам сможет переключаться между потоками. Для такой реализации достаточно добавить еще один счетчик PC (program counter) и еще один регистровый файл.
Важно учесть, что **многопоточность не повышает параллелизм уровня команд (ILP)**, но повышает пропускную способность конвейера.