Remember the linear movement equation?
∆s = V*∆t
In this case, the movement in a frame is ∆s and the time between frames named "delta" (a really low value) is ∆t.
Fixing your movement equation should be:
movement = direction.normalized() * speed * delta
You normalize the directional vector because you want it to be always one unit long.
This way, you should have a "speed" displacement in "direction" when time sums 1.