Форум программистов, компьютерный форум, киберфорум
K_ILYA_V
Войти
Регистрация
Восстановить пароль
Оценить эту запись

виртуальные индексные регистры

Запись от K_ILYA_V размещена 15.03.2020 в 08:53

Недавно я в очередной раз столкнулся с тем что ранее разработанная мной организация хранения данных не позволяет мне создать следующий алгоритм обработки данных с желаемой эффективностью. однако новый тип хранения данных потребовал применить в одном из предыдущих алгоритмов 22 регистра общего назначения для индексации данных. учитывая что их всего 16 создалась тупиковая ситуация выход из которой был найден посредством создания 27 "виртуальных" регистров.
Assembler
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
; основная часть
regsource0  equ 0
regsource1  equ r15d * 1
regsource2  equ r15d * 2
regsource3  equ r14d * 1
regsource4  equ r15d * 4
regsource5  equ r13d * 1
regsource6  equ r14d * 2
regsource7  equ r12d * 1
regsource8  equ r15d * 8
regsource9  equ r11d * 1
regsource10 equ r13d * 2
regsource11 equ r10d * 1
regsource12 equ r14d * 4
regsource13 equ r9d  * 1
regsource14 equ r12d * 2
regsource15 equ r8d  * 1
 
; дополнительная часть
regsource16 equ rdi  * 1
regsource17 equ rbp  * 1
regsource18 equ r11d * 2
regsource19 equ rsi  * 1
regsource20 equ r13d * 4
regsource21 equ rdx  * 1
regsource22 equ r10d * 2
regsource23 equ rcx  * 1
regsource24 equ r14d * 8
regsource25 equ rbx  * 1
regsource26 equ r9d  * 2
этот код позволяет мне индексировать 27 потоков данных изменяя значение лишь базисного регистра eax который одновременно является счетчиком цикла
Assembler
1
2
3
irp i,<0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15>
   vmovaps ymm&i,[eax + regsource&i]
endm
применение смещения в данном случае крайне нежелательно так как любое смещение больше 60h удлиняет команду со стандартных 8 байт до 11, что не позволяет декодировать ее за один такт. учитывая что загрузка дынных наиболее узкое место любого алгоритма любая оптимизация в данном месте только плюс.

зачем мне 27 потоков данных? пока не очень зачем но алгоритмы с 12 потоками уже были.
Размещено в Без категории
Просмотров 148 Комментарии 0
Всего комментариев 0
Комментарии
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2020, vBulletin Solutions, Inc.