Stack Overflow на русском

Генерал Дис Куссий несёт возмездие во имя ru.stackoverflow.com
Jun 8 13:25
У меня есть 2 предложения для JavaScript, если вам тоже интересно, то пожалуйста не проходите мимо :)
Jun 8 13:25
Здравствуйте дорогое комьюнити!
Feb 5 21:02
И у меня всё в голове срослось наконец и я понял почему столько усилий и архитектур в процессорах для предугадывания))
Feb 5 21:00
А оказалось там просто будущие действия без данных
Feb 5 20:59
Основная загвоздка в моём понимании было НЕпонимание что такое инструкция, я это воспринимал как команду в коде
Feb 5 20:58
@Grundy Возможно, не стану спорить, но он даёт больше понимания, хоть и не ответил на мой реальный вопрос)))
Feb 5 20:57
@Grundy Что не так?)))
Feb 5 20:56
Хоть там и всего 14 плюсов
Feb 5 20:56
Кстати в отличии от этого ответа, мне намного больше помог и понравился этот: stackoverflow.com/a/24855508/13349770
Feb 5 20:56
@Grundy Нет, там тоже попытка на пальцах объяснить как работает предсказатель
Feb 5 20:54
@Grundy Ты про этот: stackoverflow.com/questions/11227809/… ?
Feb 5 11:04
@Uranus Ещё раз спасибо! А то вчера то поздной ночи не мог понять почему это выгодно вообще. Оказалось в инструкциях нет никаких данных, потому я себе не так представлял картину
Feb 5 10:54
И основной параллелизм происходит в Fetch, Decode и Exceute?
Feb 5 10:53
@Uranus Так стало понятнее намного, спасибо вам больше. Но среди этих стадий ведь так же есть Memory, Writeback и похожие другие, они получается простаивают пока реальные данные не придут?
Feb 5 10:41
@Uranus Т.е. в конвейер попадают инструкции без вычисления? Типа списка:
1. Надо будет сложить А и Б
2. Надо буде ответ положить в С
3. Надо будет умножить С на С
4. Надо будет ответ положить в С

И потом, когда условный переход всё же будет посчитан, мы начнём уже искать что такое А, Б и С и выполнять эти интсрукции?
Feb 5 10:35
А какие-то другие ветви в самом процессоре
Feb 5 10:34
Либо же это всё не про обычные if else которые я пишу в своих программах
Feb 5 10:33
Там же тоже мне могут быть нужны вещи, которых ещё нет на руках
Feb 5 10:32
@Uranus А почему нет этих же ограничений на задачи, которые находятся в самой ветви??
Feb 5 10:16
@Uranus Я не понимаю почему бы не вычислять этот условный оператор, вместо инструкций в самой ветви. Если уж можно залезть в нужно ветвь и выполнять его инструкции заранее, то почему не могу как очередную инструкцию условие перехода вычислить заранее?
Feb 5 10:01
Но всё равно в голове не укладывается, почему это всё вообще должно работать быстрее и позволять распараллеливанию задач, чем просто вычислить в какую сторону действительно нужно
Feb 5 09:59
Концептуально и даже чутка глубже я могу даже наверное рассказать как он работает включая все эти пайплайны и хеш таблицы для более правильного предсказания
Feb 5 09:57
Из всего что я вычитал и увидел мне кажется что происходит огромное количество операций, только лишь для того чтобы не сделать проверку и даже закрываем глаза, что иногда приходится возвращаться назад и выполнять другую ветвь
Feb 5 09:56
Здравствуйте! Помогите мне пожалуйста понять работу предсказателя переходов)

Я очень много чего посмотрел и почитал и уже было много вопросов и на enSO и на ruSO. Потому не стал создавать ещё один вопрос

Так вот, (возможно сейчас я не совсем правильно изложу свой вопрс, но в ходе обсуждения точно смогу показать что именно я не понимаю) я не могу понять как именно помогает работа этого предсказателя
 

 Electrical Engineering

