реклама на сайте
подробности

 
 
> О производительности memcpy, Навеяно темой "jpeg на at91sam9g20"
aaarrr
сообщение Aug 22 2010, 04:30
Сообщение #1


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



Цитата(AlexandrY @ Aug 22 2010, 01:41) *
Надо будет проверить влияние этого на производительность.

Проверил интереса для. Должен сказать, что результаты вышли довольно любопытные, поэтому решил изложить их здесь.

В ходе эксперимента измерялась скорость копирования 256 блоков по одному мегабайту с различными смещениями источника и приемника данных. В качестве тестовой платформы использовался процессор EP9312 (ARM920T, FCLK = 200MHz, BCLK = 100MHz).
Первое число в квадратных скобках - смещение приемника, второе - источника, скорость приводится в мегабайтах в секунду:
Код
copy[0][0]: 60.674
copy[1][0]: 45.506
copy[2][0]: 45.506
copy[3][0]: 45.506

copy[0][1]: 46.397
copy[1][1]: 55.246
copy[2][1]: 45.506
copy[3][1]: 45.506

copy[0][2]: 46.397
copy[1][2]: 46.397
copy[2][2]: 55.245
copy[3][2]: 45.506

copy[0][3]: 46.397
copy[1][3]: 46.397
copy[2][3]: 46.397
copy[3][3]: 55.245

Примечательны два обстоятельства:
1. Относительно небольшое против ожидаемого снижение скорости при работе с неодинаковыми смещениями у источника и приемника
2. Заметное падение скорости в условиях, казалось бы близких к идеальным (n, n; при n > 0).

Объяснение первому эффекту находится достаточно просто: 60 МБайт/с - это ограничение, накладываемое производительностью контроллера памяти. И если снизить частоту ядра, оставив частоту шины на том же уровне (FCLK = BCLK = 100MHz), то разница в результатах получается более значительной:
Код
copy[0][0]: 60.672
copy[1][0]: 32.233
copy[2][0]: 32.233
copy[3][0]: 32.233

copy[0][1]: 32.233
copy[1][1]: 53.933
copy[2][1]: 32.233
copy[3][1]: 32.233
...


Второй эффект куда любопытнее. Доподлинно установить его происхождение не удалось. Можно только определенно сказать, что он не связан напрямую с работой кэша и буфера записи. Наиболее логичным представляется предположение, что смещение данных на слово ломает где-то burst-передачи, создавая тем самым некоторый оверхед. Скорее всего это особенность данного конкретного процессора и его контроллера памяти.

Зависимость скорости копирования от смещения данных, число в квадратных скобках - смещение в 32-битных словах:
Код
copy[0w]: 60.674102
copy[1w]: 55.245381
copy[2w]: 55.226639
copy[3w]: 52.582269
copy[4w]: 60.672306
copy[5w]: 55.246603
copy[6w]: 55.211088
copy[7w]: 52.584118
copy[8w]: 60.674150
...


И, наконец, последняя табличка. Она показывает скорость копирования при расположении источника и приемника данных в разных банках SDRAM.
Код
copy[0w]: 91.010796
copy[1w]: 79.629958
copy[2w]: 79.629988
copy[3w]: 73.539810
copy[4w]: 91.006777
copy[5w]: 79.630088
copy[6w]: 79.630112
copy[7w]: 73.539468
copy[8w]: 91.011220
...



Если резюмировать, то для эффективного копирования надо:
1. Выравнивать данные, причем иногда бывает мало и границы слова. Логичным представляется выравнивание по границе строки кэша.
2. По возможности располагать источник и приемник в разных банках SDRAM. Это позволит контроллеру памяти дольше держать банки открытыми (т.е. сэкономить на precharge).
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
igorsk
сообщение Aug 22 2010, 18:47
Сообщение #2


Частый гость
**

Группа: Участник
Сообщений: 84
Регистрация: 22-03-10
Пользователь №: 56 131