A place to talk with friends from the EE community about vacuu...
Feb 10 21:08
@NickAlexeev Sorry I couldn't open the link, it loads infinitely. I will in a few days again. But thanks anyway, I believe there are interesting)
Feb 10 21:05
@bwDraco Good article! Thanks!
Feb 6 17:29
@NickAlexeev Yeah, good point
Feb 6 17:25
May be someone also will need these books :)
Feb 6 17:20
@NickAlexeev Thanks for exact link! I will try to read it)
Feb 6 16:48
I couldn't find the book with exactly the same name as you suggested
Feb 6 16:47
Feb 6 16:41
Wow! That is interesting. Didn't hear that there are several branch predictors with different stuff. Thanks!

I heard that some processors have a massive stuff to predict on the Decode stage which saves them 1 clock each time so they got a huge performance boost
Feb 6 16:35
I'm programmer on JS but I learned in university C/C++ and computer sciences so I have same basic understanding of how does things works under the hood
Feb 6 16:34
@NickAlexeev No one, I just read it by myself form the internet lectures, articles and SO answers. Sometimes I have to do some performance measurements so I have to take in account sometimes the branch predictor issue. And one day I was wondering how does really works under the hood so I started deep in dive as much as my little brain can understand on simple examples :)
Feb 6 16:26
So that means that in simple pipeline the most parallelled stages are Fetch, Decode and Execute but Memory and Writeback can do nothing. Is it correct?
Feb 6 16:24
@NickAlexeev When I said "After some time" I ment that when the actual values will come
Feb 6 16:21
I just noticed this: @Lundin "Branch prediction is more about pre-loading instructions into instruction cache memory" So it seems that I'm on right way:)
Feb 6 16:17
So if I'm correct the instructions don't necessary have actual values they are just future commands which will be executed. And the meaning of branch predictor is to PRELOAD the correct set of instructions

Am I right?
Feb 6 16:14
@NickAlexeev @Lundin Thank you very much! So as I understand the `instructions` is not the direct command as I write in programming language

I understand it in that way:

Let's say I wrote something like this in code:

```
c = a + b;
c = c * c;
```

So the instructions are just the things which WILL happen and they are like this:

1. We will need A
2. We will need B
3. When we get A and B then we will need A + B
4. We will need store it in C
5. We will need multiply C by C
6. We will need store it in C
Feb 5 23:44
It looks like there are a lot of unnecessary hash tables, prediction tables and other stuff just for not calculating correct branch
Feb 5 23:43
@NickAlexeev I understands how it works. I didn't understand why all this stuff is faster than checking branch at need time? If I can do 100 instructions of one of the possible branches why I can't just do simple check which branch is need for me?
Feb 5 21:07
Please give me right chat link to ask my question if I'm in wrong place :)

My question is: How does branch prediction optimize the working process? I already read this question: stackoverflow.com/questions/…

And I understand the concept BUT I didn't understand the realization

So to me, at this moment, it looks like the CPU trying to run my program parts in parallel as much as it is possible EVEN IF I DIDN'T WRIGHT anything for parallel execution. And when it sees the branch (in simple way) it executes the first branch always but mark it as speculative and when CPU really executes the con
 
Sep 19, 2024 12:56
@Grundy Ладно, ты мне сильно помог, спасибо большое! Пойду разбираться :)
Sep 19, 2024 12:53
@Grundy А рзаве он перезапускает webpack с изменённой конфигурацией? Всмысле он когда будет перезапускать, то он заново запустить файл конфигурации чтобы заново отработал скрипт по генерации entry?
Sep 19, 2024 12:50
@Grundy Я думал об этом, просто webpack же один раз читает конфиг насколько я знаю, а значит нужно перезапускать его после изменения файловой системы, что, конечно, в разы удобнее чем ручное изменение, но всё же будет раздражать
Sep 19, 2024 12:49
@Grundy О, спасибо за ссылку, щас гляну
Sep 19, 2024 12:38
Не нужно использовать webpack для этого или ты имеешь ввиду, вообще этим не заниматься?)