Из айфона. ARMv6:
CODE
_memcpy
CMP R2, #0
CMPNE R0, R1
BXEQ LR
STMFD SP!, {R0,R4,R5,R7,LR}
ADD R7, SP, #0xC
SUBCS R3, R0, R1
SUBCC R3, R1, R0
CMP R3, R2
BCC loc_319A9FF0
loc_319A9EA8
MOV R12, R0,LSL#30
CMP R12, R1,LSL#30
BNE loc_319AA0D0
CMP R2, #0x40
BLT loc_319A9FC4
TST R0, #0xF
BNE loc_319A9F44
TST R0, #0x10
BNE loc_319A9F78
loc_319A9ECC
STMFD SP!, {R6,R8,R10,R11}
SUB R2, R2, #0x40
loc_319A9ED4
LDMIA R1!, {R3-R6,R8,R10-R12}
PLD [R1,#0x20]
STMIA R0!, {R3-R6,R8,R10-R12}
LDMIA R1!, {R3-R6,R8,R10-R12}
SUBS R2, R2, #0x40
PLD [R1,#0x20]
STMIA R0!, {R3-R6,R8,R10-R12}
BGE loc_319A9ED4
LDMFD SP!, {R6,R8,R10,R11}
ADDS R2, R2, #0x40
BEQ locret_319AA1AC
loc_319A9F00
CMP R2, #0x10
LDMGEIA R1!, {R3-R5,R12}
STMGEIA R0!, {R3-R5,R12}
SUBGES R2, R2, #0x10
BGT loc_319A9F00
BEQ locret_319AA1AC
loc_319A9F18
MOV R2, R2,LSL#28
MSR CPSR_f, R2
LDMMIIA R1!, {R2,R3}
LDREQ R4, [R1],#4
LDRCSH R5, [R1],#2
LDRVSB R12, [R1],#1
STMMIIA R0!, {R2,R3}
STREQ R4, [R0],#4
STRCSH R5, [R0],#2
STRVSB R12, [R0],#1
B locret_319AA1AC
; ---------------------------------------------------------------------------
loc_319A9F44
MOV R12, R0,LSL#28
RSB R12, R12, #0
MSR CPSR_f, R12
LDRVSB R3, [R1],#1
LDRCSH R4, [R1],#2
LDREQ R5, [R1],#4
STRVSB R3, [R0],#1
STRCSH R4, [R0],#2
STREQ R5, [R0],#4
LDMMIIA R1!, {R3,R4}
STMMIIA R0!, {R3,R4}
SUBS R2, R2, R12,LSR#28
BEQ locret_319AA1AC
loc_319A9F78
TST R0, #0x10
LDMNEIA R1!, {R3-R5,R12}
STMNEIA R0!, {R3-R5,R12}
SUBNE R2, R2, #0x10
CMP R2, #0x40
BGE loc_319A9ECC
B loc_319A9F00
; ---------------------------------------------------------------------------
loc_319A9F94
SUBS R2, R2, #2
LDRB R3, [R1],#1
LDRPLB R4, [R1],#1
STRB R3, [R0],#1
STRPLB R4, [R0],#1
BHI loc_319A9F94
B locret_319AA1AC
; ---------------------------------------------------------------------------
loc_319A9FB0
LDRB R3, [R1],#1
SUBS R2, R2, #1
STRB R3, [R0],#1
BNE loc_319A9FB0
B locret_319AA1AC
; ---------------------------------------------------------------------------
loc_319A9FC4
CMP R2, #4
BLT loc_319A9F94
TST R1, #3
loc_319A9FD0
LDRNEB R3, [R1],#1
STRNEB R3, [R0],#1
SUBNE R2, R2, #1
TSTNE R1, #3
BNE loc_319A9FD0
CMP R2, #0x10
BGE loc_319A9F00
BLT loc_319A9F18
loc_319A9FF0
CMP R0, R1
BHI loc_319AA00C
CMP R3, #0x40
BGE loc_319A9EA8
CMP R3, #2
BGE loc_319A9F94
B loc_319A9FB0
; ---------------------------------------------------------------------------
loc_319AA00C
ADD R0, R0, R2
ADD R1, R1, R2
CMP R2, #0x40
CMPGT R3, #0x40
BLT loc_319AA070
MOV R3, R0,LSL#30
CMP R3, R1,LSL#30
BNE loc_319AA070
TST R0, #0xF
BNE loc_319AA084
TST R0, #0x10
BNE loc_319AA0B4
loc_319AA03C
STMFD SP!, {R6,R8,R10,R11}
SUB R2, R2, #0x40
loc_319AA044
LDMDB R1!, {R3-R6,R8,R10-R12}
PLD [R1,#-0x20]
STMDB R0!, {R3-R6,R8,R10-R12}
LDMDB R1!, {R3-R6,R8,R10-R12}
SUBS R2, R2, #0x40
PLD [R1,#-0x20]
STMDB R0!, {R3-R6,R8,R10-R12}
BGE loc_319AA044
LDMFD SP!, {R6,R8,R10,R11}
ADDS R2, R2, #0x40
BEQ locret_319AA1AC
loc_319AA070
LDRB R3, [R1,#-1]!
STRB R3, [R0,#-1]!
SUBS R2, R2, #1
BNE loc_319AA070
B locret_319AA1AC
; ---------------------------------------------------------------------------
loc_319AA084
MOV R12, R0,LSL#28
MSR CPSR_f, R12
LDRVSB R3, [R1,#-1]!
LDRCSH R4, [R1,#-2]!
LDREQ R5, [R1,#-4]!
STRVSB R3, [R0,#-1]!
STRCSH R4, [R0,#-2]!
STREQ R5, [R0,#-4]!
LDMMIDB R1!, {R3,R4}
STMMIDB R0!, {R3,R4}
SUBS R2, R2, R12,LSR#28
BEQ locret_319AA1AC
loc_319AA0B4
TST R0, #0x10
LDMNEDB R1!, {R3-R5,R12}
STMNEDB R0!, {R3-R5,R12}
SUBNE R2, R2, #0x10
CMP R2, #0x40
BGE loc_319AA03C
B loc_319AA070
; ---------------------------------------------------------------------------
loc_319AA0D0
CMP R2, #8
BLT loc_319A9F94
TST R1, #3
loc_319AA0DC
LDRNEB R3, [R1],#1
STRNEB R3, [R0],#1
SUBNE R2, R2, #1
TSTNE R1, #3
BNE loc_319AA0DC
AND R3, R0, #3
CMP R3, #2
BLT loc_319AA104
BEQ loc_319AA138
BGT loc_319AA16C
loc_319AA104
MOV R12, R2,LSR#2
SUB R0, R0, #1
LDRB R4, [R0]
loc_319AA110
LDR R3, [R1],#4
ORR R4, R4, R3,LSL#8
STR R4, [R0],#4
MOV R4, R3,LSR#24
SUBS R12, R12, #1
BNE loc_319AA110
STRB R4, [R0],#1
ANDS R2, R2, #3
BEQ locret_319AA1AC
B loc_319A9F94
; ---------------------------------------------------------------------------
loc_319AA138
MOV R12, R2,LSR#2
SUB R0, R0, #2
LDRH R4, [R0]

loc_319AA144
LDR R3, [R1],#4
ORR R4, R4, R3,LSL#16
STR R4, [R0],#4
MOV R4, R3,LSR#16
SUBS R12, R12, #1
BNE loc_319AA144
STRH R4, [R0],#2
ANDS R2, R2, #3
BEQ locret_319AA1AC
B loc_319A9F94
; ---------------------------------------------------------------------------
loc_319AA16C
MOV R12, R2,LSR#2
SUB R0, R0, #3
LDR R4, [R0]
BIC R4, R4, #0xFF000000

loc_319AA17C
LDR R3, [R1],#4
ORR R4, R4, R3,LSL#24
STR R4, [R0],#4
MOV R4, R3,LSR#8
SUBS R12, R12, #1
BNE loc_319AA17C
STRH R4, [R0],#2
MOV R4, R4,LSR#16
STRB R4, [R0],#1
ANDS R2, R2, #3
BEQ locret_319AA1AC
B loc_319A9F94
; ---------------------------------------------------------------------------
locret_319AA1AC
LDMFD SP!, {R0,R4,R5,R7,PC}

ARMv7-A (Thumb-2/NEON):
CODE
_memmove
SUBS R3, R0, R1
IT EQ
BXEQ LR
CMP R3, R2
BCS.W loc_345C5EBC
MOV R12, R0
ADD R1, R2
ADD R12, R2
SUBS R2, #8
BLT loc_345C5DC0
TST.W R12, #7
BEQ loc_345C5CF2
loc_345C5CDC
LDRB.W R3, [R1,#-1]!
SUB.W R2, R2, #1
STRB.W R3, [R12,#-1]!
TST.W R12, #7
BNE loc_345C5CDC
CMP R2, #0
BLT loc_345C5DC0
loc_345C5CF2
ANDS.W R3, R1, #3; switch 4 cases
BIC.W R1, R1, #3
TBH.W [PC,R3,LSL#1]; switch jump
; ---------------------------------------------------------------------------
jpt_345C5CFA DCW 4 ; jump table for switch statement
DCW 0x7C
DCW 0x9D
DCW 0xBE
; ---------------------------------------------------------------------------
loc_345C5D06
SUBS R2, #0x38; jumptable 345C5CFA case 0
BLT loc_345C5DA8
TST.W R12, #0x38
BEQ loc_345C5D2E
loc_345C5D10
SUB.W R1, R1, #8
VLD1.32 {D0}, [R1]
SUB.W R12, R12, #8
SUB.W R2, R2, #8
TST.W R12, #0x38
VST1.64 {D0}, [R12@64]
BNE loc_345C5D10
CMP R2, #0
BLT loc_345C5DA8
loc_345C5D2E
SUB.W R3, R2, #0x3C0
CMP.W R3, #0x7C00
BCC loc_345C5DD4
SUB.W R1, R1, #0x20
SUB.W R12, R12, #0x20
MOV R3, 0xFFFFFFE0
TST.W R1, #0x1F
BEQ loc_345C5D76
VLD1.32 {D4-D7}, [R1],R3
VLD1.32 {D0-D3}, [R1],R3
SUBS R2, #0x40
VST1.64 {D4-D7}, [R12@256],R3
BLT loc_345C5D9C
NOP
NOP
NOP
loc_345C5D60
VLD1.32 {D4-D7}, [R1],R3
VST1.64 {D0-D3}, [R12@256],R3
VLD1.32 {D0-D3}, [R1],R3
SUBS R2, #0x40
VST1.64 {D4-D7}, [R12@256],R3
BGE loc_345C5D60
B loc_345C5D9C
; ---------------------------------------------------------------------------
loc_345C5D76
VLD1.64 {D4-D7}, [R1@256],R3
VLD1.64 {D0-D3}, [R1@256],R3
SUBS R2, #0x40
VST1.64 {D4-D7}, [R12@256],R3
BLT loc_345C5D9C
NOP
loc_345C5D88
VLD1.64 {D4-D7}, [R1@256],R3
VST1.64 {D0-D3}, [R12@256],R3
VLD1.64 {D0-D3}, [R1@256],R3
SUBS R2, #0x40
VST1.64 {D4-D7}, [R12@256],R3
BGE loc_345C5D88
loc_345C5D9C
VST1.64 {D0-D3}, [R12@256],R3
ADD.W R1, R1, #0x20
ADD.W R12, R12, #0x20
loc_345C5DA8
ADDS R2, #0x38
BLT loc_345C5DC0
loc_345C5DAC
SUB.W R1, R1, #8
VLD1.32 {D0}, [R1]
SUB.W R12, R12, #8
SUBS R2, #8
VST1.64 {D0}, [R12@64]
BGE loc_345C5DAC
loc_345C5DC0
ADDS R2, #8
IT EQ
BXEQ LR
loc_345C5DC6
LDRB.W R3, [R1,#-1]!
SUBS R2, #1
STRB.W R3, [R12,#-1]!
BNE loc_345C5DC6
BX LR
; ---------------------------------------------------------------------------
loc_345C5DD4
PUSH.W {R4-R6,R8,R10,R11}
loc_345C5DD8
LDMDB.W R1!, {R3-R6,R8-R11}
SUBS R2, #0x40
STMDB.W R12!, {R3-R6,R8-R11}
LDMDB.W R1!, {R3-R6,R8-R11}
PLD.W [R1,#-0x40]
STMDB.W R12!, {R3-R6,R8-R11}
BGE loc_345C5DD8
POP.W {R4-R6,R8,R10,R11}
B loc_345C5DA8
; ---------------------------------------------------------------------------
loc_345C5DF6
SUBS R2, #8 ; jumptable 345C5CFA case 1
BLT loc_345C5E2E
SUB.W R1, R1, #8
SUB.W R12, R12, #8
MOV R3, 0xFFFFFFF8
VLD1.32 {D2-D3}, [R1],R3
SUBS R2, #8
BLT loc_345C5E22
loc_345C5E0E
VEXT.8 D0, D2, D3, #1
VMOV D3, D2
VLD1.32 {D2}, [R1],R3
SUBS R2, #8
VST1.64 {D0}, [R12@64],R3
BGE loc_345C5E0E
loc_345C5E22
VEXT.8 D0, D2, D3, #1
ADD.W R1, R1, #8
VST1.64 {D0}, [R12@64]
loc_345C5E2E
ADD.W R2, R2, #8
ADD.W R1, R1, #1
B loc_345C5DC0
; ---------------------------------------------------------------------------
loc_345C5E38
SUBS R2, #8 ; jumptable 345C5CFA case 2
BLT loc_345C5E70
SUB.W R1, R1, #8
SUB.W R12, R12, #8
MOV R3, 0xFFFFFFF8
VLD1.32 {D2-D3}, [R1],R3
SUBS R2, #8
BLT loc_345C5E64
loc_345C5E50
VEXT.8 D0, D2, D3, #2
VMOV D3, D2
VLD1.32 {D2}, [R1],R3
SUBS R2, #8
VST1.64 {D0}, [R12@64],R3
BGE loc_345C5E50
loc_345C5E64
VEXT.8 D0, D2, D3, #2
ADD.W R1, R1, #8
VST1.64 {D0}, [R12@64]
loc_345C5E70
ADD.W R2, R2, #8
ADD.W R1, R1, #2
B loc_345C5DC0
; ---------------------------------------------------------------------------
loc_345C5E7A
SUBS R2, #8 ; jumptable 345C5CFA case 3
BLT loc_345C5EB2
SUB.W R1, R1, #8
SUB.W R12, R12, #8
MOV R3, 0xFFFFFFF8
VLD1.32 {D2-D3}, [R1],R3
SUBS R2, #8
BLT loc_345C5EA6
loc_345C5E92
VEXT.8 D0, D2, D3, #3
VMOV D3, D2
VLD1.32 {D2}, [R1],R3
SUBS R2, #8
VST1.64 {D0}, [R12@64],R3
BGE loc_345C5E92
loc_345C5EA6
VEXT.8 D0, D2, D3, #3
ADD.W R1, R1, #8
VST1.64 {D0}, [R12@64]
loc_345C5EB2
ADD.W R2, R2, #8
ADD.W R1, R1, #3
B loc_345C5DC0
; ---------------------------------------------------------------------------
loc_345C5EBC
MOV R12, R0
SUBS R2, #8
BLT loc_345C5F88
TST.W R12, #7
BEQ loc_345C5EDE
loc_345C5EC8
LDRB.W R3, [R1],#1
SUB.W R2, R2, #1
STRB.W R3, [R12],#1
TST.W R12, #7
BNE loc_345C5EC8
CMP R2, #0
BLT loc_345C5F88
loc_345C5EDE
ANDS.W R3, R1, #3; switch 4 cases
BIC.W R1, R1, #3
TBH.W [PC,R3,LSL#1]; switch jump
; ---------------------------------------------------------------------------
jpt_345C5EE6 DCW 4 ; jump table for switch statement
DCW 0x6A
DCW 0x85
DCW 0xA0
; ---------------------------------------------------------------------------
loc_345C5EF2
SUBS R2, #0x38; jumptable 345C5EE6 case 0
BLT loc_345C5F78
TST.W R12, #0x38
BEQ loc_345C5F12
loc_345C5EFC
VLD1.32 {D0}, [R1]!
SUB.W R2, R2, #8
VST1.64 {D0}, [R12@64]!
TST.W R12, #0x38
BNE loc_345C5EFC
CMP R2, #0
BLT loc_345C5F78
loc_345C5F12
SUB.W R3, R2, #0x3C0
CMP.W R3, #0x7C00
BCC loc_345C5F9C
TST.W R1, #0x1F
BEQ loc_345C5F4E
VLD1.32 {D4-D7}, [R1]!
VLD1.32 {D0-D3}, [R1]!
SUBS R2, #0x40
VST1.64 {D4-D7}, [R12@256]!
BLT loc_345C5F74
NOP
NOP
NOP
loc_345C5F38
VLD1.32 {D4-D7}, [R1]!
VST1.64 {D0-D3}, [R12@256]!
VLD1.32 {D0-D3}, [R1]!
SUBS R2, #0x40
VST1.64 {D4-D7}, [R12@256]!
BGE loc_345C5F38
B loc_345C5F74
; ---------------------------------------------------------------------------
loc_345C5F4E
VLD1.64 {D4-D7}, [R1@256]!
VLD1.64 {D0-D3}, [R1@256]!
SUBS R2, #0x40
VST1.64 {D4-D7}, [R12@256]!
BLT loc_345C5F74
NOP
loc_345C5F60
VLD1.64 {D4-D7}, [R1@256]!
VST1.64 {D0-D3}, [R12@256]!
VLD1.64 {D0-D3}, [R1@256]!
SUBS R2, #0x40
VST1.64 {D4-D7}, [R12@256]!
BGE loc_345C5F60
loc_345C5F74
VST1.64 {D0-D3}, [R12@256]!
loc_345C5F78
ADDS R2, #0x38
BLT loc_345C5F88
loc_345C5F7C
VLD1.32 {D0}, [R1]!
SUBS R2, #8
VST1.64 {D0}, [R12@64]!
BGE loc_345C5F7C
loc_345C5F88
ADDS R2, #8
IT EQ
BXEQ LR
loc_345C5F8E
LDRB.W R3, [R1],#1
STRB.W R3, [R12],#1
SUBS R2, #1
BNE loc_345C5F8E
BX LR
; ---------------------------------------------------------------------------
loc_345C5F9C
PUSH.W {R4-R6,R8,R10,R11}
loc_345C5FA0
LDMIA.W R1!, {R3-R6,R8-R11}
SUBS R2, #0x40
STMIA.W R12!, {R3-R6,R8-R11}
LDMIA.W R1!, {R3-R6,R8-R11}
PLD.W [R1,#0x40]
STMIA.W R12!, {R3-R6,R8-R11}
BGE loc_345C5FA0
POP.W {R4-R6,R8,R10,R11}
B loc_345C5F78
; ---------------------------------------------------------------------------
loc_345C5FBE
SUBS R2, #8 ; jumptable 345C5EE6 case 1
BLT loc_345C5FEA
VLD1.32 {D2-D3}, [R1]!
SUBS R2, #8
BLT loc_345C5FDE
loc_345C5FCA
VEXT.8 D0, D2, D3, #1
VMOV D2, D3
VLD1.32 {D3}, [R1]!
SUBS R2, #8
VST1.64 {D0}, [R12@64]!
BGE loc_345C5FCA
loc_345C5FDE
VEXT.8 D0, D2, D3, #1
SUB.W R1, R1, #8
VST1.64 {D0}, [R12@64]!
loc_345C5FEA
ADD.W R1, R1, #1
ADD.W R2, R2, #8
B loc_345C5F88
; ---------------------------------------------------------------------------
loc_345C5FF4
SUBS R2, #8
BLT loc_345C6020
VLD1.32 {D2-D3}, [R1]!
SUBS R2, #8
BLT loc_345C6014
loc_345C6000
VEXT.8 D0, D2, D3, #2
VMOV D2, D3
VLD1.32 {D3}, [R1]!
SUBS R2, #8
VST1.64 {D0}, [R12@64]!
BGE loc_345C6000
loc_345C6014
VEXT.8 D0, D2, D3, #2
SUB.W R1, R1, #8
VST1.64 {D0}, [R12@64]!
loc_345C6020
ADD.W R1, R1, #2
ADD.W R2, R2, #8
B loc_345C5F88
; ---------------------------------------------------------------------------
loc_345C602A
SUBS R2, #8
BLT loc_345C6056
VLD1.32 {D2-D3}, [R1]!
SUBS R2, #8
BLT loc_345C604A
loc_345C6036
VEXT.8 D0, D2, D3, #3
VMOV D2, D3
VLD1.32 {D3}, [R1]!
SUBS R2, #8
VST1.64 {D0}, [R12@64]!
BGE loc_345C6036
loc_345C604A
VEXT.8 D0, D2, D3, #3
SUB.W R1, R1, #8
VST1.64 {D0}, [R12@64]!
loc_345C6056
ADD.W R1, R1, #3
ADD.W R2, R2, #8
B loc_345C5F88


Сообщение отредактировал igorsk - Aug 22 2010, 18:48
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- aaarrr   О производительности memcpy   Aug 22 2010, 04:30
- - AlexandrY   Тут важнее каким компилером это делалось и какая ш...   Aug 22 2010, 11:58
|- - VslavX   Цитата(AlexandrY @ Aug 22 2010, 14:58) Ту...   Aug 22 2010, 12:39
|- - AlexandrY   Цитата(VslavX @ Aug 22 2010, 15:39) Я бы ...   Aug 22 2010, 13:30
|- - zltigo   QUOTE (AlexandrY @ Aug 22 2010, 15:30) Ни...   Aug 22 2010, 13:48
|- - VslavX   Цитата(AlexandrY @ Aug 22 2010, 16:30) По...   Aug 22 2010, 14:02
|- - zltigo   QUOTE (VslavX @ Aug 22 2010, 16:02) IAR F...   Aug 22 2010, 14:13
|- - VslavX   Цитата(zltigo @ Aug 22 2010, 17:13) Э,то ...   Aug 22 2010, 14:53
- - aaarrr   Цитата(VslavX @ Aug 22 2010, 16:39) aaarr...   Aug 22 2010, 15:05
|- - AlexandrY   Цитата(aaarrr @ Aug 22 2010, 18:05) Пожал...   Aug 22 2010, 15:18
|- - aaarrr   Цитата(AlexandrY @ Aug 22 2010, 19:18) По...   Aug 22 2010, 15:47
- - sergeeff   Самый шустрый memcpy для всех случаев выравненных/...   Aug 22 2010, 19:08
|- - aaarrr   RE: О производительности memcpy   Aug 22 2010, 20:32
- - sergeeff   ЦитатаНо данные все равно лучше выравнивать. Это ...   Aug 23 2010, 06:16
|- - MrYuran   Цитата(sergeeff @ Aug 23 2010, 10:16) Это...   Aug 23 2010, 06:25
|- - AlexandrY   Цитата(sergeeff @ Aug 23 2010, 09:16) Это...   Aug 23 2010, 06:45
- - sergeeff   х86 всю свою "жизнь" аппаратно это тоже ...   Aug 23 2010, 07:13
- - AlexandrY   Цитата(sergeeff @ Aug 23 2010, 10:13) х86...   Aug 23 2010, 07:50
- - MrYuran   Цитата(AlexandrY @ Aug 23 2010, 11:50) Ес...   Aug 23 2010, 08:07


Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 25th June 2025 - 12:01
Рейтинг@Mail.ru


Страница сгенерированна за 0.01442 секунд с 7
ELECTRONIX ©2004-2016